1*3c7ae9deSAndroid Build Coastguard Worker# Contains all of the metric reporting functions for the Canary Wrappers 2*3c7ae9deSAndroid Build Coastguard Worker 3*3c7ae9deSAndroid Build Coastguard Worker# Needs to be installed prior to running 4*3c7ae9deSAndroid Build Coastguard Workerimport psutil 5*3c7ae9deSAndroid Build Coastguard Worker 6*3c7ae9deSAndroid Build Coastguard Worker 7*3c7ae9deSAndroid Build Coastguard Workercache_cpu_psutil_process = None 8*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_cpu_usage(psutil_process : psutil.Process): 9*3c7ae9deSAndroid Build Coastguard Worker global cache_cpu_psutil_process 10*3c7ae9deSAndroid Build Coastguard Worker 11*3c7ae9deSAndroid Build Coastguard Worker try: 12*3c7ae9deSAndroid Build Coastguard Worker if (psutil_process == None): 13*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) 14*3c7ae9deSAndroid Build Coastguard Worker return None 15*3c7ae9deSAndroid Build Coastguard Worker # We always need to skip the first CPU poll 16*3c7ae9deSAndroid Build Coastguard Worker if (cache_cpu_psutil_process != psutil_process): 17*3c7ae9deSAndroid Build Coastguard Worker psutil.cpu_percent(interval=None) 18*3c7ae9deSAndroid Build Coastguard Worker cache_cpu_psutil_process = psutil_process 19*3c7ae9deSAndroid Build Coastguard Worker return None 20*3c7ae9deSAndroid Build Coastguard Worker return psutil.cpu_percent(interval=None) 21*3c7ae9deSAndroid Build Coastguard Worker except Exception as e: 22*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - exception occurred gathering metrics!") 23*3c7ae9deSAndroid Build Coastguard Worker print ("Exception: " + str(e), flush=True) 24*3c7ae9deSAndroid Build Coastguard Worker return None 25*3c7ae9deSAndroid Build Coastguard Worker 26*3c7ae9deSAndroid Build Coastguard Worker# Note: This value is in BYTES. 27*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_memory_usage_value(psutil_process : psutil.Process): 28*3c7ae9deSAndroid Build Coastguard Worker try: 29*3c7ae9deSAndroid Build Coastguard Worker if (psutil_process == None): 30*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) 31*3c7ae9deSAndroid Build Coastguard Worker return None 32*3c7ae9deSAndroid Build Coastguard Worker return psutil.virtual_memory()[3] 33*3c7ae9deSAndroid Build Coastguard Worker except Exception as e: 34*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - exception occurred gathering metrics!") 35*3c7ae9deSAndroid Build Coastguard Worker print ("Exception: " + str(e), flush=True) 36*3c7ae9deSAndroid Build Coastguard Worker return None 37*3c7ae9deSAndroid Build Coastguard Worker 38*3c7ae9deSAndroid Build Coastguard Worker 39*3c7ae9deSAndroid Build Coastguard Workerdef get_metric_total_memory_usage_percent(psutil_process : psutil.Process): 40*3c7ae9deSAndroid Build Coastguard Worker try: 41*3c7ae9deSAndroid Build Coastguard Worker if (psutil_process == None): 42*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - No psutil.process passed! Cannot gather metric!", flush=True) 43*3c7ae9deSAndroid Build Coastguard Worker return None 44*3c7ae9deSAndroid Build Coastguard Worker return psutil.virtual_memory()[2] 45*3c7ae9deSAndroid Build Coastguard Worker except Exception as e: 46*3c7ae9deSAndroid Build Coastguard Worker print ("ERROR - exception occurred gathering metrics!") 47*3c7ae9deSAndroid Build Coastguard Worker print ("Exception: " + str(e), flush=True) 48*3c7ae9deSAndroid Build Coastguard Worker return None 49