def test_04_statprefix_obj(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test object stats to the collector
        and checks if they can be accessed from QE, using prefix-suffix indexes
        '''
        logging.info("*** test_04_statprefix_obj ***")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.redis_port,
                             self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_obj_stat("t010", "lxxx", "samp1", 1, 1)
        generator_obj.send_test_obj_stat("t010", "lyyy", "samp1", 2, 2)
        generator_obj.send_test_obj_stat("t010", "lyyy", "samp3", 2, 2, "", 5)
        generator_obj.send_test_obj_stat("t011", "lyyy", "samp2", 1, 1.1, "",
                                         7)
        generator_obj.send_test_obj_stat("t011", "lxxx", "samp2", 2, 1.2)
        generator_obj.send_test_obj_stat("t011", "lxxx", "samp2", 2, 1.2, "",
                                         9)

        logging.info("Checking Objectlog Stats str-str " +
                     str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestObj.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.i1", "st.d1"],
            where_clause='name|st.s1=t010|samp1',
            num=2,
            check_rows=[{
                "st.s1": "samp1",
                "st.i1": 2,
                "st.d1": 2
            }, {
                "st.s1": "samp1",
                "st.i1": 1,
                "st.d1": 1
            }])

        return True
    def test_03_min_max_query(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it inserts into the stat table rows 
        and queries MAX and MIN on them
        '''
        logging.info("*** test_03_min_max_query ***")
        if StatsTest._check_skip_test() is True:
            return True
        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.redis_port,
                             self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat("t04", "lxxx", "samp1", 1, 5)
        generator_obj.send_test_stat("t04", "lyyy", "samp1", 4, 3.4)
        generator_obj.send_test_stat("t04", "lyyy", "samp1", 2, 4, "", 5)

        logging.info("Checking Stats " + str(UTCTimestampUsec()))
        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["MAX(st.i1)", "PERCENTILES(st.i1)", "AVG(st.i1)"],
            where_clause='name|st.s1=t04|samp1',
            num=1,
            check_rows=[{
                u'MAX(st.i1)': 4,
                u'PERCENTILES(st.i1)': None,
                u'AVG(st.i1)': 2.33333
            }])

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["MIN(st.d1)", "AVG(st.d1)"],
            where_clause='name|st.s1=t04|samp1',
            num=1,
            check_rows=[{
                u'MIN(st.d1)': 3.4,
                u'AVG(st.d1)': 4.13333
            }])

        return True
Example #3
0
    def test_00_basicsamples(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test stats to the collector
        and checks if they can be accessed from QE.
        '''
        logging.info("%%% test_00_basicsamples %%%")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir,
                             self.__class__.redis_port,
                             self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors,
                             logging, vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat_dynamic("t00","samp1",1,1);
        generator_obj.send_test_stat_dynamic("t00","samp2",2,1.1);
        generator_obj.send_test_stat_dynamic("t00","samp3",1,-5062);
        generator_obj.send_test_stat_dynamic("t00&t01","samp1&samp2",2,1.1);
        generator_obj.send_test_stat_dynamic("t00>t01>","samp1&samp2",2,1.1,
                                             "&test_s2>");

        logging.info("Checking Stats " + str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat("StatTable.TestStateDynamic.ts",
            "-2m", select_fields = [ "UUID", "ts.s1", "ts.i1", "ts.d1" ],
            where_clause = 'name="t00"', num = 3, check_rows =
            [{ "ts.s1":"samp2", "ts.i1":2, "ts.d1":1.1},
             { "ts.s1":"samp1", "ts.i1":1, "ts.d1":1},
             { "ts.s1":"samp3", "ts.i1":1, "ts.d1":-5062}]);
        assert generator_obj.verify_test_stat("StatTable.TestStateDynamic.ts",
            "-2m", select_fields = [ "UUID", "ts.s1", "ts.s2" ],
            where_clause = 'name="t00&t01"', num = 1, check_rows =
            [{ "ts.s1":"samp1&samp2", "ts.s2": "" }])
        assert generator_obj.verify_test_stat("StatTable.TestStateDynamic.ts",
            "-2m", select_fields = [ "UUID", "name", "ts.s2" ],
            where_clause = 'ts.s1="samp1&samp2"', num = 2, check_rows =
            [{ "name":"t00&t01", "ts.s2": "" },
             { "name":"t00>t01>", "ts.s2":"&test_s2>" }])
            
        return True
    def test_05_statprefix_double(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test 2nd-level stats to the collector
        and checks if they can be accessed from QE, using prefix-suffix indexes
        '''
        logging.info("%%% test_05_statprefix_double %%%")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat_double("t010", "lxxx", "samp1", 1, 1)
        generator_obj.send_test_stat_double("t010", "lyyy", "samp1", 2, 3)
        generator_obj.send_test_stat_double("t010", "lyyy", "samp3", 2, 3,
                                            "misc2", 5)
        generator_obj.send_test_stat_double("t011", "lyyy", "samp2", 1, 1.1,
                                            "misc1", 7)
        generator_obj.send_test_stat_double("t011", "lxxx", "samp2", 2, 1.2)
        generator_obj.send_test_stat_double("t011", "lxxx", "samp2", 2, 1.2,
                                            "", 9)

        logging.info("Checking 2nd-level Stats str-double" +
                     str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestStateDouble.dst.st",
            "-2m",
            select_fields=["UUID", "dst.st.s1", "dst.st.i1", "dst.l1"],
            where_clause='dst.l1|dst.st.s2=lyyy|misc1',
            num=1,
            check_rows=[{
                "dst.st.s1": "samp2",
                "dst.st.i1": 1,
                "dst.l1": "lyyy"
            }])

        return True
Example #5
0
    def test_14_verify_qe_stats_collection(self):
        '''
        This test checks if the QE is able to collect the stats
        related to DB reads correctly
        '''
        logging.info('%%% test_14_verify_qe_stats_collection %%%')
        analytics = self.useFixture(
            AnalyticsFixture(logging, builddir,
                             self.__class__.cassandra_port))
        assert analytics.verify_on_setup()
        # make stat table entries also
        collectors = [analytics.get_collector()]
        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors,
                             logging, analytics.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat("t010","lxxx","samp1",1,1);
        generator_obj.send_test_stat("t010","lyyy","samp1",2,2);
        assert generator_obj.verify_test_stat("StatTable.StatTestState.st","-2m",
            select_fields = [ "UUID", "st.s1", "st.i1", "st.d1" ],
            where_clause = 'name|st.s1=t010|samp1', num = 2, check_rows =
            [{ "st.s1":"samp1", "st.i1":2, "st.d1":2},
             { "st.s1":"samp1", "st.i1":1, "st.d1":1}]);
        # Get the current read stats for MessageTable
        old_reads = analytics.get_db_read_stats_from_qe(analytics.query_engine,
                                                        COLLECTOR_GLOBAL_TABLE)
        # read some data from message table and issue thequery again
        assert analytics.verify_message_table_moduleid()
        new_reads = analytics.get_db_read_stats_from_qe(analytics.query_engine,
                                                        COLLECTOR_GLOBAL_TABLE)
        assert(old_reads < new_reads)
        # Get the current read stats for stats table
        old_reads = analytics.get_db_read_stats_from_qe(analytics.query_engine, 'StatTestState:st',True)
        assert (old_reads > 0)
        assert generator_obj.verify_test_stat("StatTable.StatTestState.st","-2m",
            select_fields = [ "UUID", "st.s1", "st.i1", "st.d1" ],
            where_clause = 'name|st.s1=t010|samp1', num = 2, check_rows =
            [{ "st.s1":"samp1", "st.i1":2, "st.d1":2},
             { "st.s1":"samp1", "st.i1":1, "st.d1":1}]);
        new_reads = analytics.get_db_read_stats_from_qe(analytics.query_engine, 'StatTestState:st',True)
        assert(new_reads > old_reads)
    def test_02_overflowsamples(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test stats to the collector
        and checks if they can be accessed from QE.
        '''
        logging.info("*** test_02_overflowsamples ***")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.redis_port,
                             self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat_dynamic("t02", "samp02-2",
                                             0xffffffffffffffff, 1.1)

        logging.info("Checking Stats " + str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.TestStateDynamic.ts",
            "-2m",
            select_fields=["UUID", "ts.s1", "ts.i1", "ts.d1"],
            where_clause='name="t02"',
            num=1,
            check_rows=[{
                "ts.s1": "samp02-2",
                "ts.i1": 0xffffffffffffffff,
                "ts.d1": 1.1
            }])

        return True
    def test_06_stats_filter(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test stats to the collector
        and checks if all filter operations work properly.
        '''
        logging.info("%%% test_06_stats_filter %%%")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat("name0", "lxxx", "samp1", 10, 12)
        generator_obj.send_test_stat("name0", "lxxx", "samp2", 20, 12.6)
        generator_obj.send_test_stat("name0", "lyyy", "samp1", 500, 2.345)
        generator_obj.send_test_stat("name0", "lyyy", "samp2", 1000, 15.789)

        # verify that all the stats messages are added in the analytics db
        # before starting the filter tests
        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=4,
            check_rows=[{
                "l1": "lxxx",
                "st.s1": "samp1",
                "st.i1": 10,
                "st.d1": 12
            }, {
                "l1": "lxxx",
                "st.s1": "samp2",
                "st.i1": 20,
                "st.d1": 12.6
            }, {
                "l1": "lyyy",
                "st.s1": "samp1",
                "st.i1": 500,
                "st.d1": 2.345
            }, {
                "l1": "lyyy",
                "st.s1": "samp2",
                "st.i1": 1000,
                "st.d1": 15.789
            }])

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=2,
            check_rows=[{
                "l1": "lxxx",
                "st.s1": "samp1",
                "st.i1": 10,
                "st.d1": 12
            }, {
                "l1": "lxxx",
                "st.s1": "samp2",
                "st.i1": 20,
                "st.d1": 12.6
            }],
            filt="l1 = lxxx")

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=1,
            check_rows=[{
                "l1": "lyyy",
                "st.s1": "samp1",
                "st.i1": 500,
                "st.d1": 2.345
            }],
            filt="st.i1 = 500")

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=2,
            check_rows=[{
                "l1": "lxxx",
                "st.s1": "samp1",
                "st.i1": 10,
                "st.d1": 12
            }, {
                "l1": "lxxx",
                "st.s1": "samp2",
                "st.i1": 20,
                "st.d1": 12.6
            }],
            filt="st.i1 <= 400")

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=2,
            check_rows=[{
                "l1": "lyyy",
                "st.s1": "samp1",
                "st.i1": 500,
                "st.d1": 2.345
            }, {
                "l1": "lyyy",
                "st.s1": "samp2",
                "st.i1": 1000,
                "st.d1": 15.789
            }],
            filt="st.i1 >= 500")

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=1,
            check_rows=[{
                "l1": "lyyy",
                "st.s1": "samp1",
                "st.i1": 500,
                "st.d1": 2.345
            }],
            filt="st.d1 <= 3")

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1", "st.s1", "st.i1", "st.d1"],
            where_clause='name=name0',
            num=2,
            check_rows=[{
                "l1": "lxxx",
                "st.s1": "samp2",
                "st.i1": 20,
                "st.d1": 12.6
            }, {
                "l1": "lyyy",
                "st.s1": "samp2",
                "st.i1": 1000,
                "st.d1": 15.789
            }],
            filt="st.d1 >= 12.5")
    def test_01_statprefix(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test stats to the collector
        and checks if they can be accessed from QE, using prefix-suffix indexes
        '''
        logging.info("%%% test_01_statprefix %%%")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat("t010", "lxxx", "samp1", 1, 1)
        generator_obj.send_test_stat("t010", "lyyy", "samp1", 2, 2)
        generator_obj.send_test_stat("t010", "lyyy", "samp3", 2, 2, "", 5)
        generator_obj.send_test_stat("t010", "lyyy&", "samp3>", 2, 2, "")
        generator_obj.send_test_stat("t011", "lyyy", "samp2", 1, 1.1, "", 7)
        generator_obj.send_test_stat("t011", "lxxx", "samp2", 2, 1.2)
        generator_obj.send_test_stat("t011", "lxxx", "samp2", 2, 1.2, "", 9)
        generator_obj.send_test_stat("t010&t011", "lxxx", "samp2", 1, 1.4)
        generator_obj.send_test_stat("t010&t011", "lx>ly", "samp2", 1, 1.4)

        logging.info("Checking Stats str-str " + str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.i1", "st.d1"],
            where_clause='name|st.s1=t010|samp1',
            num=2,
            check_rows=[{
                "st.s1": "samp1",
                "st.i1": 2,
                "st.d1": 2
            }, {
                "st.s1": "samp1",
                "st.i1": 1,
                "st.d1": 1
            }])
        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "l1"],
            where_clause='name|st.s1=t010&t011|samp2 OR name|st.s1=t010|samp3>',
            num=3,
            check_rows=[{
                "l1": "lxxx"
            }, {
                "l1": "lx>ly"
            }, {
                "l1": "lyyy&"
            }])

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.i1", "st.d1"],
            where_clause='st.i1|st.i2=2|1<6',
            num=1,
            check_rows=[{
                "st.s1": "samp3",
                "st.i1": 2,
                "st.d1": 2
            }])

        logging.info("Checking CLASS " + str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestState.st",
            "-2m",
            select_fields=["T", "name", "l1", "CLASS(T)"],
            where_clause='name=*',
            num=9,
            check_uniq={"CLASS(T)": 7})

        return True
    def test_07_container_samples(self):
        '''
        This test starts redis,vizd,opserver and qed
        It uses the test class' cassandra instance
        Then it sends test stats to the collector
        and checks if they can be accessed from QE.
        '''
        logging.info("%%% test_07_container_samples %%%")
        if StatsTest._check_skip_test() is True:
            return True

        vizd_obj = self.useFixture(
            AnalyticsFixture(logging, builddir, self.__class__.cassandra_port))
        assert vizd_obj.verify_on_setup()
        assert vizd_obj.verify_collector_obj_count()
        collectors = [vizd_obj.get_collector()]

        generator_obj = self.useFixture(
            StatsFixture("VRouterAgent", collectors, logging,
                         vizd_obj.get_opserver_port()))
        assert generator_obj.verify_on_setup()

        logging.info("Starting stat gen " + str(UTCTimestampUsec()))

        generator_obj.send_test_stat_container("t07", "samp1", {
            "me1": "val1",
            "me2": "val2"
        }, ["le1", "le2"], ["se1", "se2"], 2)
        generator_obj.send_test_stat_container("t07", "samp1", {
            "me1": "val2",
            "me3": "val3"
        }, ["le1", "le2", "le4"], ["se3", "se4"], 2)
        generator_obj.send_test_stat_container("t07", "samp2", {
            "me3": "val3",
            "me2": "val2"
        }, ["le3", "le5"], ["se3", "se7"], 2)
        generator_obj.send_test_stat_container("t07", "samp3", {
            "me1": "val1",
            "me2": "val3",
            "me3": "val3"
        }, ["le1"], ["se3", "se2"], 2)
        generator_obj.send_test_stat_container("t07", "samp4", {"me4": "val4"},
                                               ["le3", "le7"], ["se3", "se5"],
                                               2)

        logging.info("Checking Stats " + str(UTCTimestampUsec()))

        assert generator_obj.verify_test_stat(
            "StatTable.StatTestContainerState.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.m1", "st.i1"],
            where_clause='name="t07" AND st.l1 CONTAINS le2',
            num=2,
            check_rows=[{
                "st.s1": "samp1",
                "st.m1": "{\"me1\":\"val1\", \"me2\":\"val2\"}",
                "st.i1": 2
            }, {
                "st.s1": "samp1",
                "st.m1": "{\"me1\":\"val2\", \"me3\":\"val3\"}",
                "st.i1": 2
            }])
        assert generator_obj.verify_test_stat(
            "StatTable.StatTestContainerState.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.m1.me2", "st.i1"],
            where_clause='name="t07" AND st.l2 CONTAINS se2',
            num=2,
            check_rows=[{
                "st.s1": "samp1",
                "st.m1.me2": "val2",
                "st.i1": 2
            }, {
                "st.s1": "samp3",
                "st.m1.me2": "val3",
                "st.i1": 2
            }])
        assert generator_obj.verify_test_stat(
            "StatTable.StatTestContainerState.st",
            "-2m",
            select_fields=["UUID", "st.s1", "st.l1", "st.l2", "st.i1"],
            where_clause='name="t07" AND st.m1.me2=val*',
            num=3,
            check_rows=[{
                "st.s1": "samp1",
                "st.l1": "le1; le2",
                "st.l2": "se1; se2",
                "st.i1": 2
            }, {
                "st.s1": "samp2",
                "st.l1": "le3; le5",
                "st.l2": "se3; se7",
                "st.i1": 2
            }, {
                "st.s1": "samp3",
                "st.l1": "le1",
                "st.l2": "se3; se2",
                "st.i1": 2
            }])

        return True