)]}'
{"test/unit/obj/test_server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8e4e8f3c119942cc08c2cb28653ee52e0eda04e9","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        resp \u003d req.get_response(self.object_controller)"},{"line_number":1158,"context_line":"        self.assertEqual(resp.status_int, 412)"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"        sleep(.00001)"},{"line_number":1161,"context_line":"        timestamp \u003d normalize_timestamp(time())"},{"line_number":1162,"context_line":"        req \u003d Request.blank(\u0027/sda1/p/a/c/o\u0027,"},{"line_number":1163,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027DELETE\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_c79fc001","line":1160,"updated":"2016-11-23 19:57:03.000000000","message":"Would it be better to use make_timstamp_iter rather than using actual sleep calls?","commit_id":"42fb1ad88115b3739a3c7cb15d16d274d6b7384e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"29c089e85ec61b0c57987e34af3b55a503b7e600","unresolved":false,"context_lines":[{"line_number":1157,"context_line":"        resp \u003d req.get_response(self.object_controller)"},{"line_number":1158,"context_line":"        self.assertEqual(resp.status_int, 412)"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"        sleep(.00001)"},{"line_number":1161,"context_line":"        timestamp \u003d normalize_timestamp(time())"},{"line_number":1162,"context_line":"        req \u003d Request.blank(\u0027/sda1/p/a/c/o\u0027,"},{"line_number":1163,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027DELETE\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_7a97e347","line":1160,"in_reply_to":"5a74a57a_c79fc001","updated":"2016-11-28 10:11:23.000000000","message":"+1, but setup() has self.ts \u003d make_timestamp_iter(), so you can use  next(self.ts()).normal","commit_id":"42fb1ad88115b3739a3c7cb15d16d274d6b7384e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3290931ef9a2643b93aa8f3cf2ecd0756bf51977","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"    def test_PUT_if_none_match_but_expired(self):"},{"line_number":1199,"context_line":"        inital_put \u003d next(self.ts)"},{"line_number":1200,"context_line":"        put_before_expire \u003d next(self.ts)"},{"line_number":1201,"context_line":"        delete_at_timestamp \u003d int(next(self.ts))"},{"line_number":1202,"context_line":"        time_after_expire \u003d next(self.ts)"},{"line_number":1203,"context_line":"        put_after_expire \u003d next(self.ts)"},{"line_number":1204,"context_line":"        delete_at_container \u003d str("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_d466dfeb","line":1201,"updated":"2016-12-06 18:15:27.000000000","message":"FYI self.ts yields int timestamps, but actually I think it makes sense to do an explicit cast to int here just in case someone messes with timestamp iter helper","commit_id":"3ffd1e87af37aecb924a2cc299a4a4c4707a3afa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3290931ef9a2643b93aa8f3cf2ecd0756bf51977","unresolved":false,"context_lines":[{"line_number":1225,"context_line":"                     \u0027If-None-Match\u0027: \u0027*\u0027})"},{"line_number":1226,"context_line":"        req.body \u003d \u0027TEST\u0027"},{"line_number":1227,"context_line":"        resp \u003d req.get_response(self.object_controller)"},{"line_number":1228,"context_line":"        self.assertEqual(resp.status_int, 412)"},{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        # PUT again after object has expired should succeed"},{"line_number":1231,"context_line":"        orig_time \u003d object_server.time.time"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_3402b30a","line":1228,"updated":"2016-12-06 18:15:27.000000000","message":"this relies on real time not advancing past the expiry time before the request is made. Adding sleep(1) at line 1226, or having a CI test runner experience go to sleep here, would cause this assertion to fail. To be safe I think you need to mock the real time here just like line 1233 i.e. \n\n  with mock.patch(\"swift.obj.server.time.time\",\n                        lambda: float(put_before_expire.normal)):\n            resp \u003d req.get_response(self.object_controller)","commit_id":"3ffd1e87af37aecb924a2cc299a4a4c4707a3afa"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2d269a210520d69eefaad02306b9ef24334bc9a7","unresolved":false,"context_lines":[{"line_number":1225,"context_line":"                     \u0027If-None-Match\u0027: \u0027*\u0027})"},{"line_number":1226,"context_line":"        req.body \u003d \u0027TEST\u0027"},{"line_number":1227,"context_line":"        resp \u003d req.get_response(self.object_controller)"},{"line_number":1228,"context_line":"        self.assertEqual(resp.status_int, 412)"},{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        # PUT again after object has expired should succeed"},{"line_number":1231,"context_line":"        orig_time \u003d object_server.time.time"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_5f0e638c","line":1228,"in_reply_to":"3a71b18c_3402b30a","updated":"2016-12-07 01:52:00.000000000","message":"Done","commit_id":"3ffd1e87af37aecb924a2cc299a4a4c4707a3afa"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"3290931ef9a2643b93aa8f3cf2ecd0756bf51977","unresolved":false,"context_lines":[{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        # PUT again after object has expired should succeed"},{"line_number":1231,"context_line":"        orig_time \u003d object_server.time.time"},{"line_number":1232,"context_line":"        try:"},{"line_number":1233,"context_line":"            object_server.time.time \u003d lambda: float(time_after_expire.normal)"},{"line_number":1234,"context_line":"            req \u003d Request.blank("},{"line_number":1235,"context_line":"                \u0027/sda1/p/a/c/o\u0027, environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_9422a7a1","line":1232,"updated":"2016-12-06 18:15:27.000000000","message":"nit you could use \n\n  with mock.patch(\"swift.obj.server.time.time\", lambda: float(time_after_expire.normal)):","commit_id":"3ffd1e87af37aecb924a2cc299a4a4c4707a3afa"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"2d269a210520d69eefaad02306b9ef24334bc9a7","unresolved":false,"context_lines":[{"line_number":1229,"context_line":""},{"line_number":1230,"context_line":"        # PUT again after object has expired should succeed"},{"line_number":1231,"context_line":"        orig_time \u003d object_server.time.time"},{"line_number":1232,"context_line":"        try:"},{"line_number":1233,"context_line":"            object_server.time.time \u003d lambda: float(time_after_expire.normal)"},{"line_number":1234,"context_line":"            req \u003d Request.blank("},{"line_number":1235,"context_line":"                \u0027/sda1/p/a/c/o\u0027, environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027PUT\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_7f295fe5","line":1232,"in_reply_to":"3a71b18c_9422a7a1","updated":"2016-12-07 01:52:00.000000000","message":"Done","commit_id":"3ffd1e87af37aecb924a2cc299a4a4c4707a3afa"}]}
