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)
示例#3
0
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)