def test_older_revision(self): """Test remote revision is older.""" self.mock.get_remote_source_revision.return_value = '123' self.mock.get_local_source_revision.return_value = '456789' self.assertIsNone(update_task.get_newer_source_revision()) self.mock.get_local_source_revision.assert_called_once_with() self.mock.get_remote_source_revision.assert_called_once_with( 'gs://test-deployment-bucket/clusterfuzz-source.manifest' + self.manifest_suffix)
def test_no_local_revision(self): """Test no local revision.""" self.mock.get_remote_source_revision.return_value = 'remote' self.mock.get_local_source_revision.return_value = '' self.assertEqual('remote', update_task.get_newer_source_revision()) self.mock.get_local_source_revision.assert_called_once_with() self.mock.get_remote_source_revision.assert_called_once_with( 'gs://test-deployment-bucket/clusterfuzz-source.manifest' + self.manifest_suffix)
def update_source_code_if_needed(): """Update source code if needed.""" try: # Update the bot source, if there's a newer version. newer_source_revision = update_task.get_newer_source_revision() if newer_source_revision is not None: # If source code needs update, stop the heartbeat first. As otherwise, # we can run into exceptions if source code changed from underneath # a running process. stop_heartbeat() update_task.update_source_code() except Exception: logs.log_error('Failed to update source.')
def test_error_on_remote_revision(self): """Test error on remote revision.""" self.mock.get_remote_source_revision.side_effect = Exception('fake') self.assertIsNone(update_task.get_newer_source_revision()) self.assertEqual(0, self.mock.get_local_source_revision.call_count)