Esempio n. 1
0
  def testWithGclientSyncDisabled(self):
    actions = list(master.convert_action_items_to_cli((
      master.GclientSync,
      master.MakeStop),
      self.chromium_fyi))

    self.assertEquals(
        [a['cmd'] for a in actions],
        [
          ['make', 'stop'],
        ],
    )
Esempio n. 2
0
  def testWithGclientSyncDisabled(self):
    actions = list(master.convert_action_items_to_cli((
      master.GclientSync,
      master.MakeStop),
      self.chromium_fyi))

    self.assertEquals(
        [a['cmd'] for a in actions],
        [
          ['make', 'stop'],
        ],
    )
Esempio n. 3
0
def run_state_machine_pass(
    logger, matchlist, abs_master_directory, emergency_file, desired_state,
    transition_time_utc, enable_gclient_sync, prod, connection_timeout,
    hostname, builder_filters):
  # pragma: no cover
  if os.path.exists(os.path.join(abs_master_directory, emergency_file)):
    logger.error('%s detected in %s, aborting!',
        emergency_file, abs_master_directory)
    return 1

  if not master_hostname_is_valid(hostname, abs_master_directory, logger):
    return 1

  evidence = buildbot_state.collect_evidence(
      abs_master_directory,
      connection_timeout=connection_timeout,
      builder_filters=builder_filters)
  evidence['desired_buildbot_state'] = {
      'desired_state': desired_state,
      'transition_time_utc': transition_time_utc,
  }

  state, action_name, action_items = matchlist.execution_list(evidence)
  execution_list = list(
      master.convert_action_items_to_cli(
      action_items, abs_master_directory,
      enable_gclient=enable_gclient_sync))
  logger.info('%s: current state: %s', abs_master_directory, state)
  logger.info('%s: performing action: %s', abs_master_directory, action_name)

  if execution_list:
    if prod:
      logger.info('production run, executing:')
    else:
      logger.info('dry run, not executing:')
    for cmd in execution_list:
      logger.info('*  %s (in %s)', cmd['cmd'], cmd['cwd'])
      if prod:
        try:
          with daemon.flock(cmd['lockfile']):
            subprocess.check_call(
                [str(x) for x in cmd['cmd']],
                cwd=cmd['cwd'],
                close_fds=True)
        except daemon.LockAlreadyLocked:
          logger.warn('  lock on %s could not be acquired, no action taken.',
              cmd['lockfile'])
  else:
    logger.info('no action to be taken.')
  return 0
Esempio n. 4
0
def run_state_machine_pass(logger, matchlist, abs_master_directory,
                           emergency_file, desired_state, transition_time_utc,
                           enable_gclient_sync, prod, connection_timeout,
                           hostname):
    # pragma: no cover
    if os.path.exists(os.path.join(abs_master_directory, emergency_file)):
        logger.error('%s detected in %s, aborting!', emergency_file,
                     abs_master_directory)
        return 1

    if not master_hostname_is_valid(hostname, abs_master_directory, logger):
        return 1

    evidence = buildbot_state.collect_evidence(
        abs_master_directory, connection_timeout=connection_timeout)
    evidence['desired_buildbot_state'] = {
        'desired_state': desired_state,
        'transition_time_utc': transition_time_utc,
    }

    state, action_name, action_items = matchlist.execution_list(evidence)
    execution_list = list(
        master.convert_action_items_to_cli(action_items,
                                           abs_master_directory,
                                           enable_gclient=enable_gclient_sync))
    logger.info('%s: current state: %s', abs_master_directory, state)
    logger.info('%s: performing action: %s', abs_master_directory, action_name)

    if execution_list:
        if prod:
            logger.info('production run, executing:')
        else:
            logger.info('dry run, not executing:')
        for cmd in execution_list:
            logger.info('*  %s (in %s)', cmd['cmd'], cmd['cwd'])
            if prod:
                try:
                    with daemon.flock(cmd['lockfile']):
                        subprocess.check_call([str(x) for x in cmd['cmd']],
                                              cwd=cmd['cwd'],
                                              close_fds=True)
                except daemon.LockAlreadyLocked:
                    logger.warn(
                        '  lock on %s could not be acquired, no action taken.',
                        cmd['lockfile'])
    else:
        logger.info('no action to be taken.')
    return 0
Esempio n. 5
0
 def DISABLED_testWithGclientSyncEnabled(self):  # pragma: no cover
   actions = list(master.convert_action_items_to_cli((
     master.GclientSync,
     master.MakeStop,
     master.MakeWait,
     master.MakeStart,
     master.MakeNoNewBuilds),
     self.chromium_fyi,
     enable_gclient=True))
   self.assertEquals(
       [a['cmd'] for a in actions],
       [
         ['gclient', 'sync', '--reset', '--force', '--auto_rebase'],
         ['make', 'stop'],
         ['make', 'wait'],
         ['make', 'start'],
         ['make', 'no-new-builds'],
       ],
   )
Esempio n. 6
0
 def DISABLED_testWithGclientSyncEnabled(self):  # pragma: no cover
   actions = list(master.convert_action_items_to_cli((
     master.GclientSync,
     master.MakeStop,
     master.MakeWait,
     master.MakeStart,
     master.MakeNoNewBuilds),
     self.chromium_fyi,
     enable_gclient=True))
   self.assertEquals(
       [a['cmd'] for a in actions],
       [
         ['gclient', 'sync', '--reset', '--force', '--auto_rebase'],
         ['make', 'stop'],
         ['make', 'wait'],
         ['make', 'start'],
         ['make', 'no-new-builds'],
       ],
   )
Esempio n. 7
0
 def testInvalid(self):
   with self.assertRaises(ValueError):
     list(master.convert_action_items_to_cli((-100,), self.chromium_fyi))
Esempio n. 8
0
 def testInvalid(self):
   with self.assertRaises(ValueError):
     list(master.convert_action_items_to_cli((-100,), self.chromium_fyi))