From 5e4a04e3d67b4ab1a9ed500740204c8c734f13cb Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Thu, 8 Aug 2013 15:10:29 +0100 Subject: [PATCH] PIM testing: test for sync running longer than auto shutdown period This test runs with an artificially low auto shutdown period (set via a modified run() method) and a delayed sync. --- src/dbus/server/pim/testpim.py | 51 +++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/src/dbus/server/pim/testpim.py b/src/dbus/server/pim/testpim.py index 4ee4f06f..d3813b89 100755 --- a/src/dbus/server/pim/testpim.py +++ b/src/dbus/server/pim/testpim.py @@ -317,15 +317,7 @@ class Watchdog(): if self.started == started: self.started = None -class TestContacts(DBusUtil, unittest.TestCase): - """Tests for org._01.pim.contacts API. - -The tests use the system's EDS, which must be >= 3.6. -They create additional databases in EDS under the normal -location. This is necessary because the tests cannot -tell the EDS source registry daemon to run with a different -XDG root. -""" +class TestPIMUtil(DBusUtil, unittest.TestCase): def setUp(self): self.cleanup = [] @@ -521,7 +513,7 @@ VERSION:3.0\r? 'phone@' + self.managerPrefix + uid, 'addressbook']) - def run(self, result): + def run(self, result, serverArgs=[]): # No errors must be logged. During testRead, libphonenumber used to print # [ERROR] Number too short to be viable: 8 # [ERROR] The string supplied did not seem to be a phone number. @@ -604,12 +596,25 @@ VERSION:3.0\r? # of the need to check an additional process. Allow # a lot more time when running under valgrind. self.runTest(result, own_xdg=False, own_home=False, + serverArgs=serverArgs, defTimeout=usingValgrind() and 600 or 20) def currentSources(self): '''returns current set of EDS sources as set of UIDs, without the .source suffix''' return set([os.path.splitext(x)[0] for x in (os.path.exists(self.sourcedir) and os.listdir(self.sourcedir) or [])]) + + +def TestContacts(TestPIMUtil): + """Tests for org._01.pim.contacts API. + +The tests use the system's EDS, which must be >= 3.6. +They create additional databases in EDS under the normal +location. This is necessary because the tests cannot +tell the EDS source registry daemon to run with a different +XDG root. +""" + def testUIDError(self): '''TestContacts.testUIDError - check that invalid UID is properly detected and reported''' with self.assertRaisesRegexp(dbus.DBusException, @@ -4117,6 +4122,32 @@ END:VCARD''', self.view.events) self.view.close() +class TestSlowSync(TestPIMUtil): + """Test PIM Manager Sync""" + + def run(self, result): + TestPIMUtil.run(self, result, serverArgs=['-d', '10']) + + @timeout(60) + @property("ENV", "SYNCEVOLUTION_SYNC_DELAY=20") + def testSlowSync(self): + '''TestSlowSync.testSlowSync - run a sync which takes longer than the 10 second inactivity duration''' + + # dummy peer directory + contacts = os.path.abspath(os.path.join(xdg_root, 'contacts')) + os.makedirs(contacts) + + # add foo + peers = {} + uid = self.uidPrefix + 'foo' + peers[uid] = {'protocol': 'files', + 'address': contacts} + self.manager.SetPeer(uid, + peers[uid], + timeout=self.timeout) + self.manager.SyncPeer(uid, + timeout=self.timeout) + if __name__ == '__main__': xdg = (os.path.join(os.path.abspath('.'), 'temp-testpim', 'config'),