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')
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')
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()
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
def setUp(self): self.buildinfo = buildinfo.BuildInfo() # filesystem self.filesystem = fake_filesystem.FakeFilesystem() self.cb = builder.ConfigBuilder(self.buildinfo) self.cb._task_list = []
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/%\%' ]
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()
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()
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)
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'
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)
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'
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)
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)
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()
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()
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)
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)
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)
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)
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)
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))
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)
def setUp(self): self.buildinfo = buildinfo.BuildInfo()
def setUp(self): super(PowershellTest, self).setUp() buildinfo.constants.FLAGS.config_server = 'https://glazier/' self.bi = buildinfo.BuildInfo()
def setUp(self): super(PathsTest, self).setUp() self.buildinfo = buildinfo.BuildInfo()
def setUp(self): super(BaseTest, self).setUp() self.buildinfo = buildinfo.BuildInfo() self.cb = base.ConfigBase(self.buildinfo)
def __init__(self): logs.Setup() self._build_info = buildinfo.BuildInfo()
def setUp(self): super(ConfigBuilderTest, self).setUp() self.buildinfo = buildinfo.BuildInfo() self.cb = builder.ConfigBuilder(self.buildinfo) self.cb._task_list = []
def setUp(self): self.buildinfo = buildinfo.BuildInfo() self.cb = base.ConfigBase(self.buildinfo)