Skip to content

JMAPCalendars.setcalendarevents_recurrence fails on 32-bit machines #2042

Closed
@jasontibbitts

Description

@jasontibbitts

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.

Metadata

Metadata

Assignees

Labels

JMAPaffects the JMAP implementation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions