def test_import_config_set_without_cs(self):
     self.mock_get_log()
     self.mock(gitiles_import, '_import_revision', mock.Mock())
     gitiles_import._import_config_set(
         'config_set',
         gitiles.Location.parse('https://localhost/project/+/master/x'))
     self.assertTrue(gitiles_import._import_revision.called)
Exemple #2
0
  def test_import_config_set(self):
    self.mock_get_log()
    self.mock_get_archive()

    gitiles_import._import_config_set(
        'config_set', gitiles.Location.parse('https://localhost/project'))

    gitiles.get_log.assert_called_once_with(
        'localhost', 'project', 'HEAD', '/', limit=1,
        deadline=15)

    saved_config_set = storage.ConfigSet.get_by_id('config_set')
    self.assertIsNotNone(saved_config_set)
    self.assertEqual(
        saved_config_set.latest_revision,
        'a1841f40264376d170269ee9473ce924b7c2c4e9')
    self.assertTrue(storage.Revision.get_by_id(
        'a1841f40264376d170269ee9473ce924b7c2c4e9',
        parent=saved_config_set.key))
    self.assert_attempt(True, 'Imported')

    # Import second time, import_revision should not be called.
    self.mock(gitiles_import, '_import_revision', mock.Mock())
    gitiles_import._import_config_set(
        'config_set', gitiles.Location.parse('https://localhost/project'))
    self.assertFalse(gitiles_import._import_revision.called)
    self.assert_attempt(True, 'Up-to-date')
Exemple #3
0
  def test_import_config_set_with_log_failed(self):
    self.mock(gitiles_import, '_import_revision', mock.Mock())
    self.mock(gitiles, 'get_log', mock.Mock(return_value = None))
    with self.assertRaises(gitiles_import.NotFoundError):
      gitiles_import._import_config_set(
          'config_set',
          gitiles.Location.parse('https://localhost/project'))

    self.assert_attempt(False, 'Could not load commit log', no_revision=True)
Exemple #4
0
  def test_deadline_exceeded(self):
    self.mock_get_log()
    self.mock(gitiles, 'get_archive', mock.Mock())
    gitiles.get_archive.side_effect = urlfetch_errors.DeadlineExceededError

    with self.assertRaises(gitiles_import.Error):
      gitiles_import._import_config_set(
          'config_set',
          gitiles.Location.parse('https://localhost/project'))
    self.assert_attempt(False, 'Could not import: deadline exceeded')
Exemple #5
0
  def test_import_config_set_with_auth_error(self):
    self.mock(gitiles, 'get_log', mock.Mock())
    gitiles.get_log.side_effect = net.AuthError('Denied', 500, 'Denied')

    with self.assertRaises(gitiles_import.Error):
      gitiles_import._import_config_set(
          'config_set',
          gitiles.Location.parse('https://localhost/project'))
    self.assert_attempt(
        False, 'Could not import: permission denied', no_revision=True)
 def test_import_config_set_without_force_update(self):
     self.mock_get_log()
     storage.ConfigSet(
         id='config_set',
         latest_revision='a1841f40264376d170269ee9473ce924b7c2c4e9',
         latest_revision_url='https://localhost/project/+/deadbeef/x',
         latest_revision_committer_email=self.john.email,
         latest_revision_time=self.john.time,
         location='https://localhost/project/+/master/x',
         version=2,
     ).put()
     self.mock(gitiles_import, '_import_revision', mock.Mock())
     gitiles_import._import_config_set(
         'config_set',
         gitiles.Location.parse('https://localhost/project/+/master/x'))
     self.assertFalse(gitiles_import._import_revision.called)
 def test_deadline_exceeded(self):
     self.mock_get_log()
     self.mock(gitiles, 'get_archive', mock.Mock())
     gitiles.get_archive.side_effect = urlfetch_errors.DeadlineExceededError
     storage.ConfigSet(
         location='https://localhost/project',
         latest_revision='deadbeef',
         version=0,
         id='config_set',
     ).put()
     with self.assertRaises(gitiles_import.Error):
         gitiles_import._import_config_set(
             'config_set',
             gitiles.Location.parse('https://localhost/project'),
             self.test_project_id)
     self.assert_attempt(False, 'Could not import: deadline exceeded')
    def test_import_existing_config_set_with_log_failed(self):
        self.mock(gitiles_import, '_import_revision', mock.Mock())
        self.mock(gitiles, 'get_log', mock.Mock(return_value=None))

        cs = storage.ConfigSet(
            id='config_set',
            latest_revision='deadbeef',
            latest_revision_url='https://localhost/project/+/deadbeef/x',
            latest_revision_committer_email=self.john.email,
            latest_revision_time=self.john.time,
            location='https://localhost/project/+/master/x',
        )
        cs.put()

        with self.assertRaises(gitiles_import.HistoryDisappeared):
            gitiles_import._import_config_set(
                'config_set',
                gitiles.Location.parse('https://localhost/project'))

        self.assertIsNone(storage.last_import_attempt_key('config_set').get())

        cs_fresh = cs.key.get()
        self.assertEqual(cs.latest_revision, cs_fresh.latest_revision)