diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/src/test_mmv.python | |
download | pcp-debian/3.9.10.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/src/test_mmv.python')
-rwxr-xr-x | qa/src/test_mmv.python | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/qa/src/test_mmv.python b/qa/src/test_mmv.python new file mode 100755 index 0000000..255d5c3 --- /dev/null +++ b/qa/src/test_mmv.python @@ -0,0 +1,109 @@ +""" Test creation of PCP MMV metrics via the pcp.mmv python module """ +# +# Copyright (C) 2013 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# + +import sys +import unittest +from pcp import mmv, pmapi +from cpmapi import PM_COUNT_ONE, PM_TIME_USEC +import cmmv + +class TestSequenceFunctions(unittest.TestCase): + """ Test driver class for pcp.mmv module verification """ + + def test_mmv(self): + """ Worker which creates mmv instances, indoms, metrics + and ties 'em all together via the MemoryMappedValues + class. + Once executed, this test create an MMV file that can + be queried using pmdammv (by a PCP test driver script). + """ + + instances = [mmv.mmv_instance(0, "zero"), mmv.mmv_instance(1, "hero")] + woodlands = [mmv.mmv_instance(0, "bird"), mmv.mmv_instance(1, "tree"), + mmv.mmv_instance(2, "eggs"), mmv.mmv_instance(3, "frog")] + indoms = [mmv.mmv_indom(serial = 1, + shorttext = "We can be heroes", + helptext = "Set of instances from zero to hero"), + mmv.mmv_indom(serial = 2)] + indoms[0].set_instances(instances) + indoms[1].set_instances(woodlands) + metrics = [mmv.mmv_metric(name = "counter", + item = 1, + typeof = cmmv.MMV_TYPE_U32, + semantics = cmmv.MMV_SEM_COUNTER, + dimension = pmapi.pmUnits(0,0,1,0,0,PM_COUNT_ONE), + shorttext = "Example counter metric", + helptext = "Yep, a test counter metric"), + mmv.mmv_metric(name = "instant", + item = 2, + typeof = cmmv.MMV_TYPE_I32, + semantics = cmmv.MMV_SEM_INSTANT, + dimension = pmapi.pmUnits(0,0,0,0,0,0), + shorttext = "Example instant metric", + helptext = "Yep, a test instantaneous metric"), + mmv.mmv_metric(name = "indom", + item = 3, + typeof = cmmv.MMV_TYPE_U32, + semantics = cmmv.MMV_SEM_DISCRETE, + dimension = pmapi.pmUnits(0,0,0,0,0,0), + indom = 1), + mmv.mmv_metric(name = "interval", + item = 4, + typeof = cmmv.MMV_TYPE_ELAPSED, + semantics = cmmv.MMV_SEM_COUNTER, + dimension = pmapi.pmUnits(0,1,0,0,PM_TIME_USEC,0), + indom = 2), + mmv.mmv_metric(name = "string", + item = 5, + typeof = cmmv.MMV_TYPE_STRING, + dimension = pmapi.pmUnits(0,0,0,0,0,0), + semantics = cmmv.MMV_SEM_INSTANT), + mmv.mmv_metric(name = "strings", + item = 6, + typeof = cmmv.MMV_TYPE_STRING, + semantics = cmmv.MMV_SEM_INSTANT, + dimension = pmapi.pmUnits(0,0,0,0,0,0), + indom = 1, + shorttext = "test string metrics", + helptext = "Yep, string metric with instances")] + + values = mmv.MemoryMappedValues("test") + self.assertTrue(values != None) + self.assertTrue(values.started() == 0) + values.add_indoms(indoms) + self.assertTrue(values.started() == 0) + values.add_metrics(metrics) + self.assertTrue(values.started() == 0) + + values.start() + self.assertTrue(values.started() == 1) + caliper = values.lookup_interval_start("interval", "eggs") + self.assertTrue(caliper != None) + instant = values.lookup_mapping("instant", None) + self.assertTrue(instant != None) + values.add(instant, 41) + values.inc(instant) + values.interval_end(caliper) + values.stop() + self.assertTrue(values.started() == 0) + + # verification of the metrics values, semantics, indoms + # and so on is performed in conjunction with pmdammv in + # a driver script in the pcp/qa sources + +if __name__ == '__main__': + + sys.exit(unittest.main()) + |