]> git.donarmstrong.com Git - dak.git/blob - tests/dbtest_timestamps.py
Merge branch 'master' of ssh://franck.debian.org/srv/ftp.debian.org/git/dak
[dak.git] / tests / dbtest_timestamps.py
1 #!/usr/bin/env python
2
3 from db_test import DBDakTestCase
4
5 from daklib.dbconn import DBConn, Uid
6
7 from sqlalchemy import func
8 import time
9 import unittest
10
11 class TimestampTestCase(DBDakTestCase):
12     """
13     TimestampTestCase checks that the timestamps created and modified are
14     working correctly.
15
16     TODO: Should we check all tables?
17     """
18
19     def now(self):
20         "returns the current time at the db server"
21
22         # we fetch a fresh session each time to avoid caching
23         local_session = DBConn().session()
24         current_time = local_session.query(func.now()).scalar()
25         local_session.close()
26         return current_time
27
28     def sleep(self):
29         time.sleep(0.001)
30
31     def test_timestamps(self):
32         timestamp01 = self.now()
33         self.sleep()
34         uid = Uid(uid = 'ftp-master@debian.org')
35         self.session.add(uid)
36         self.session.commit()
37         created01 = uid.created
38         modified01 = uid.modified
39         self.sleep()
40         timestamp02 = self.now()
41         self.assertTrue(timestamp01 < created01)
42         self.assertTrue(timestamp01 < modified01)
43         self.assertTrue(created01 < timestamp02)
44         self.assertTrue(modified01 < timestamp02)
45         self.sleep()
46         uid.name = 'ftp team'
47         self.session.commit()
48         created02 = uid.created
49         modified02 = uid.modified
50         self.assertEqual(created01, created02)
51         self.assertTrue(modified01 < modified02)
52         self.sleep()
53         timestamp03 = self.now()
54         self.assertTrue(modified02 < timestamp03)
55
56     def classes_to_clean(self):
57         return (Uid,)
58
59 if __name__ == '__main__':
60     unittest.main()