)]}'
{"trove/guestagent/strategies/storage/swift.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"f5b343c5df8e36a527c28f3a12f7c8309f881b92","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        # Whole file checksum"},{"line_number":128,"context_line":"        # checksum \u003d stream.file_checksum.hexdigest()"},{"line_number":129,"context_line":"        url \u003d connection.url"},{"line_number":130,"context_line":"        location \u003d \"%s/%s/%s\" % (url, BACKUP_CONTAINER, save_location)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Create the manifest file"},{"line_number":133,"context_line":"        # We create the manifest file after all the segments have been uploaded"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BqpI%3D","line":130,"updated":"2013-11-21 20:07:46.000000000","message":"Does this change the location that the files will be stored? if so, we might need to make sure we can access the old way in case someone has deployed and is running this already. Or maybe provide a manual migration.\n\nIf it doesnt alter it, then dont mind me :)","commit_id":"90468eec301082af63f31bc55c4db7133cb63032"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d3d2341985ab4b42f75834fbf298b3c2bd94aed8","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        # Whole file checksum"},{"line_number":128,"context_line":"        # checksum \u003d stream.file_checksum.hexdigest()"},{"line_number":129,"context_line":"        url \u003d connection.url"},{"line_number":130,"context_line":"        location \u003d \"%s/%s/%s\" % (url, BACKUP_CONTAINER, save_location)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Create the manifest file"},{"line_number":133,"context_line":"        # We create the manifest file after all the segments have been uploaded"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BqZA%3D","line":130,"in_reply_to":"AAAATn%2F%2Bqnw%3D","updated":"2013-11-21 21:19:48.000000000","message":"Agreed with Robert.","commit_id":"90468eec301082af63f31bc55c4db7133cb63032"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"4f2820d8044d7a8a5648d54855f50c37cf582629","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        # Whole file checksum"},{"line_number":128,"context_line":"        # checksum \u003d stream.file_checksum.hexdigest()"},{"line_number":129,"context_line":"        url \u003d connection.url"},{"line_number":130,"context_line":"        location \u003d \"%s/%s/%s\" % (url, BACKUP_CONTAINER, save_location)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Create the manifest file"},{"line_number":133,"context_line":"        # We create the manifest file after all the segments have been uploaded"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2Bqnw%3D","line":130,"in_reply_to":"AAAATn%2F%2BqpI%3D","updated":"2013-11-21 20:14:13.000000000","message":"No, it is storing it in the same location. The difference here is that previously the container location was stored on the backup object, which is the point of the bug. The logic and locations for swift storage should only be in the swift storage class. That way when some one add SomeOtherStorageClass that does not use containers they wont be forced to use that constructed path.","commit_id":"90468eec301082af63f31bc55c4db7133cb63032"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a34e292e3586f8f10ff1635f49a3ac3c765402a7","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# Read in multiples of 128 bytes, since this is the size of an md5 digest block"},{"line_number":30,"context_line":"# this allows us to update that while streaming the file."},{"line_number":31,"context_line":"#http://stackoverflow.com/questions/1131220/get-md5-hash-of-big-files-in-python"},{"line_number":32,"context_line":"CHUNK_SIZE \u003d CONF.backup_chunk_size"},{"line_number":33,"context_line":"MAX_FILE_SIZE \u003d CONF.backup_segment_max_size"},{"line_number":34,"context_line":"BACKUP_CONTAINER \u003d CONF.backup_swift_container"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F9sIw%3D","line":31,"updated":"2013-12-07 13:30:14.000000000","message":"i thinks it would be moved to doc, even more, you could add description for this case.","commit_id":"776dbc3572f0f5ae3cad45c10ce6e6f8b0b76091"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"c4337d20754ed58b9fcd42056c7a94befcf920a2","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\" Persist information from the stream \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Create the container (save_location) if it doesn\u0027t already exist"},{"line_number":102,"context_line":"        self.connection.put_container(BACKUP_CONTAINER)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Swift Checksum is the checksum of the concatenated segment checksums"},{"line_number":105,"context_line":"        swift_checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F99Es%3D","line":102,"updated":"2013-12-04 02:28:09.000000000","message":"This is slightly confusing to read since \u0027save_location\u0027, which was being used to specify the backup container earlier, is now being used to specify the manifest.\n\nI can see why you did this, and it\u0027s good, but perhaps change the comment above (remove the save_location part) to reduce some of this confusion.\n\nIt might also be a good idea to add a comment to the docstring specifying that the save_location is actually the manifest.","commit_id":"776dbc3572f0f5ae3cad45c10ce6e6f8b0b76091"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"c4b4fefd1d517394dc01dff85b20a3b2582057a3","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\" Persist information from the stream \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Create the container (save_location) if it doesn\u0027t already exist"},{"line_number":102,"context_line":"        self.connection.put_container(BACKUP_CONTAINER)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Swift Checksum is the checksum of the concatenated segment checksums"},{"line_number":105,"context_line":"        swift_checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F95HI%3D","line":102,"in_reply_to":"AAAATn%2F95wk%3D","updated":"2013-12-04 19:49:28.000000000","message":"I considered putting that in the comments, but it would be an API parameter change for the more general Storage Strategy API, so I decided to abstain. Plus, I felt like a manifest was a \"type\" of a storage_location (for the swift strategy) so I think it\u0027s okay to leave it as is. Either way, I\u0027ll leave that call up to you and won\u0027t nitpick. :)","commit_id":"776dbc3572f0f5ae3cad45c10ce6e6f8b0b76091"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"823883b07b9cef453dc902ed6b6aa6b406d4c064","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\" Persist information from the stream \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Create the container (save_location) if it doesn\u0027t already exist"},{"line_number":102,"context_line":"        self.connection.put_container(BACKUP_CONTAINER)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Swift Checksum is the checksum of the concatenated segment checksums"},{"line_number":105,"context_line":"        swift_checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F95wk%3D","line":102,"in_reply_to":"AAAATn%2F98Vc%3D","updated":"2013-12-04 17:34:32.000000000","message":"Sounds good, should I also change the argument to \u0027manifest\u0027 which is more accurate?","commit_id":"776dbc3572f0f5ae3cad45c10ce6e6f8b0b76091"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5fe23ba347f57d3026645b37a4efb50b23370ac1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\" Persist information from the stream \"\"\""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Create the container (save_location) if it doesn\u0027t already exist"},{"line_number":102,"context_line":"        self.connection.put_container(BACKUP_CONTAINER)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # Swift Checksum is the checksum of the concatenated segment checksums"},{"line_number":105,"context_line":"        swift_checksum \u003d hashlib.md5()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F98Vc%3D","line":102,"in_reply_to":"AAAATn%2F99Es%3D","updated":"2013-12-04 07:06:10.000000000","message":"Agreed with SlickNik.\nAs already said, it would better to use fine doc.string which describes current call.\nWould be preferable: \n# Preparing storage locatiod, defined by manifest","commit_id":"776dbc3572f0f5ae3cad45c10ce6e6f8b0b76091"}],"trove/tests/unittests/backup/test_backupagent.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        return self.etag.hexdigest()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def save(self, save_location, stream):"},{"line_number":96,"context_line":"        location \u003d \u0027%s/%s/%s\u0027 % (self.url, self.container, save_location)"},{"line_number":97,"context_line":"        return True, \u0027w00t\u0027, \u0027fake-checksum\u0027, location"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def load(self, context, storage_url, container, filename, backup_checksum):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZIg%3D","line":96,"updated":"2013-12-11 23:37:51.000000000","message":"it would be better to use dict formatting","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"66e19e6a6e8e633698eb9c69f73bbe5752dd3de7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        return self.etag.hexdigest()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def save(self, save_location, stream):"},{"line_number":96,"context_line":"        location \u003d \u0027%s/%s/%s\u0027 % (self.url, self.container, save_location)"},{"line_number":97,"context_line":"        return True, \u0027w00t\u0027, \u0027fake-checksum\u0027, location"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def load(self, context, storage_url, container, filename, backup_checksum):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9VWI%3D","line":96,"in_reply_to":"AAAATn%2F9ZIg%3D","updated":"2013-12-12 15:18:15.000000000","message":"why, this is just a mock object. There is no need to change it as the order will never change and if it does we can do it then.","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"}],"trove/tests/unittests/backup/test_storage.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(success, True,"},{"line_number":72,"context_line":"                         \"The backup should have been successful.\")"},{"line_number":73,"context_line":"        self.assertIsNotNone(note, \"A note should have been returned.\")"},{"line_number":74,"context_line":"        self.assertEqual(location,"},{"line_number":75,"context_line":"                         \u0027http://mockswift/v1/database_backups/123.gz.enc\u0027,"},{"line_number":76,"context_line":"                         \"Incorrect swift location was returned.\")"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZIw%3D","line":74,"updated":"2013-12-11 23:37:51.000000000","message":"please use correct parameters order: expected, current.","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"1d02554503c514784130922f09b15a52bcedd79e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(success, True,"},{"line_number":72,"context_line":"                         \"The backup should have been successful.\")"},{"line_number":73,"context_line":"        self.assertIsNotNone(note, \"A note should have been returned.\")"},{"line_number":74,"context_line":"        self.assertEqual(location,"},{"line_number":75,"context_line":"                         \u0027http://mockswift/v1/database_backups/123.gz.enc\u0027,"},{"line_number":76,"context_line":"                         \"Incorrect swift location was returned.\")"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9VNg%3D","line":74,"in_reply_to":"AAAATn%2F9VT4%3D","updated":"2013-12-12 15:34:46.000000000","message":"i don\u0027t see any reasons to ignore give unit testing API, so, please change it accoring to it.","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"66e19e6a6e8e633698eb9c69f73bbe5752dd3de7","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(success, True,"},{"line_number":72,"context_line":"                         \"The backup should have been successful.\")"},{"line_number":73,"context_line":"        self.assertIsNotNone(note, \"A note should have been returned.\")"},{"line_number":74,"context_line":"        self.assertEqual(location,"},{"line_number":75,"context_line":"                         \u0027http://mockswift/v1/database_backups/123.gz.enc\u0027,"},{"line_number":76,"context_line":"                         \"Incorrect swift location was returned.\")"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9VT4%3D","line":74,"in_reply_to":"AAAATn%2F9ZIw%3D","updated":"2013-12-12 15:18:15.000000000","message":"ok, I\u0027ll play your game, I think the main problem is that we are using testtools instead of standard unittest. As soon as we switch to something else we\u0027re going to have to re-write the entire suite again. That is stupid. We should only use standard Python unittest everywhere.","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertTrue(note.startswith(\"Error saving data to Swift!\"))"},{"line_number":103,"context_line":"        self.assertIsNone(checksum,"},{"line_number":104,"context_line":"                          \"Swift checksum should be None for failed backup.\")"},{"line_number":105,"context_line":"        self.assertEqual(location,"},{"line_number":106,"context_line":"                         \u0027http://mockswift/v1/database_backups/\u0027"},{"line_number":107,"context_line":"                         \u0027bad_segment_etag_123.gz.enc\u0027,"},{"line_number":108,"context_line":"                         \"Incorrect swift location was returned.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZKU%3D","line":105,"updated":"2013-12-11 23:37:51.000000000","message":"please use correct parameters order: expected, current.","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertTrue(note.startswith(\"Error saving data to Swift!\"))"},{"line_number":135,"context_line":"        self.assertIsNone(checksum,"},{"line_number":136,"context_line":"                          \"Swift checksum should be None for failed backup.\")"},{"line_number":137,"context_line":"        self.assertEqual(location,"},{"line_number":138,"context_line":"                         \u0027http://mockswift/v1/database_backups/\u0027"},{"line_number":139,"context_line":"                         \u0027bad_manifest_etag_123.gz.enc\u0027,"},{"line_number":140,"context_line":"                         \"Incorrect swift location was returned.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZKQ%3D","line":137,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_base_filename_no_extension(self):"},{"line_number":241,"context_line":"        stream_reader \u003d StreamReader(self.runner, \u0027foo\u0027)"},{"line_number":242,"context_line":"        self.assertEqual(stream_reader.base_filename, \u0027foo\u0027)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_prefix(self):"},{"line_number":245,"context_line":"        self.assertEqual(self.stream.prefix, \u0027database_backups/123_\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZKM%3D","line":242,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        self.assertEqual(stream_reader.base_filename, \u0027foo\u0027)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_prefix(self):"},{"line_number":245,"context_line":"        self.assertEqual(self.stream.prefix, \u0027database_backups/123_\u0027)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_segment(self):"},{"line_number":248,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZKI%3D","line":245,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        self.assertEqual(self.stream.prefix, \u0027database_backups/123_\u0027)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_segment(self):"},{"line_number":248,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_end_of_file(self):"},{"line_number":251,"context_line":"        self.assertFalse(self.stream.end_of_file)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZKE%3D","line":248,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_end_of_file(self):"},{"line_number":251,"context_line":"        self.assertFalse(self.stream.end_of_file)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def test_end_of_segment(self):"},{"line_number":254,"context_line":"        self.assertFalse(self.stream.end_of_segment)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJ4%3D","line":251,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.assertFalse(self.stream.end_of_file)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def test_end_of_segment(self):"},{"line_number":254,"context_line":"        self.assertFalse(self.stream.end_of_segment)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    def test_segment_almost_complete(self):"},{"line_number":257,"context_line":"        self.stream.segment_length \u003d 98"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJw%3D","line":254,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def test_segment_almost_complete(self):"},{"line_number":257,"context_line":"        self.stream.segment_length \u003d 98"},{"line_number":258,"context_line":"        results \u003d self.stream.read(2)"},{"line_number":259,"context_line":"        self.assertEqual(results, \u0027XX\u0027)"},{"line_number":260,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027,"},{"line_number":261,"context_line":"                         \"The Segment should still be the same\")"},{"line_number":262,"context_line":"        self.assertEqual(self.stream.segment_length, 100)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJo%3D","line":259,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.stream.segment_length \u003d 98"},{"line_number":258,"context_line":"        results \u003d self.stream.read(2)"},{"line_number":259,"context_line":"        self.assertEqual(results, \u0027XX\u0027)"},{"line_number":260,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027,"},{"line_number":261,"context_line":"                         \"The Segment should still be the same\")"},{"line_number":262,"context_line":"        self.assertEqual(self.stream.segment_length, 100)"},{"line_number":263,"context_line":"        checksum \u003d hashlib.md5(\u0027XX\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJk%3D","line":260,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        self.assertEqual(results, \u0027XX\u0027)"},{"line_number":260,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000000\u0027,"},{"line_number":261,"context_line":"                         \"The Segment should still be the same\")"},{"line_number":262,"context_line":"        self.assertEqual(self.stream.segment_length, 100)"},{"line_number":263,"context_line":"        checksum \u003d hashlib.md5(\u0027XX\u0027)"},{"line_number":264,"context_line":"        checksum \u003d checksum.hexdigest()"},{"line_number":265,"context_line":"        segment_checksum \u003d self.stream.segment_checksum.hexdigest()"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJg%3D","line":262,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        checksum \u003d hashlib.md5(\u0027XX\u0027)"},{"line_number":264,"context_line":"        checksum \u003d checksum.hexdigest()"},{"line_number":265,"context_line":"        segment_checksum \u003d self.stream.segment_checksum.hexdigest()"},{"line_number":266,"context_line":"        self.assertEqual(checksum, segment_checksum,"},{"line_number":267,"context_line":"                         \"Segment checksum did not match\")"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_segment_complete(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJc%3D","line":266,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def test_segment_complete(self):"},{"line_number":270,"context_line":"        self.stream.segment_length \u003d 99"},{"line_number":271,"context_line":"        results \u003d self.stream.read(2)"},{"line_number":272,"context_line":"        self.assertEqual(results, \u0027\u0027, \"Results should be empty.\")"},{"line_number":273,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000001\u0027)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_stream_complete(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJQ%3D","line":272,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        self.stream.segment_length \u003d 99"},{"line_number":271,"context_line":"        results \u003d self.stream.read(2)"},{"line_number":272,"context_line":"        self.assertEqual(results, \u0027\u0027, \"Results should be empty.\")"},{"line_number":273,"context_line":"        self.assertEqual(self.stream.segment, \u0027123_00000001\u0027)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_stream_complete(self):"},{"line_number":276,"context_line":"        results \u003d self.stream.read(0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJE%3D","line":273,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_stream_complete(self):"},{"line_number":276,"context_line":"        results \u003d self.stream.read(0)"},{"line_number":277,"context_line":"        self.assertEqual(results, \u0027\u0027, \"Results should be empty.\")"},{"line_number":278,"context_line":"        self.assertTrue(self.stream.end_of_file)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZJA%3D","line":277,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"977e15cfc8269c7e5dbf5eea24a57ea3b85d93fe","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_stream_complete(self):"},{"line_number":276,"context_line":"        results \u003d self.stream.read(0)"},{"line_number":277,"context_line":"        self.assertEqual(results, \u0027\u0027, \"Results should be empty.\")"},{"line_number":278,"context_line":"        self.assertTrue(self.stream.end_of_file)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F9ZI0%3D","line":278,"updated":"2013-12-11 23:37:51.000000000","message":"same","commit_id":"52450afdf14aea9f07ae49fc9c9a426521e8f2be"}]}
