)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"997c5a8122726305f070223075c5da69c9b3680e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     stewie925 \u003cst6218@att.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-04 08:37:05 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove \u0027self.assertTrue\u0027 enclosing the called_once_with methods."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I04d1c99df9983733b6d2579ba71097b2cebc6a54"},{"line_number":10,"context_line":"Closes-Bug: #1544522"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dab17558_b3a5dbb6","line":7,"updated":"2016-05-06 02:57:10.000000000","message":"Also you should update this commit message. There should be a body explaining the reason for this change.","commit_id":"63cb5c7c2565d3fcb892b593c794e5609c58d7f1"}],"trove/tests/unittests/backup/test_backupagent.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"0e1190d656733117f45be89c1fc9fb2d953813ab","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_6b877312","line":332,"range":{"start_line":332,"start_character":40,"end_line":332,"end_character":56},"updated":"2016-05-04 16:02:59.000000000","message":"This is not a valid mock assert method. It should be \u0027assert_called_once_with\u0027 (see https://docs.python.org/3/library/unittest.mock.html)\nPlease fix all occurrances in the file (you may search the source-tree for other as well).","commit_id":"63cb5c7c2565d3fcb892b593c794e5609c58d7f1"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"e87297b2bc5eb1cb7a00ecbea82de4a32781b868","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_a0ccea89","line":332,"range":{"start_line":332,"start_character":40,"end_line":332,"end_character":56},"updated":"2016-05-25 19:22:34.000000000","message":"This and the below assertion methods have to be called: \u0027assert_called_once_with\u0027.","commit_id":"a2f324cfbae651cb1c9bc283a6ca8cc3ea88ad6d"},{"author":{"_account_id":21111,"name":"STEW TY","email":"punsoca@gmail.com","username":"stewie925"},"change_message_id":"37242040b09e5b8210eaf95fd3f2fb61c403a975","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_67905144","line":332,"range":{"start_line":332,"start_character":40,"end_line":332,"end_character":56},"in_reply_to":"bab6814e_a0ccea89","updated":"2016-05-25 23:33:24.000000000","message":"Hi Petr, I made the changes as you suggested, but the changes failed in the test with multiple AssertionError messages  ( expected Mock to be called once, but mock was being called 0 times or twice).  \n\nPlease see http://paste.openstack.org/show/505454/ for the error log.","commit_id":"a2f324cfbae651cb1c9bc283a6ca8cc3ea88ad6d"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_fa71790d","line":332,"updated":"2016-05-25 22:35:21.000000000","message":"should here be assert_called_once_with?","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":21111,"name":"STEW TY","email":"punsoca@gmail.com","username":"stewie925"},"change_message_id":"905d314dc9540ebab1591c1a29451820a3f6da8f","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_3a1e6170","line":332,"in_reply_to":"bab6814e_fa71790d","updated":"2016-05-25 22:46:09.000000000","message":"Hi Telles and Petr,  \n\nI made global change on \".called_once_with\" to \".assert_called_once_with\" for this module -  but when I run the tests, I am getting errors.\n\nPlease see http://paste.openstack.org/show/505454/ for the errors.  They either say the mock is called twice or called 0 times.","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":338,"context_line":"            ANY,"},{"line_number":339,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":340,"context_line":"            size\u003dANY,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_9a578d59","line":337,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":340,"context_line":"            size\u003dANY,"},{"line_number":341,"context_line":"            state\u003dBackupState.BUILDING)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":344,"context_line":"            ANY,"},{"line_number":345,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":346,"context_line":"            checksum\u003dANY,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_7a5c697d","line":343,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                          context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":367,"context_line":"                          runner\u003dMockCheckProcessBackup)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":370,"context_line":"            ANY,"},{"line_number":371,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":372,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_da559550","line":369,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":371,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":372,"context_line":"            state\u003dBackupState.NEW)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":375,"context_line":"            ANY,"},{"line_number":376,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":377,"context_line":"            size\u003dANY,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_ba525165","line":374,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            size\u003dANY,"},{"line_number":378,"context_line":"            state\u003dBackupState.BUILDING)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":381,"context_line":"            ANY,"},{"line_number":382,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":383,"context_line":"            checksum\u003dANY,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_1a4c3dc7","line":380,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                              context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":408,"context_line":"                              runner\u003dMockLossyBackup)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"            conductor_api.API.update_backup.called_once_with("},{"line_number":411,"context_line":"                ANY,"},{"line_number":412,"context_line":"                backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":413,"context_line":"                state\u003dBackupState.FAILED)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_fa4859b5","line":410,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                                 bkup_info,"},{"line_number":489,"context_line":"                                 \u0027/var/lib/mysql/data\u0027)"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"            MockStorage.save_metadata.called_once_with("},{"line_number":492,"context_line":"                ANY,"},{"line_number":493,"context_line":"                meta)"},{"line_number":494,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_5ac88522","line":491,"updated":"2016-05-25 22:35:21.000000000","message":"ditto","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"fe36fd1723ab11883d1016cdd66a09b66005fa83","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        agent.execute_backup(context\u003dNone, backup_info\u003dbackup_info,"},{"line_number":330,"context_line":"                             runner\u003dMockBackup)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        conductor_api.API.update_backup.called_once_with("},{"line_number":333,"context_line":"            ANY,"},{"line_number":334,"context_line":"            backup_id\u003dbackup_info[\u0027id\u0027],"},{"line_number":335,"context_line":"            state\u003dBackupState.NEW)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_885280dc","line":332,"updated":"2016-05-26 15:08:27.000000000","message":"It would look like this:\n\nconductor_api.API.update_backup.assert_has_calls([\n       call(\n            ANY,\n            backup_id\u003dbackup_info[\u0027id\u0027],\n            state\u003dBackupState.NEW)\n       ),\n       call(\n            ANY,\n            backup_id\u003dbackup_info[\u0027id\u0027],\n            size\u003dANY,\n            state\u003dBackupState.BUILDING)\n       ),\n       call(\n            ANY,\n            backup_id\u003dbackup_info[\u0027id\u0027],\n            checksum\u003dANY,\n            location\u003dANY,\n            note\u003dANY,\n            backup_type\u003dbackup_info[\u0027type\u0027],\n            state\u003dBackupState.COMPLETED)\n       )]\n)","commit_id":"912c3d7586176df269c6c0c14b9b97edadb64502"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"76a274a32ebf6d709e649e6969c1c175099a1197","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    @patch.object(MySqlApp, \u0027get_data_dir\u0027, return_value\u003d\u0027/var/lib/mysql/data\u0027)"},{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_78ecd58f","line":479,"range":{"start_line":479,"start_character":30,"end_line":479,"end_character":43},"updated":"2016-06-09 18:58:17.000000000","message":"replace \u0027save_metadata\u0027 with \u0027save\u0027.","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"24b1d91231b69674a695da4d5f94ed3891ba5e70","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_6400e734","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"updated":"2016-06-08 22:03:57.000000000","message":"OK, I wonder if the problem is that we share this \u0027mock\u0027 class.\nIt is not like returning a new instance of an object. There is only one version of the class evaluated at the import time. All tests then end up sharing the same class. This could certainly cause problems when the tests run in parallel... :/","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ac751e0c11362caeb47eee2f79560913e8174dd8","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_5a2306bd","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_6400e734","updated":"2016-06-08 23:03:30.000000000","message":"Except that the strategy is instantiated from the MockSwift class, so it should be new for each test.","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"503dc942f6b594ef7cc10e55e0b93854a2ce2ffd","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_773d3bc3","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_6400e734","updated":"2016-06-08 22:10:28.000000000","message":"Or the order of decorators is wrong (they decorate from inside out) - i.e. \u0027get_storage_strategy\u0027 should appear before (above) \u0027load_metadata\u0027 mock.","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ac751e0c11362caeb47eee2f79560913e8174dd8","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_b5179b43","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_773d3bc3","updated":"2016-06-08 23:03:30.000000000","message":"you\u0027re right that they get passed in from \u0027the in side out\u0027, but it looks correct to me. Going up from the bottom gives: log, get_ss, save, load, (get_client is skipped), get_dd.","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"7b36bcceecb86e36d854a2f895821f4d8d06db39","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_d0fb5545","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_b5179b43","updated":"2016-06-09 00:08:45.000000000","message":"I was really thinking about the order of decorators themselves.\nAs far as I understand the mocking order is the same as the Python decorator order meaning that in:\n\n@dec1\n@dec2\ndef foo():\n    pass\n\ndec1 gets applied on the result of dec2. I was wondering if it could be somehow material for this case... :/","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"6ddf91997f42e59d523db3a5960d948a5d27f35e","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_1feb09b2","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_bcbda304","updated":"2016-06-09 14:29:57.000000000","message":"Nope - didn\u0027t make a difference","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"a9972684dd22040f80bfecfa2c5a64ee60a568d8","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":478,"context_line":"    @patch.object(MockSwift, \u0027load_metadata\u0027, return_value\u003d{\u0027lsn\u0027: \u002754321\u0027})"},{"line_number":479,"context_line":"    @patch.object(MockSwift, \u0027save_metadata\u0027)"},{"line_number":480,"context_line":"    @patch.object(backupagent, \u0027get_storage_strategy\u0027, return_value\u003dMockSwift)"},{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_bcbda304","line":480,"range":{"start_line":480,"start_character":68,"end_line":480,"end_character":77},"in_reply_to":"7aa08908_d0fb5545","updated":"2016-06-09 14:12:59.000000000","message":"maybe, since the get_storage_strategy is returning a class that then has two methods mocked again.  I\u0027ll test it and see if it works.  If that\u0027s the case, then maybe this would be better rewritten as a context manager block.","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"76a274a32ebf6d709e649e6969c1c175099a1197","unresolved":false,"context_lines":[{"line_number":481,"context_line":"    @patch(\u0027trove.guestagent.backup.backupagent.LOG\u0027)"},{"line_number":482,"context_line":"    def test_backup_incremental_metadata(self, mock_logging,"},{"line_number":483,"context_line":"                                         get_storage_strategy_mock,"},{"line_number":484,"context_line":"                                         save_metadata_mock,"},{"line_number":485,"context_line":"                                         load_metadata_mock,"},{"line_number":486,"context_line":"                                         get_datadir_mock):"},{"line_number":487,"context_line":"        meta \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_f8f8c54b","line":484,"range":{"start_line":484,"start_character":41,"end_line":484,"end_character":59},"updated":"2016-06-09 18:58:17.000000000","message":"you can also rename this to something like \u0027save_mock\u0027","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"76a274a32ebf6d709e649e6969c1c175099a1197","unresolved":false,"context_lines":[{"line_number":508,"context_line":"                                 bkup_info,"},{"line_number":509,"context_line":"                                 \u0027/var/lib/mysql/data\u0027)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"            MockSwift.save_metadata.assert_called_once_with("},{"line_number":512,"context_line":"                ANY,"},{"line_number":513,"context_line":"                meta)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"    @patch.object(conductor_api.API, \u0027get_client\u0027, Mock(return_value\u003dMock()))"},{"line_number":516,"context_line":"    def test_backup_incremental_bad_metadata(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_18815190","line":513,"range":{"start_line":511,"start_character":10,"end_line":513,"end_character":21},"updated":"2016-06-09 18:58:17.000000000","message":"Turns out that this call was removed in: Ide30a1e7f909a3b7fecb16268367b56468306d42\n\nThen replace this with \u0027save_mock.assert_called_once_with(ANY, ANY, metadata\u003dmeta)\u0027","commit_id":"01f5d9b4e6432fba32a5adcc6d3694385fd10036"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"e87297b2bc5eb1cb7a00ecbea82de4a32781b868","unresolved":false,"context_lines":[{"line_number":106,"context_line":"FAKE_USER \u003d [{\"_name\": \"random\", \"_password\": \"guesswhat\","},{"line_number":107,"context_line":"              \"_host\": \"%\", \"_databases\": [FAKE_DB]}]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"conductor_api.API.get_client \u003d Mock()"},{"line_number":110,"context_line":"conductor_api.API.heartbeat \u003d Mock()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class FakeTime:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_c0964e4b","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":36},"updated":"2016-05-25 19:22:34.000000000","message":"Remember to get rid of these.","commit_id":"a2f324cfbae651cb1c9bc283a6ca8cc3ea88ad6d"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"e87297b2bc5eb1cb7a00ecbea82de4a32781b868","unresolved":false,"context_lines":[{"line_number":1042,"context_line":"            with patch.object(conductor_api.API, \u0027heartbeat\u0027) as patch_hb:"},{"line_number":1043,"context_line":"                patch_pc.__get__ \u003d Mock(return_value\u003dTrue)"},{"line_number":1044,"context_line":"                self.assertRaises(RuntimeError, self.mySqlApp.start_mysql)"},{"line_number":1045,"context_line":"                patch_hb.called_once_with("},{"line_number":1046,"context_line":"                    self.FAKE_ID,"},{"line_number":1047,"context_line":"                    {\u0027service_status\u0027:"},{"line_number":1048,"context_line":"                     rd_instance.ServiceStatuses.SHUTDOWN.description})"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_00c69667","line":1045,"range":{"start_line":1045,"start_character":25,"end_line":1045,"end_character":41},"updated":"2016-05-25 19:22:34.000000000","message":"Should be \u0027assert_called_once_with\u0027.","commit_id":"a2f324cfbae651cb1c9bc283a6ca8cc3ea88ad6d"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"2ffd09af2464b648df0e793e7d240869a334659f","unresolved":false,"context_lines":[{"line_number":1045,"context_line":"            with patch.object(conductor_api.API, \u0027heartbeat\u0027) as patch_hb:"},{"line_number":1046,"context_line":"                patch_pc.__get__ \u003d Mock(return_value\u003dTrue)"},{"line_number":1047,"context_line":"                self.assertRaises(RuntimeError, self.mySqlApp.start_mysql)"},{"line_number":1048,"context_line":"                patch_hb.called_once_with("},{"line_number":1049,"context_line":"                    self.FAKE_ID,"},{"line_number":1050,"context_line":"                    {\u0027service_status\u0027:"},{"line_number":1051,"context_line":"                     rd_instance.ServiceStatuses.SHUTDOWN.description})"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab6814e_ba6b711d","line":1048,"updated":"2016-05-25 22:35:21.000000000","message":"Should here also be assert_called_once_with?","commit_id":"74bf0a6e144d3fb59d222ac0378ecf46b9d21777"}]}
