def handle_request(self, action): if isinstance(action, ReportStatistics): for a in get_accumulators().values(): a.log() else: for a in get_accumulators().values(): a.clear()
def _snap_accumulators(self, **kwargs): all_acc_dict = {} for acc_name, acc in get_accumulators().iteritems(): acc_dict = {} acc_name = acc_name.split(".")[-1] acc_name = acc_name[:30] all_acc_dict[acc_name] = acc_dict for key in acc.keys(): count = acc.get_count(key) if count: acc_dict[key] = dict( _key=key, count=count, sum=str(acc.get_average(key) * count), min=str(acc.get_min(key)), avg=str(acc.get_average(key)), max=str(acc.get_max(key)), sdev=str(acc.get_standard_deviation(key)) ) return all_acc_dict
def dump_accumulators_as_xlsx(self, filename=None): dtstr = datetime.datetime.today().strftime('%Y%m%d_%H%M%S') all_acc_dict = {} for acc_name, acc in get_accumulators().iteritems(): acc_dict = {} acc_name = acc_name.split(".")[-1] acc_name = acc_name[:30] all_acc_dict[acc_name] = acc_dict for key in acc.keys(): count = acc.get_count(key) if count: acc_dict[key] = dict(_key=key, count=count, sum=acc.get_average(key) * count, min=acc.get_min(key), avg=acc.get_average(key), max=acc.get_max(key), sdev=acc.get_standard_deviation(key)) path = filename or "interface/accumulators_%s.xls" % (dtstr) self.dump_dicts_as_xlsx(all_acc_dict, path)
def report(self, stream): """ all tests have completed but --with-pycc has not yet stopped external container. request that containers log statistics now """ # initialize pyon so we can get system name from pyon.core import bootstrap if not bootstrap.pyon_initialized: bootstrap.bootstrap_pyon() from pyon.public import get_sys_name, CFG # make request: bin/pycc --sysname mgmt -x ion.processes.test.manage_system.ReportStats null = open('/dev/null', 'w') cmd = ['bin/pycc', '--sysname', get_sys_name(), '-x', 'ion.processes.test.manage_system.ReportStats' ] status = subprocess.call(cmd, stdout=null, stderr=null) if status==0: stream.write('container statistics: a report request has been sent\n') time.sleep(5) # give time to handle before container shutdown begins else: stream.write('container statistics: failed to send report request (logging anyway -- who needs a container?)\n') from ooi.timer import get_accumulators for a in get_accumulators().values(): a.log()
def dump_accumulators_as_xlsx(self, filename=None): dtstr = datetime.datetime.today().strftime('%Y%m%d_%H%M%S') all_acc_dict = {} for acc_name, acc in get_accumulators().iteritems(): acc_dict = {} acc_name = acc_name.split(".")[-1] acc_name = acc_name[:30] all_acc_dict[acc_name] = acc_dict for key in acc.keys(): count = acc.get_count(key) if count: acc_dict[key] = dict( _key=key, count=count, sum=acc.get_average(key) * count, min=acc.get_min(key), avg=acc.get_average(key), max=acc.get_max(key), sdev=acc.get_standard_deviation(key) ) path = filename or "interface/accumulators_%s.xls" % (dtstr) self.dump_dicts_as_xlsx(all_acc_dict, path)