Ejemplo n.º 1
0
 def testLogFatal(self):
     with self.assertRaises(LogFatalError):
         autobuild._LogFatal('image failed',
                             buildinfo.BuildInfo(),
                             collect=False)
     autobuild.logging.fatal.assert_called_with(f'{autobuild._FAILURE_MSG}',
                                                'image failed')
Ejemplo n.º 2
0
 def testChangeServer(self):
   build_info = buildinfo.BuildInfo()
   d = installer.ChangeServer(
       ['http://new-server.example.com', '/new/conf/root'], build_info)
   self.assertRaises(installer.ServerChangeEvent, d.Run)
   self.assertEqual(build_info.ConfigServer(), 'http://new-server.example.com')
   self.assertEqual(build_info.ActiveConfigPath(), '/new/conf/root')
Ejemplo n.º 3
0
 def testGetDownloadErr(self, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     remote = '@glazier/1.0/autobuild.par'
     local = r'/tmp/autobuild.par'
     down_file.side_effect = files.download.DownloadError('Error')
     with self.assertRaises(files.ActionError):
         files.Get([[remote, local]], buildinfo.BuildInfo()).Run()
Ejemplo n.º 4
0
 def __init__(self, method, domain_name, ou=None):
     self._build_info = buildinfo.BuildInfo()
     self._domain_name = domain_name
     self._domain_ou = ou
     self._method = method
     self._password = None
     self._username = None
Ejemplo n.º 5
0
  def setUp(self):

    self.buildinfo = buildinfo.BuildInfo()
    # filesystem
    self.filesystem = fake_filesystem.FakeFilesystem()
    self.cb = builder.ConfigBuilder(self.buildinfo)
    self.cb._task_list = []
Ejemplo n.º 6
0
 def setUp(self):
     super(GooGetTest, self).setUp()
     self.install = googet.GooGetInstall()
     self.buildinfo = buildinfo.BuildInfo()
     self.flags = [
         'whatever', '-reinstall', 'http://example.com/team-%',
         r'http://example.co.uk/secure-%\%', r'http://%.jp/%\%'
     ]
Ejemplo n.º 7
0
 def testGetMkdirErr(self, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     remote = '@glazier/1.0/autobuild.par'
     self.filesystem.create_file('/directory')
     down_file.side_effect = files.download.DownloadError('Error')
     with self.assertRaises(files.ActionError):
         files.Get([[remote, '/directory/file.txt']],
                   buildinfo.BuildInfo()).Run()
Ejemplo n.º 8
0
    def testExecute(self, cache, split, eb):
        bi = buildinfo.BuildInfo()
        cache.side_effect = iter(['cmd.exe /c', 'explorer.exe'])
        eb.return_value = 0
        e = files.Execute([['cmd.exe /c', [0]], ['explorer.exe']], bi)
        e.Run()
        self.assertTrue(split.called)

        # success codes
        cache.side_effect = None
        cache.return_value = 'cmd.exe /c script.bat'
        e = files.Execute([['cmd.exe /c script.bat', [2, 4]]], bi)
        with self.assertRaises(files.ActionError):
            e.Run()
        eb.return_value = 4
        e.Run()

        # reboot codes - no retry
        e = files.Execute([['cmd.exe /c script.bat', [0], [2, 4]]], bi)
        with self.assertRaises(files.RestartEvent) as cm:
            e.Run()
        exception = cm.exception
        self.assertEqual(exception.retry_on_restart, False)

        # reboot codes -  retry
        e = files.Execute([['cmd.exe /c #script.bat', [0], [2, 4], True]], bi)
        with self.assertRaises(files.RestartEvent) as cm:
            e.Run()
        exception = cm.exception
        self.assertEqual(exception.retry_on_restart, True)
        cache.assert_called_with(mock.ANY, 'cmd.exe /c #script.bat', bi)

        # Shell
        files.Execute([['cmd.exe /c #script.bat', [4], [0], True, True]],
                      bi).Run()
        eb.assert_called_with(mock.ANY, mock.ANY, [4, 0], shell=True)

        # KeyboardInterrupt
        eb.side_effect = KeyboardInterrupt
        with self.assertRaises(files.ActionError):
            e.Run()

        # Execute Error
        eb.side_effect = files.execute.Error
        with self.assertRaises(files.ActionError):
            e.Run()

        # ValueError
        split.side_effect = ValueError
        with self.assertRaises(files.ActionError):
            e.Run()

        # Cache error
        cache.side_effect = files.cache.CacheError
        with self.assertRaises(files.ActionError):
            e.Run()
Ejemplo n.º 9
0
 def testGetFromLocal(self, down_file, bin_path, rel_path):
     rel_path.return_value = 'C:/glazier/conf'
     bin_path.return_value = 'https://glazier-server.example.com/bin/'
     down_file.return_value = True
     files.Get([['#script.ps1', '/tmp/autobuild.par']],
               buildinfo.BuildInfo()).Run()
     down_file.assert_called_with(mock.ANY,
                                  'C:/glazier/conf/script.ps1',
                                  '/tmp/autobuild.par',
                                  show_progress=True)
Ejemplo n.º 10
0
 def setUp(self):
     self.buildinfo = buildinfo.BuildInfo()
     # filesystem
     self.filesystem = fake_filesystem.FakeFilesystem()
     runner.os = fake_filesystem.FakeOsModule(self.filesystem)
     runner.open = fake_filesystem.FakeFileOpen(self.filesystem)
     runner.shutil = fake_filesystem_shutil.FakeShutilModule(
         self.filesystem)
     self.cr = runner.ConfigRunner(self.buildinfo)
     self.cr._task_list_path = '/tmp/task_list.yaml'
Ejemplo n.º 11
0
 def testGetNoHash(self, verify, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     test_sha256 = (
         '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
     self.filesystem.create_file(r'/tmp/autobuild.par.sha256',
                                 contents=test_sha256)
     down_file.return_value = True
     files.Get([['@glazier/1.0/autobuild.par', r'/tmp/autobuild.par', '']],
               buildinfo.BuildInfo()).Run()
     self.assertFalse(verify.called)
Ejemplo n.º 12
0
 def setUp(self):
   super(ConfigRunnerTest, self).setUp()
   self.buildinfo = buildinfo.BuildInfo()
   constants.FLAGS.verify_urls = None
   # filesystem
   self.filesystem = fake_filesystem.FakeFilesystem()
   runner.os = fake_filesystem.FakeOsModule(self.filesystem)
   runner.open = fake_filesystem.FakeFileOpen(self.filesystem)
   runner.shutil = fake_filesystem_shutil.FakeShutilModule(self.filesystem)
   self.cr = runner.ConfigRunner(self.buildinfo)
   self.cr._task_list_path = '/tmp/task_list.yaml'
Ejemplo n.º 13
0
 def testGetHashMatch(self, verify, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     local = r'/tmp/autobuild.par'
     test_sha256 = (
         '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
     self.filesystem.create_file(r'/tmp/autobuild.par.sha256',
                                 contents=test_sha256)
     down_file.return_value = True
     verify.return_value = True
     files.Get([['@glazier/1.0/autobuild.par', local, test_sha256]],
               buildinfo.BuildInfo()).Run()
     verify.assert_called_with(mock.ANY, local, test_sha256)
Ejemplo n.º 14
0
 def testGet(self, verify, down_file, r_path):
   bi = buildinfo.BuildInfo()
   r_path.return_value = 'https://glazier-server.example.com/'
   remote = '@glazier/1.0/autobuild.par'
   local = r'/tmp/autobuild.par'
   test_sha256 = (
       '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
   self.filesystem.create_file(
       r'/tmp/autobuild.par.sha256', contents=test_sha256)
   down_file.return_value = True
   conf = [[remote, local]]
   g = files.Get(conf, bi)
   g.Run()
   down_file.assert_called_with(
       mock.ANY,
       'https://glazier-server.example.com/bin/glazier/1.0/autobuild.par',
       local,
       show_progress=True)
   # Relative Paths
   conf = [['autobuild.bat', '/tmp/autobuild.bat']]
   g = files.Get(conf, bi)
   g.Run()
   down_file.assert_called_with(
       mock.ANY,
       'https://glazier-server.example.com/autobuild.bat',
       '/tmp/autobuild.bat',
       show_progress=True)
   down_file.return_value = None
   # DownloadError
   err = files.download.DownloadError('Error')
   down_file.side_effect = err
   g = files.Get([[remote, local]], bi)
   self.assertRaises(files.ActionError, g.Run)
   down_file.side_effect = None
   # file_util.Error
   self.filesystem.create_file('/directory')
   g = files.Get([[remote, '/directory/file.txt']], bi)
   self.assertRaises(files.ActionError, g.Run)
   # good hash
   verify.return_value = True
   g = files.Get([[remote, local, test_sha256]], bi)
   g.Run()
   verify.assert_called_with(mock.ANY, local, test_sha256)
   # bad hash
   verify.return_value = False
   g = files.Get([[remote, local, test_sha256]], bi)
   self.assertRaises(files.ActionError, g.Run)
   # none hash
   verify.reset_mock()
   conf = [[remote, local, '']]
   g = files.Get(conf, bi)
   g.Run()
   self.assertFalse(verify.called)
Ejemplo n.º 15
0
 def setUp(self):
   super(BuildInfoTest, self).setUp()
   # fake filesystem
   self.filesystem = fake_filesystem.FakeFilesystem()
   self.filesystem.create_dir('/dev')
   buildinfo.os = fake_filesystem.FakeOsModule(self.filesystem)
   buildinfo.open = fake_filesystem.FakeFileOpen(self.filesystem)
   # setup
   mock_wmi = mock.patch.object(
       buildinfo.hw_info.wmi_query, 'WMIQuery', autospec=True)
   self.addCleanup(mock_wmi.stop)
   mock_wmi.start()
   self.buildinfo = buildinfo.BuildInfo()
Ejemplo n.º 16
0
 def testGetHashMismatch(self, verify, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     test_sha256 = (
         '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
     self.filesystem.create_file(r'/tmp/autobuild.par.sha256',
                                 contents=test_sha256)
     down_file.return_value = True
     verify.return_value = False
     with self.assertRaises(files.ActionError):
         files.Get([[
             '@glazier/1.0/autobuild.par', r'/tmp/autobuild.par',
             test_sha256
         ]], buildinfo.BuildInfo()).Run()
Ejemplo n.º 17
0
 def testPSScript(self, cache, run):
   bi = buildinfo.BuildInfo()
   cache.return_value = r'C:\Cache\Some-Script.ps1'
   ps = powershell.PSScript(['#Some-Script.ps1', ['-Flag1']], bi)
   ps.Run()
   cache.assert_called_with(mock.ANY, '#Some-Script.ps1', bi)
   run.assert_called_with(
       mock.ANY, r'C:\Cache\Some-Script.ps1', args=['-Flag1'])
   run.side_effect = powershell.powershell.PowerShellError
   self.assertRaises(powershell.ActionError, ps.Run)
   # Cache error
   run.side_effect = None
   cache.side_effect = powershell.cache.CacheError
   self.assertRaises(powershell.ActionError, ps.Run)
Ejemplo n.º 18
0
 def testGetRelativePath(self, down_file, r_path):
     r_path.return_value = 'https://glazier-server.example.com/'
     self.filesystem.create_file(
         r'/tmp/autobuild.par.sha256',
         contents=
         '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
     down_file.return_value = True
     files.Get([['autobuild.bat', '/tmp/autobuild.bat']],
               buildinfo.BuildInfo()).Run()
     down_file.assert_called_with(
         mock.ANY,
         'https://glazier-server.example.com/autobuild.bat',
         '/tmp/autobuild.bat',
         show_progress=True)
Ejemplo n.º 19
0
 def testGetFromBin(self, down_file, bin_path, rel_path):
     rel_path.return_value = 'https://glazier-server.example.com/'
     bin_path.return_value = 'https://glazier-server.example.com/bin/'
     test_sha256 = (
         '58157bf41ce54731c0577f801035d47ec20ed16a954f10c29359b8adedcae800')
     self.filesystem.create_file(r'/tmp/autobuild.par.sha256',
                                 contents=test_sha256)
     down_file.return_value = True
     files.Get([['@glazier/1.0/autobuild.par', '/tmp/autobuild.par']],
               buildinfo.BuildInfo()).Run()
     down_file.assert_called_with(
         mock.ANY,
         'https://glazier-server.example.com/bin/glazier/1.0/autobuild.par',
         '/tmp/autobuild.par',
         show_progress=True)
Ejemplo n.º 20
0
    def testExecute(self, call, cache, sleep):
        bi = buildinfo.BuildInfo()
        cache.side_effect = iter(['cmd.exe /c', 'explorer.exe'])
        e = files.Execute([['cmd.exe /c', [0]], ['explorer.exe']], bi)
        call.return_value = 0
        e.Run()
        call.assert_has_calls([
            mock.call('cmd.exe /c', shell=True),
            mock.call('explorer.exe', shell=True)
        ])
        self.assertTrue(sleep.called)

        # success codes
        cache.side_effect = None
        cache.return_value = 'cmd.exe /c script.bat'
        e = files.Execute([['cmd.exe /c script.bat', [2, 4]]], bi)
        self.assertRaises(files.ActionError, e.Run)
        call.return_value = 4
        e.Run()

        # reboot codes - no retry
        e = files.Execute([['cmd.exe /c script.bat', [0], [2, 4]]], bi)
        with self.assertRaises(files.RestartEvent) as r_evt:
            e.Run()
            self.assertEqual(r_evt.retry_on_restart, False)

        # reboot codes -  retry
        e = files.Execute([['cmd.exe /c #script.bat', [0], [2, 4], True]], bi)
        with self.assertRaises(files.RestartEvent) as r_evt:
            e.Run()
            self.assertEqual(r_evt.retry_on_restart, True)
        cache.assert_called_with(mock.ANY, 'cmd.exe /c #script.bat', bi)
        call.assert_called_with('cmd.exe /c script.bat', shell=True)

        # WindowsError
        files.WindowsError = Exception
        call.side_effect = files.WindowsError
        self.assertRaises(files.ActionError, e.Run)
        # KeyboardInterrupt
        call.side_effect = KeyboardInterrupt
        e = files.Execute([['cmd.exe /c', [0]], ['explorer.exe']], bi)
        e.Run()
        # Cache error
        call.side_effect = None
        call.return_value = 0
        cache.side_effect = files.cache.CacheError
        self.assertRaises(files.ActionError, e.Run)
Ejemplo n.º 21
0
    def testExecute(self, cache, sleep, mocked_popen):
        mocked_popen_instance = mocked_popen.return_value
        mocked_popen_instance.returncode = 0
        mocked_popen_instance.stdout = io.StringIO(u'Foo\n')
        bi = buildinfo.BuildInfo()
        cache.side_effect = iter(['cmd.exe /c', 'explorer.exe'])
        e = files.Execute([['cmd.exe /c', [0]], ['explorer.exe']], bi)
        e.Run()
        self.assertTrue(sleep.called)

        # success codes
        cache.side_effect = None
        cache.return_value = 'cmd.exe /c script.bat'
        e = files.Execute([['cmd.exe /c script.bat', [2, 4]]], bi)
        self.assertRaises(files.ActionError, e.Run)
        mocked_popen_instance.returncode = 4
        e.Run()

        # reboot codes - no retry
        e = files.Execute([['cmd.exe /c script.bat', [0], [2, 4]]], bi)
        with self.assertRaises(files.RestartEvent) as r_evt:
            e.Run()
            self.assertEqual(r_evt.retry_on_restart, False)

        # reboot codes -  retry
        e = files.Execute([['cmd.exe /c #script.bat', [0], [2, 4], True]], bi)
        with self.assertRaises(files.RestartEvent) as r_evt:
            e.Run()
            self.assertEqual(r_evt.retry_on_restart, True)
        cache.assert_called_with(mock.ANY, 'cmd.exe /c #script.bat', bi)
        self.assertTrue(sleep.called)

        # KeyboardInterrupt
        mocked_popen_instance.returncode = 0
        mocked_popen_instance.side_effect = KeyboardInterrupt
        e = files.Execute([['cmd.exe /c', [0]], ['explorer.exe']], bi)
        e.Run()

        # WindowsError
        files.WindowsError = Exception
        mocked_popen.return_value = files.WindowsError
        self.assertRaises(files.ActionError, e.Run)

        # Cache error
        mocked_popen_instance.return_value = None
        cache.side_effect = files.cache.CacheError
        self.assertRaises(files.ActionError, e.Run)
Ejemplo n.º 22
0
def _base_title() -> Optional[Text]:
    """Concatenate base values for the title based on build information.

  Returns:
    The base text for the title as a string.
  """
    build_info = buildinfo.BuildInfo()
    getid = build_info.ImageID()
    base = []

    if winpe.check_winpe():
        base.append('WinPE')
    if constants.FLAGS.config_root_path:
        base.append(constants.FLAGS.config_root_path.strip('/'))
    if getid:
        base.append(getid)

    # Convert list to a string, using map() to account for nonetypes
    return ' - '.join(map(str, base))
Ejemplo n.º 23
0
def Setup():
    """Sets up the logging environment."""
    build_info = buildinfo.BuildInfo()
    log_file = r'%s\%s' % (GetLogsPath(), constants.BUILD_LOG_FILE)
    file_util.CreateDirectories(log_file)

    debug_fmt = ('%(levelname).1s%(asctime)s.%(msecs)03d %(process)d {} '
                 '%(filename)s:%(lineno)d] %(message)s').format(
                     build_info.ImageID())
    info_fmt = '%(levelname).1s%(asctime)s %(filename)s:%(lineno)d] %(message)s'

    debug_formatter = logging.Formatter(debug_fmt, datefmt=DATE_FMT)
    info_formatter = logging.Formatter(info_fmt, datefmt=DATE_FMT)

    # Set default logger
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    # Create empty list of handlers to enable multiple streams.
    logger.handlers = []

    # Create console handler and set level
    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)
    ch.setFormatter(info_formatter)
    logger.addHandler(ch)

    # Create file handler and set level
    try:
        fh = logging.FileHandler(log_file)
    except IOError:
        raise LogError('Failed to open log file %s.' % log_file)
    fh.setLevel(logging.DEBUG)
    fh.setFormatter(debug_formatter)
    logger.addHandler(fh)

    # Create Event Log handler and set level
    if not winpe.check_winpe():
        eh = logging.handlers.NTEventLogHandler('GlazierBuildLog')
        eh.setLevel(logging.DEBUG)
        eh.setFormatter(debug_formatter)
        logger.addHandler(eh)
Ejemplo n.º 24
0
 def setUp(self):
     self.buildinfo = buildinfo.BuildInfo()
Ejemplo n.º 25
0
 def setUp(self):
     super(PowershellTest, self).setUp()
     buildinfo.constants.FLAGS.config_server = 'https://glazier/'
     self.bi = buildinfo.BuildInfo()
Ejemplo n.º 26
0
 def setUp(self):
     super(PathsTest, self).setUp()
     self.buildinfo = buildinfo.BuildInfo()
Ejemplo n.º 27
0
 def setUp(self):
   super(BaseTest, self).setUp()
   self.buildinfo = buildinfo.BuildInfo()
   self.cb = base.ConfigBase(self.buildinfo)
Ejemplo n.º 28
0
 def __init__(self):
     logs.Setup()
     self._build_info = buildinfo.BuildInfo()
Ejemplo n.º 29
0
 def setUp(self):
     super(ConfigBuilderTest, self).setUp()
     self.buildinfo = buildinfo.BuildInfo()
     self.cb = builder.ConfigBuilder(self.buildinfo)
     self.cb._task_list = []
Ejemplo n.º 30
0
 def setUp(self):
     self.buildinfo = buildinfo.BuildInfo()
     self.cb = base.ConfigBase(self.buildinfo)