Beispiel #1
0
 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()
Beispiel #2
0
    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
Beispiel #3
0
    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)