monasca-agent/tests_to_fix/performance/benchmark_aggregator.py

74 lines
2.6 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""
Performance tests for the agent/dogstatsd metrics aggregator.
"""
from six.moves import range
from monasca_agent.common.aggregator import MetricsAggregator
class TestAggregatorPerf(object):
FLUSH_COUNT = 10
LOOPS_PER_FLUSH = 2000
METRIC_COUNT = 5
def test_dogstatsd_aggregation_perf(self):
ma = MetricsAggregator('my.host')
for _ in range(self.FLUSH_COUNT):
for i in range(self.LOOPS_PER_FLUSH):
for j in range(self.METRIC_COUNT):
# metrics
ma.submit_packets('counter.%s:%s|c' % (j, i))
ma.submit_packets('gauge.%s:%s|g' % (j, i))
ma.submit_packets('histogram.%s:%s|h' % (j, i))
ma.submit_packets('set.%s:%s|s' % (j, 1.0))
# tagged metrics
ma.submit_packets('counter.%s:%s|c|#tag1,tag2' % (j, i))
ma.submit_packets('gauge.%s:%s|g|#tag1,tag2' % (j, i))
ma.submit_packets('histogram.%s:%s|h|#tag1,tag2' % (j, i))
ma.submit_packets('set.%s:%s|s|#tag1,tag2' % (j, i))
# sampled metrics
ma.submit_packets('counter.%s:%s|c|@0.5' % (j, i))
ma.submit_packets('gauge.%s:%s|g|@0.5' % (j, i))
ma.submit_packets('histogram.%s:%s|h|@0.5' % (j, i))
ma.submit_packets('set.%s:%s|s|@0.5' % (j, i))
ma.flush()
def test_checksd_aggregation_perf(self):
ma = MetricsAggregator('my.host')
for _ in range(self.FLUSH_COUNT):
for i in range(self.LOOPS_PER_FLUSH):
# Counters
for j in range(self.METRIC_COUNT):
ma.increment('counter.%s' % j, i)
ma.gauge('gauge.%s' % j, i)
ma.histogram('histogram.%s' % j, i)
ma.set('set.%s' % j, float(i))
ma.flush()
if __name__ == '__main__':
t = TestAggregatorPerf()
t.test_dogstatsd_aggregation_perf()
# t.test_checksd_aggregation_perf()