From 0e2c101fbabb851a6af169ccb48c9cf7c160fb1d Mon Sep 17 00:00:00 2001 From: gholt Date: Tue, 1 Nov 2011 23:16:11 +0000 Subject: [PATCH] Fixed time-sensitive tests. I noticed that a couple of tests I recently made were time-sensitive. This can be shown with the following quick script: from sys import exit from unittest import TestSuite, TextTestRunner from test.unit.obj.test_server import TestObjectController s = TestSuite() s.addTest(TestObjectController('test_GET_but_expired')) s.addTest(TestObjectController('test_HEAD_but_expired')) for x in xrange(200): if TextTestRunner().run(s).failures: exit('!!!!!!!!!!!!!!! TEST FAILED !!!!!!!!!!!!!!!') print '\o/ Test ran 200 times without failure.' Change-Id: Ifdb1920e5266aaa278baa0759fc0bfaa1aff2d0d --- test/unit/obj/test_server.py | 67 +++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/test/unit/obj/test_server.py b/test/unit/obj/test_server.py index a29a675fab..83ab9a4969 100644 --- a/test/unit/obj/test_server.py +++ b/test/unit/obj/test_server.py @@ -1791,19 +1791,26 @@ class TestObjectController(unittest.TestCase): resp = self.object_controller.GET(req) self.assertEquals(resp.status_int, 200) - req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'}, - headers={'X-Timestamp': normalize_timestamp(test_time - 1000), - 'X-Delete-At': str(int(time() + 1)), - 'Content-Length': '4', - 'Content-Type': 'application/octet-stream'}) - req.body = 'TEST' - resp = self.object_controller.PUT(req) - self.assertEquals(resp.status_int, 201) - - req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'GET'}, - headers={'X-Timestamp': normalize_timestamp(test_time)}) - resp = self.object_controller.GET(req) - self.assertEquals(resp.status_int, 200) + orig_time = object_server.time.time + try: + t = time() + object_server.time.time = lambda: t + req = Request.blank('/sda1/p/a/c/o', + environ={'REQUEST_METHOD': 'PUT'}, + headers={'X-Timestamp': normalize_timestamp(test_time - 1000), + 'X-Delete-At': str(int(t + 1)), + 'Content-Length': '4', + 'Content-Type': 'application/octet-stream'}) + req.body = 'TEST' + resp = self.object_controller.PUT(req) + self.assertEquals(resp.status_int, 201) + req = Request.blank('/sda1/p/a/c/o', + environ={'REQUEST_METHOD': 'GET'}, + headers={'X-Timestamp': normalize_timestamp(test_time)}) + resp = self.object_controller.GET(req) + self.assertEquals(resp.status_int, 200) + finally: + object_server.time.time = orig_time orig_time = object_server.time.time try: @@ -1834,20 +1841,26 @@ class TestObjectController(unittest.TestCase): resp = self.object_controller.HEAD(req) self.assertEquals(resp.status_int, 200) - req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'}, - headers={'X-Timestamp': normalize_timestamp(test_time - 1000), - 'X-Delete-At': str(int(time() + 1)), - 'Content-Length': '4', - 'Content-Type': 'application/octet-stream'}) - req.body = 'TEST' - resp = self.object_controller.PUT(req) - self.assertEquals(resp.status_int, 201) - - req = Request.blank('/sda1/p/a/c/o', - environ={'REQUEST_METHOD': 'HEAD'}, - headers={'X-Timestamp': normalize_timestamp(test_time)}) - resp = self.object_controller.HEAD(req) - self.assertEquals(resp.status_int, 200) + orig_time = object_server.time.time + try: + t = time() + object_server.time.time = lambda: t + req = Request.blank('/sda1/p/a/c/o', + environ={'REQUEST_METHOD': 'PUT'}, + headers={'X-Timestamp': normalize_timestamp(test_time - 1000), + 'X-Delete-At': str(int(t + 1)), + 'Content-Length': '4', + 'Content-Type': 'application/octet-stream'}) + req.body = 'TEST' + resp = self.object_controller.PUT(req) + self.assertEquals(resp.status_int, 201) + req = Request.blank('/sda1/p/a/c/o', + environ={'REQUEST_METHOD': 'HEAD'}, + headers={'X-Timestamp': normalize_timestamp(test_time)}) + resp = self.object_controller.HEAD(req) + self.assertEquals(resp.status_int, 200) + finally: + object_server.time.time = orig_time orig_time = object_server.time.time try: