def point_from_locust(timestamp, sid, data): """ :type timestamp: str :type sid: str :type data: dict :rtype: DataPoint """ point = DataPoint(int(timestamp)) point[DataPoint.SOURCE_ID] = sid overall = KPISet() for item in data['stats']: if timestamp not in item['num_reqs_per_sec']: continue kpiset = KPISet() kpiset[KPISet.SAMPLE_COUNT] = item['num_reqs_per_sec'][timestamp] kpiset[KPISet.CONCURRENCY] = data['user_count'] kpiset[KPISet.BYTE_COUNT] = item['total_content_length'] if item['num_requests']: avg_rt = (item['total_response_time'] / 1000.0) / item['num_requests'] kpiset.sum_rt = item['num_reqs_per_sec'][timestamp] * avg_rt point[DataPoint.CURRENT][item['name']] = kpiset overall.merge_kpis(kpiset) point[DataPoint.CURRENT][''] = overall point.recalculate() return point
def point_from_locust(timestamp, sid, data): """ :type timestamp: str :type sid: str :type data: dict :rtype: DataPoint """ point = DataPoint(int(timestamp)) point[DataPoint.SOURCE_ID] = sid overall = KPISet() for item in data['stats']: if timestamp not in item['num_reqs_per_sec']: continue kpiset = KPISet() kpiset[KPISet.SAMPLE_COUNT] = item['num_reqs_per_sec'][timestamp] kpiset[KPISet.CONCURRENCY] = data['user_count'] kpiset[KPISet.BYTE_COUNT] = item['total_content_length'] if item['num_requests']: avg_rt = (item['total_response_time'] / 1000.0) / item['num_requests'] kpiset.sum_rt = item['num_reqs_per_sec'][timestamp] * avg_rt for err in data['errors'].values(): if err['name'] == item['name']: new_err = KPISet.error_item_skel(err['error'], None, err['occurences'], KPISet.ERRTYPE_ERROR, Counter()) KPISet.inc_list(kpiset[KPISet.ERRORS], ("msg", err['error']), new_err) kpiset[KPISet.FAILURES] += err['occurences'] point[DataPoint.CURRENT][item['name']] = kpiset overall.merge_kpis(kpiset) point[DataPoint.CURRENT][''] = overall point.recalculate() return point
def point_from_locust(self, ts, sid, data): """ :type sid: str :type ts: str :type data: dict :rtype: DataPoint """ point = DataPoint(int(ts)) point[DataPoint.SOURCE_ID] = sid overall = KPISet() for item in data['stats']: if ts not in item['num_reqs_per_sec']: continue kpiset = KPISet() kpiset[KPISet.SAMPLE_COUNT] = item['num_reqs_per_sec'][ts] kpiset[KPISet.CONCURRENCY] = data['user_count'] if item['num_requests']: avg_rt = (item['total_response_time'] / 1000.0) / item['num_requests'] kpiset.sum_rt = item['num_reqs_per_sec'][ts] * avg_rt point[DataPoint.CURRENT][item['name']] = kpiset overall.merge_kpis(kpiset) point[DataPoint.CURRENT][''] = overall point.recalculate() return point
def test_kpiset_merge_many_rtimes(self): vals = { round(random() * 20 + 0.1, int(random() * 3) + 2): int(random() * 3 + 1) for _ in range(1000) } src = KPISet() src[KPISet.RESP_TIMES].update(vals) dst = KPISet() dst.rtimes_len = 100 for _ in range(100): dst.merge_kpis(src) dst.compact_times() self.assertEqual(100, len(dst[KPISet.RESP_TIMES]))