def test_validate(self): self.settings.AddField( IntegerField( 'iterations', required=True, description='Number of iterations ' 'to run the test.')) self.settings.AddField( ListField( 'remote', default=[], required=True, description='A comma-separated list ' "of ip's of chromeos " 'devices to run experiments on.')) self.settings.AddField( ListField( 'email', default=[], description='Space-seperated' 'list of email addresses to ' 'send email to.')) # 'required' fields have not been assigned; should raise an exception. self.assertRaises(Exception, self.settings.Validate) self.settings.SetField('iterations', 2) self.settings.SetField('remote', 'x86-alex.cros', append=True) # Should run without exception now. self.settings.Validate()
def test_set_field(self): self.assertEqual(self.settings.fields, {}) self.settings.AddField( IntegerField( 'iterations', default=1, required=False, description='Number of iterations to run the ' 'test.')) res = self.settings.fields['iterations'] self.assertEqual(res.Get(), 1) self.settings.SetField('iterations', 10) res = self.settings.fields['iterations'] self.assertEqual(res.Get(), 10) # Setting a field that's not there raises an exception. self.assertRaises(Exception, self.settings.SetField, 'remote', 'lumpy1.cros') self.settings.AddField( ListField( 'remote', default=[], description="A comma-separated list of ip's of " 'chromeos devices to run ' 'experiments on.')) self.assertEqual(type(self.settings.fields), dict) self.assertEqual(len(self.settings.fields), 2) res = self.settings.fields['remote'] self.assertEqual(res.Get(), []) self.settings.SetField('remote', 'lumpy1.cros', append=True) self.settings.SetField('remote', 'lumpy2.cros', append=True) res = self.settings.fields['remote'] self.assertEqual(res.Get(), ['lumpy1.cros', 'lumpy2.cros'])
def __init__(self, name): super(LabelSettings, self).__init__(name, 'label') self.AddField( TextField('chromeos_image', required=False, description='The path to the image to run tests ' 'on, for local/custom-built images. See the ' "'build' option for official or trybot images.")) self.AddField( TextField( 'autotest_path', required=False, description='Autotest directory path relative to chroot which ' 'has autotest files for the image to run tests requiring autotest files' )) self.AddField( TextField('chromeos_root', description='The path to a chromeos checkout which ' 'contains a src/scripts directory. Defaults to ' 'the chromeos checkout which contains the ' 'chromeos_image.')) self.AddField( ListField('remote', description='A comma-separated list of IPs of chromeos' 'devices to run experiments on.')) self.AddField( TextField('image_args', required=False, default='', description='Extra arguments to pass to ' 'image_chromeos.py.')) self.AddField( TextField('cache_dir', default='', description='The cache dir for this image.')) self.AddField( TextField('compiler', default='gcc', description='The compiler used to build the ' 'ChromeOS image (gcc or llvm).')) self.AddField( TextField('chrome_src', description='The path to the source of chrome. ' 'This is used to run telemetry benchmarks. ' 'The default one is the src inside chroot.', required=False, default='')) self.AddField( TextField('build', description='The xbuddy specification for an ' 'official or trybot image to use for tests. ' "'/remote' is assumed, and the board is given " "elsewhere, so omit the '/remote/<board>/' xbuddy " 'prefix.', required=False, default=''))
def test_override(self): self.settings.AddField( ListField('email', default=[], description='Space-seperated' 'list of email addresses to send ' 'email to.')) global_settings = settings_factory.SettingsFactory().GetSettings( 'global', 'global') global_settings.SetField('email', '*****@*****.**', append=True) global_settings.SetField('email', '*****@*****.**', append=True) res = self.settings.GetField('email') self.assertEqual(res, []) self.settings.Override(global_settings) res = self.settings.GetField('email') self.assertEqual(res, ['*****@*****.**', '*****@*****.**'])
def __init__(self, name): super(GlobalSettings, self).__init__(name, 'global') self.AddField( TextField( 'name', description='The name of the experiment. Just an ' 'identifier.')) self.AddField( TextField( 'board', description='The target board for running ' 'experiments on, e.g. x86-alex.')) self.AddField( ListField( 'remote', description='A comma-separated list of IPs of ' 'chromeos devices to run experiments on.')) self.AddField( BooleanField( 'rerun_if_failed', description='Whether to re-run failed test runs ' 'or not.', default=False)) self.AddField( BooleanField( 'rm_chroot_tmp', default=False, description='Whether to remove the test_that ' 'result in the chroot.')) self.AddField( ListField( 'email', description='Space-separated list of email ' 'addresses to send email to.')) self.AddField( BooleanField( 'rerun', description='Whether to ignore the cache and ' 'for tests to be re-run.', default=False)) self.AddField( BooleanField( 'same_specs', default=True, description='Ensure cached runs are run on the ' 'same kind of devices which are specified as a ' 'remote.')) self.AddField( BooleanField( 'same_machine', default=False, description='Ensure cached runs are run on the ' 'same remote.')) self.AddField( BooleanField( 'use_file_locks', default=False, description='Whether to use the file locks ' 'mechanism (deprecated) instead of the AFE ' 'server lock mechanism.')) self.AddField( IntegerField( 'iterations', required=False, default=0, description='Number of iterations to run all tests. ' 'If not set, will run each benchmark test the optimum number of ' 'times to get a stable result.')) self.AddField( TextField( 'chromeos_root', description='The path to a chromeos checkout which ' 'contains a src/scripts directory. Defaults to ' 'the chromeos checkout which contains the ' 'chromeos_image.')) self.AddField( TextField( 'logging_level', default='average', description='The level of logging desired. ' "Options are 'quiet', 'average', and 'verbose'.")) self.AddField( IntegerField( 'acquire_timeout', default=0, description='Number of seconds to wait for ' 'machine before exit if all the machines in ' 'the experiment file are busy. Default is 0.')) self.AddField( TextField( 'perf_args', default='', description='The optional profile command. It ' 'enables perf commands to record perforamance ' 'related counters. It must start with perf ' 'command record or stat followed by arguments.')) self.AddField( TextField( 'cache_dir', default='', description='The abs path of cache dir. ' 'Default is /home/$(whoami)/cros_scratch.')) self.AddField( BooleanField( 'cache_only', default=False, description='Whether to use only cached ' 'results (do not rerun failed tests).')) self.AddField( BooleanField( 'no_email', default=False, description='Whether to disable the email to ' 'user after crosperf finishes.')) self.AddField( BooleanField( 'json_report', default=False, description='Whether to generate a json version ' 'of the report, for archiving.')) self.AddField( BooleanField( 'show_all_results', default=False, description='When running Telemetry tests, ' 'whether to all the results, instead of just ' 'the default (summary) results.')) self.AddField( TextField( 'share_cache', default='', description='Path to alternate cache whose data ' 'you want to use. It accepts multiple directories ' 'separated by a ",".')) self.AddField( TextField('results_dir', default='', description='The results dir.')) self.AddField( TextField( 'locks_dir', default='', description='An alternate directory to use for ' 'storing/checking machine locks. Using this field ' 'automatically sets use_file_locks to True.\n' 'WARNING: If you use your own locks directory, ' 'there is no guarantee that someone else might not ' 'hold a lock on the same machine in a different ' 'locks directory.')) self.AddField( TextField( 'chrome_src', description='The path to the source of chrome. ' 'This is used to run telemetry benchmarks. ' 'The default one is the src inside chroot.', required=False, default='')) self.AddField( IntegerField( 'retries', default=0, description='Number of times to retry a ' 'benchmark run.'))