Closed
Description
So JMAPCalendars.setcalendarevents_recurrence fails on 32-bit machines. I thought I had all of these sorted but then I updated Cassandane and I guess this one was new. A full build log is at https://kojipkgs.fedoraproject.org//work/tasks/2341/20212341/build.log but it's just one test so I'll include all of the relevant output.
1) test_setcalendarevents_recurrence(Cassandane::Cyrus::JMAPCalendars)
Structures begin differing at:
$a->{recurrenceRule}{byDay}[0]{nthOfPeriod} = '-1'
$b->{recurrenceRule}{byDay}[0]{nthOfPeriod} = '-2'
at Cassandane/Cyrus/JMAPCalendars.pm line 604.
Cassandane::Cyrus::JMAPCalendars::assert_normalized_event_equals(Cassandane::Cyrus::JMAPCalendars=HASH(0x5a38d6d8), HASH(0x5b3b0bac), HASH(0x5a460a40)) called at Cassandane/Cyrus/JMAPCalendars.pm line 1483
Cassandane::Cyrus::JMAPCalendars::test_setcalendarevents_recurrence(Cassandane::Cyrus::JMAPCalendars=HASH(0x5a38d6d8)) called at /usr/share/perl5/vendor_perl/Test/Unit/TestCase.pm line 75
[...framework calls elided...]
Annotations:
=====> Cyrus::TestCase[567] ---------- BEGIN test_setcalendarevents_recurrence ----------
=====> Cyrus::TestCase[160] Magic attribute JMAP wants jmap = 1
=====> Cyrus::TestCase[160] Magic attribute JMAP wants adminstore = 1
=====> Cyrus::TestCase[160] Magic attribute JMAP wants services = ARRAY(0x5b39a608)
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config caldav_realm = Cassandane
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config conversations = yes
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config httpmodules = carddav caldav jmap
=====> Cyrus::TestCase[169] Magic attribute JMAP sets config httpallowcompress = no
=====> Instance[1004] start main instance for test test_setcalendarevents_recurrence: basedir /builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/sbin
=====> Instance[455] Found binary cyr_buildinfo in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/sbin
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/sbin/cyr_buildinfo" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44/conf/imapd.conf"
=====> Instance[455] Found binary ctl_cyrusdb in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/sbin
=====> Instance[455] Found binary imapd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/libexec/cyrus-imapd
=====> Instance[455] Found binary httpd in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/libexec/cyrus-imapd
=====> Instance[916] started saslauthd for /builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44 as 19451
=====> Instance[1759] opening socket /builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44/run/mux
=====> Instance[943] started notifyd for /builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44 as 19452
=====> Instance[455] Found binary master in /builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/libexec/cyrus-imapd
=====> Instance[1505] Running: "/builddir/build/BUILDROOT/cyrus-imapd-3.0.2-1.fc27.i386/usr/libexec/cyrus-imapd/master" "-C" "/builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44/conf/imapd.conf" "-l" "255" "-p" "/builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44/run/master.pid" "-d" "-M" "/builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44/conf/cyrus.conf"
=====> Instance[868] _start_master: waiting for PID file
=====> Instance[871] _start_master: PID file present and correct
=====> Instance[883] _start_master: PID waiting for services
=====> Daemon[358] is_listening: service imap is listening on 127.0.0.1:9106
=====> Util::Wait[77] Waited 0.057372 sec for 127.0.0.1:9106 to be in LISTEN state
=====> Daemon[358] is_listening: service http is listening on 127.0.0.1:9107
=====> Instance[894] _start_master: all services listening
=====> Instance[970] create user cassandane
=====> Util::Socket[63] create_client_socket INET host=127.0.0.1 port=9106
=====> Instance[1774] authdaemon connection: admin testpw imap
=====> Instance[1035] started main instance for test test_setcalendarevents_recurrence: cyrus version 3.0.2-1.fc27 Fedora
******** REDIRECT 301 to http://127.0.0.1:9107/dav/addressbooks
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPFIND http://127.0.0.1:9107/.well-known/carddav HTTP/1.1
<D:propfind xmlns:C='urn:ietf:params:xml:ns:carddav' xmlns:CY='http://cyrusimap.org/ns/' xmlns:D='DAV:'><D:prop><D:current-user-principal/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:C="urn:ietf:params:xml:ns:carddav" xmlns:CY="http://cyrusimap.org/ns/" xmlns:D="DAV:">
<D:response>
<D:href>/dav/addressbooks</D:href>
<D:propstat>
<D:prop>
<D:current-user-principal>
<D:href>/dav/principals/user/cassandane/</D:href>
</D:current-user-principal>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPFIND http://127.0.0.1:9107/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:carddav' xmlns:D='DAV:'><D:prop><C:addressbook-home-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:carddav" xmlns:D="DAV:">
<D:response>
<D:href>/dav/principals/user/cassandane</D:href>
<D:propstat>
<D:prop>
<C:addressbook-home-set>
<D:href>/dav/addressbooks/user/cassandane/</D:href>
</C:addressbook-home-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
******** REDIRECT 301 to http://127.0.0.1:9107/dav/calendars
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPFIND http://127.0.0.1:9107/.well-known/caldav HTTP/1.1
<D:propfind xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:D='DAV:' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:A='http://apple.com/ns/ical/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav'><D:prop><D:current-user-principal/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:D="DAV:" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:A="http://apple.com/ns/ical/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>/dav/calendars</D:href>
<D:propstat>
<D:prop>
<D:current-user-principal>
<D:href>/dav/principals/user/cassandane/</D:href>
</D:current-user-principal>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPFIND http://127.0.0.1:9107/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav'><D:prop><C:calendar-home-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>/dav/principals/user/cassandane</D:href>
<D:propstat>
<D:prop>
<C:calendar-home-set>
<D:href>/dav/calendars/user/cassandane/</D:href>
</C:calendar-home-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPFIND http://127.0.0.1:9107/dav/principals/user/cassandane HTTP/1.1
<D:propfind xmlns:D='DAV:' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:A='http://apple.com/ns/ical/' xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav'><D:prop><D:displayname/><C:calendar-user-address-set/></D:prop></D:propfind>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:A="http://apple.com/ns/ical/" xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:response>
<D:href>/dav/principals/user/cassandane</D:href>
<D:propstat>
<D:prop>
<D:displayname>cassandane</D:displayname>
<C:calendar-user-address-set>
<D:href>mailto:cassandane@defdomain</D:href>
</C:calendar-user-address-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
=====> Instance[1774] authdaemon connection: cassandane pass http
<<<<<<<< PROPPATCH http://127.0.0.1:9107/dav/calendars/user/cassandane HTTP/1.1
<D:propertyupdate xmlns:CY='http://cyrusimap.org/ns/' xmlns:C='urn:ietf:params:xml:ns:caldav' xmlns:UF='http://cyrusimap.org/ns/userflag/' xmlns:SF='http://cyrusimap.org/ns/sysflag/' xmlns:D='DAV:' xmlns:A='http://apple.com/ns/ical/'><D:set><D:prop><D:displayname>Test User</D:displayname><C:calendar-user-address-set>mailto:cassandane@example.com</C:calendar-user-address-set></D:prop></D:set></D:propertyupdate>
>>>>>>>> HTTP/1.1 207 Multi-Status
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:CY="http://cyrusimap.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:UF="http://cyrusimap.org/ns/userflag/" xmlns:SF="http://cyrusimap.org/ns/sysflag/" xmlns:D="DAV:" xmlns:A="http://apple.com/ns/ical/">
<D:response>
<D:href>/dav/calendars/user/cassandane/</D:href>
<D:propstat>
<D:prop>
<D:displayname/>
<C:calendar-user-address-set/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
========
=====> Cyrus::TestCase[574] Calling test function
=====> Cyrus::JMAPCalendars[71] Requesting JMAP access token
JMAP $VAR1 = {
'clientName' => 'Net-JMAPTalk',
'clientVersion' => '0.07',
'deviceName' => 'api',
'username' => 'cassandane'
};
$VAR2 = {
'content' => '{"loginId": "014c189d9502250e7fd9876a222b0ec9fc0f7023edd1d5e79f4cf8516e1caedbcd86f5fe745d", "methods": [{"type": "password"}], "prompt": null}',
'headers' => {
'connection' => 'Upgrade',
'content-length' => '142',
'content-type' => 'application/json; charset=utf-8',
'date' => 'Tue, 27 Jun 2017 18:36:21 GMT',
'upgrade' => 'h2c',
'vary' => 'Accept-Encoding'
},
'protocol' => 'HTTP/1.1',
'reason' => 'OK',
'status' => '200',
'success' => 1,
'url' => 'http://127.0.0.1:9107/jmap/auth/'
};
=====> Instance[1774] authdaemon connection: cassandane pass http
JMAP $VAR1 = {
'loginId' => '014c189d9502250e7fd9876a222b0ec9fc0f7023edd1d5e79f4cf8516e1caedbcd86f5fe745d',
'password' => 'pass',
'type' => 'password'
};
$VAR2 = {
'content' => '{"username": "cassandane", "accounts": {"cassandane": {"name": "cassandane", "isPrimary": true, "isReadOnly": false}}, "apiUrl": "/jmap/", "downloadUrl": "/jmap/download/{accountId}/{blobId}/{name}", "uploadUrl": "/jmap/upload/", "accessToken": "014124dca3198081abc299cce7d0802d1f4c6e7d97e36acfe17d6a58d430995ffbaf2f056ae2"}',
'headers' => {
'connection' => 'Upgrade',
'content-length' => '324',
'content-type' => 'application/json; charset=utf-8',
'date' => 'Tue, 27 Jun 2017 18:36:21 GMT',
'upgrade' => 'h2c',
'vary' => 'Accept-Encoding'
},
'protocol' => 'HTTP/1.1',
'reason' => 'Created',
'status' => '201',
'success' => 1,
'url' => 'http://127.0.0.1:9107/jmap/auth/'
};
=====> Cyrus::JMAPCalendars[1063] create event
JMAP $VAR1 = [
[
'setCalendarEvents',
{
'create' => {
'1' => {
'calendarId' => 'Default',
'description' => 'description',
'duration' => 'PT1H',
'freeBusyStatus' => 'busy',
'isAllDay' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'recurrenceRule' => {
'byDay' => [
{
'day' => 'mo',
'nthOfPeriod' => -2
},
{
'day' => 'sa'
}
],
'count' => 1024,
'firstDayOfWeek' => 'su',
'frequency' => 'monthly',
'interval' => 2
},
'start' => '2015-11-07T09:00:00',
'timeZone' => 'Europe/London',
'title' => 'title'
}
}
},
'R1'
]
];
$VAR2 = {
'content' => '[
[
"calendarEventsSet",
{
"accountId": "cassandane",
"oldState": "22",
"created": {
"1": {
"id": "20574d64-bcff-4c3b-b748-fbafaffeb2f5"
}
},
"newState": "24"
},
"R1"
]
]',
'headers' => {
'connection' => 'Upgrade',
'content-length' => '246',
'content-type' => 'application/json; charset=utf-8',
'date' => 'Tue, 27 Jun 2017 18:36:21 GMT',
'upgrade' => 'h2c',
'vary' => 'Accept-Encoding'
},
'protocol' => 'HTTP/1.1',
'reason' => 'OK',
'status' => '200',
'success' => 1,
'url' => 'http://127.0.0.1:9107/jmap/'
};
=====> Cyrus::JMAPCalendars[1068] get calendar event 20574d64-bcff-4c3b-b748-fbafaffeb2f5
JMAP $VAR1 = [
[
'getCalendarEvents',
{
'ids' => [
'20574d64-bcff-4c3b-b748-fbafaffeb2f5'
]
},
'R1'
]
];
$VAR2 = {
'content' => '[
[
"calendarEvents",
{
"state": "24",
"accountId": "cassandane",
"list": [
{
"isAllDay": false,
"uid": "20574d64-bcff-4c3b-b748-fbafaffeb2f5",
"relatedTo": null,
"prodId": "-//CyrusJMAP.org/Cyrus 3.0.2-1.fc27 Fedora//EN",
"created": "2017-06-27T18:36:21Z",
"updated": "2017-06-27T18:36:21Z",
"sequence": 0,
"title": "title",
"description": "description",
"links": null,
"locale": null,
"locations": null,
"start": "2015-11-07T09:00:00",
"timeZone": "Europe/London",
"duration": "PT1H",
"recurrenceRule": {
"frequency": "monthly",
"interval": 2,
"firstDayOfWeek": "su",
"byDay": [
{
"day": "mo",
"nthOfPeriod": -1
},
{
"day": "sa"
}
],
"count": 1024
},
"status": "confirmed",
"freeBusyStatus": "busy",
"privacy": "public",
"replyTo": null,
"participants": null,
"alerts": null,
"localizations": null,
"recurrenceOverrides": null,
"x-href": "/dav/calendars/user/cassandane/Default/20574d64-bcff-4c3b-b748-fbafaffeb2f5.ics",
"calendarId": "Default",
"id": "20574d64-bcff-4c3b-b748-fbafaffeb2f5"
}
],
"notFound": null
},
"R1"
]
]',
'headers' => {
'connection' => 'Upgrade',
'content-length' => '1548',
'content-type' => 'application/json; charset=utf-8',
'date' => 'Tue, 27 Jun 2017 18:36:21 GMT',
'upgrade' => 'h2c',
'vary' => 'Accept-Encoding'
},
'protocol' => 'HTTP/1.1',
'reason' => 'OK',
'status' => '200',
'success' => 1,
'url' => 'http://127.0.0.1:9107/jmap/'
};
=====> Cyrus::TestCase[681] Beginning tear_down
=====> Instance[1242] stop
=====> Instance[1204] _stop_pid: sending signal 15 to 19457
=====> Util::Wait[77] Waited 0.010131 sec for unknown condition
=====> Instance[919] killing saslauthd 19451
=====> Instance[946] killing notifyd 19452
=====> Instance[919] killing saslauthd 19451
=====> Instance[1270] Cleaning up basedir /builddir/build/BUILD/cyrus-imapd-3.0.2/cassandane/work/183510A44
=====> Cyrus::TestCase[726] ---------- END test_setcalendarevents_recurrence ----------
=====> Daemon[387] checking for stray processes on ports: 9106 9107
Test was not successful.