mirror of
				https://github.com/ARM-software/workload-automation.git
				synced 2025-10-31 15:12:25 +00:00 
			
		
		
		
	Merge pull request #497 from bjackman/phone-home
Add feature to mark workloads unsafe for confidential devices
This commit is contained in:
		| @@ -783,6 +783,19 @@ class RunConfiguration(Configuration): | |||||||
|             export the output to an exeternal location. |             export the output to an exeternal location. | ||||||
|             ''', |             ''', | ||||||
|         ), |         ), | ||||||
|  |         ConfigurationPoint( | ||||||
|  |             'allow_phone_home', | ||||||
|  |             kind=bool, default=True, | ||||||
|  |             description=''' | ||||||
|  |             Setting this to ``False`` prevents running any workloads that are marked | ||||||
|  |             with 'phones_home', meaning they are at risk of exposing information | ||||||
|  |             about the device to the outside world. For example, some benchmark | ||||||
|  |             applications upload device data to a database owned by the | ||||||
|  |             maintainers. | ||||||
|  |  | ||||||
|  |             This can be used to minimise the risk of accidentally running such | ||||||
|  |             workloads when testing confidential devices. | ||||||
|  |             '''), | ||||||
|     ] |     ] | ||||||
|     configuration = {cp.name: cp for cp in config_points + meta_data} |     configuration = {cp.name: cp for cp in config_points + meta_data} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -411,6 +411,13 @@ class Runner(object): | |||||||
|             self.check_job(job) |             self.check_job(job) | ||||||
|  |  | ||||||
|     def do_run_job(self, job, context): |     def do_run_job(self, job, context): | ||||||
|  |         rc = self.context.cm.run_config | ||||||
|  |         if job.workload.phones_home and not rc.allow_phone_home: | ||||||
|  |             self.logger.warning('Skipping job {} ({}) due to allow_phone_home=False' | ||||||
|  |                                 .format(job.id, job.workload.name)) | ||||||
|  |             job.set_status(Status.SKIPPED) | ||||||
|  |             return | ||||||
|  |  | ||||||
|         job.set_status(Status.RUNNING) |         job.set_status(Status.RUNNING) | ||||||
|         self.send(signal.JOB_STARTED) |         self.send(signal.JOB_STARTED) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,6 +39,17 @@ class Workload(TargetedPlugin): | |||||||
|  |  | ||||||
|     kind = 'workload' |     kind = 'workload' | ||||||
|  |  | ||||||
|  |     phones_home = False | ||||||
|  |     """ | ||||||
|  |     Set this to True to mark that this workload poses a risk of exposing | ||||||
|  |     information to the outside world about the device it runs on. An example of | ||||||
|  |     this would be a benchmark application that sends scores and device data to a | ||||||
|  |     database owned by the maintainer. | ||||||
|  |  | ||||||
|  |     The user can then set allow_phone_home=False in their configuration to | ||||||
|  |     prevent this workload from being run accidentally. | ||||||
|  |     """ | ||||||
|  |  | ||||||
|     def init_resources(self, context): |     def init_resources(self, context): | ||||||
|         """ |         """ | ||||||
|         This method may be used to perform early resource discovery and |         This method may be used to perform early resource discovery and | ||||||
|   | |||||||
| @@ -98,6 +98,8 @@ class Geekbench(ApkUiautoWorkload): | |||||||
|  |  | ||||||
|     is_corporate = False |     is_corporate = False | ||||||
|  |  | ||||||
|  |     phones_home = True | ||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def activity(self): |     def activity(self): | ||||||
|         return self.versions[self.version]['activity'] |         return self.versions[self.version]['activity'] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user