コード例 #1
0
ファイル: fts_stats.py プロジェクト: bharath-gp/cbagent
 def __init__(self, settings, test_config, prefix=None):
         super(FtsCollector, self).__init__(settings)
         self.host = settings.master_node
         self.fts_client = FtsGen(self.host, test_config.fts_settings)
         self.cbft_stats = None
         self.NO_RESULT = 0
         self.scmd, self.squery = self.fts_client.prepare_query(type="nsstats")
コード例 #2
0
ファイル: wgen.py プロジェクト: bkumaran/perfrunner
    def start_workers(self,
                      worker_factory,
                      name,
                      curr_items=None,
                      deleted_items=None,
                      current_hot_load_start=None,
                      timer_elapse=None):
        curr_ops = Value('L', 0)
        lock = Lock()
        worker_type, total_workers = worker_factory(self.ws)
        if name == 'fts' and total_workers:
            auth = HTTPBasicAuth(self.ws.fts_config.username, self.ts.password)
            if self.ws.fts_config.elastic:
                self.ws.query_gen = ElasticGen(self.ts.node,
                                               self.ws.fts_config, auth)
            else:
                self.ws.query_gen = FtsGen(self.ts.node, self.ws.fts_config,
                                           auth)

        for sid in range(total_workers):
            args = (sid, lock, curr_ops, curr_items, deleted_items,
                    current_hot_load_start, timer_elapse)

            worker = worker_type(self.ws, self.ts, self.shutdown_event)

            worker_process = Process(target=worker.run, args=args)
            worker_process.start()
            self.worker_processes.append(worker_process)

            if getattr(self.ws, 'async', False):
                time.sleep(2)
コード例 #3
0
ファイル: fts_stats.py プロジェクト: bharath-gp/cbagent
class FtsCollector(Collector):
    def __init__(self, settings, test_config, prefix=None):
            super(FtsCollector, self).__init__(settings)
            self.host = settings.master_node
            self.fts_client = FtsGen(self.host, test_config.fts_settings)
            self.cbft_stats = None
            self.NO_RESULT = 0
            self.scmd, self.squery = self.fts_client.prepare_query(type="nsstats")

    def collect_stats(self):
        r = self.scmd(**self.squery)
        '''
         The nsserver stats not exposed
         following fundtion is added to collect nsserver stats per METRICS,
         no need to call same stats for different metrics. Optimized and reliable code.
         collect_stats should be called once.
        '''
        if r.status_code == 200:
            self.cbft_stats = r.json()
        else:
            self.cbft_stats = None

    def cbft_stats_get(self, key):
        if key not in self.cbft_stats:
            return 0
        return self.cbft_stats[key]

    def cbft_pct_cpu_gc(self):
        return self.cbft_stats_get("pct_cpu_gc")

    def cbft_num_bytes_used_ram(self):
        return self.cbft_stats_get("num_bytes_used_ram")

    def cbft_total_gc(self):
        return self.cbft_stats_get("total_gc")

    def measure(self):
            stats={}
            for metric in self.METRICS:
                '''
                the getattr is used to make code simple , avoid using many function
                the metric name should be same as the method name
                '''
                stats[metric] = getattr(self, metric)()
            return stats

    def update_metadata(self):
        self.mc.add_cluster()
        for metric in self.METRICS:
                self.mc.add_metric(metric, collector=self.COLLECTOR)

    def sample(self):
            self.collect_stats()
            self.update_metric_metadata(self.METRICS)
            samples = self.measure()
            self.store.append(samples, cluster=self.cluster,
                              collector=self.COLLECTOR)
コード例 #4
0
ファイル: wgen.py プロジェクト: woodysign/spring
    def __init__(self, workload_settings, target_settings, shutdown_event=None):
        super(FtsWorker, self).__init__(workload_settings, target_settings,
                                        shutdown_event)
        host, port = self.ts.node.split(':')
        if self.ws.fts_config.elastic:
            instance = ElasticGen(host, self.ws.fts_config)
            self.name = "ElasticWorker"
        else:
            instance = FtsGen(host, self.ws.fts_config)
            self.name = "FtsWorker"

        self.fts_es_query = instance
        self.fts_es_query.prepare_query()
コード例 #5
0
 def init_client(self, test_config):
     auth = HTTPBasicAuth(self.auth[0], self.auth[1])
     return FtsGen(self.master_node, test_config.fts_settings, auth=auth)