Example #1
0
class TestJTLReader(BZTestCase):
    def setUp(self):
        super(TestJTLReader, self).setUp()
        self.obj = None

    def configure(self, jtl_file):
        self.obj = JTLReader(jtl_file, logging.getLogger(''))

    def tearDown(self):
        if self.obj:
            close_reader_file(self.obj.csvreader)
            close_reader_file(self.obj.errors_reader)
        super(TestJTLReader, self).tearDown()

    def test_tranctl_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tranctl.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(1, len(values))

    def test_tabs_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(4, len(values))

    def test_reader_unicode(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl")
        self.obj.ignored_labels = [u"Тест.Эхо"]
        for point in self.obj.datapoints(final_pass=True):
            cumulative = point[DataPoint.CUMULATIVE]
            self.assertIn(u"САП.АутентифицироватьРасш", cumulative)
            self.assertNotIn(u"Тест.Эхо", cumulative)

    def test_jtl_doublequoting(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl")
        list(self.obj.datapoints(final_pass=True))
Example #2
0
class TestJTLReader(BZTestCase):
    def setUp(self):
        super(TestJTLReader, self).setUp()
        self.obj = None

    def configure(self, jtl_file):
        self.obj = JTLReader(jtl_file, logging.getLogger(''))

    def tearDown(self):
        if self.obj:
            close_reader_file(self.obj.csvreader)
            close_reader_file(self.obj.errors_reader)
        super(TestJTLReader, self).tearDown()

    def test_tranctl_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tranctl.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(1, len(values))

    def test_tabs_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(4, len(values))

    def test_reader_unicode(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl")
        self.obj.ignored_labels = [u"Тест.Эхо"]
        for point in self.obj.datapoints(final_pass=True):
            cumulative = point[DataPoint.CUMULATIVE]
            self.assertIn(u"САП.АутентифицироватьРасш", cumulative)
            self.assertNotIn(u"Тест.Эхо", cumulative)

    def test_jtl_doublequoting(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl")
        list(self.obj.datapoints(final_pass=True))
Example #3
0
    def test_jtl_quoting_issue(self):
        def exec_and_communicate(*args, **kwargs):
            return "", ""

        self.configure({"execution": {
            "concurrency": 1,
            "iterations": 1,
            "scenario": {
                "default-address": "http://httpbin.org/status/503",
                "requests": [
                    "/"
                ]
            }
        }})
        tmp_aec, tmp_ex = bzt.utils.exec_and_communicate, sys.executable
        try:
            bzt.utils.exec_and_communicate = exec_and_communicate
            self.obj.prepare()
            sys.executable = RESOURCES_DIR + "locust/locust-mock" + EXE_SUFFIX
            self.obj.startup()
        finally:
            bzt.utils.exec_and_communicate = tmp_aec
            sys.executable = tmp_ex

        while not self.obj.check():
            time.sleep(self.obj.engine.check_interval)
        self.obj.shutdown()
        self.obj.post_process()

        kpi_path = RESOURCES_DIR + "locust/locust-kpi.jtl"

        reader = JTLReader(kpi_path, self.obj.log)
        list(reader.datapoints())
Example #4
0
    def test_jtl_quoting_issue(self):
        self.obj.execution.merge({
            "concurrency": 1,
            "iterations": 1,
            "scenario": {
                "default-address": "http://httpbin.org/status/503",
                "requests": ["/"]
            }
        })
        self.obj.prepare()
        self.obj.startup()
        while not self.obj.check():
            time.sleep(self.obj.engine.check_interval)
        self.obj.shutdown()
        self.obj.post_process()

        kpi_path = os.path.join(self.obj.engine.artifacts_dir, "kpi.jtl")
        self.assertTrue(os.path.exists(kpi_path))

        reader = JTLReader(kpi_path, self.obj.log, None)
        for point in reader.datapoints():
            pass
Example #5
0
    def test_jtl_quoting_issue(self):
        self.configure({"execution": {
            "concurrency": 1,
            "iterations": 1,
            "scenario": {
                "default-address": "http://httpbin.org/status/503",
                "requests": [
                    "/"
                ]
            }
        }})
        self.obj.prepare()
        self.obj.startup()
        while not self.obj.check():
            time.sleep(self.obj.engine.check_interval)
        self.obj.shutdown()
        self.obj.post_process()

        kpi_path = os.path.join(self.obj.engine.artifacts_dir, "kpi.jtl")
        self.assertTrue(os.path.exists(kpi_path))

        reader = JTLReader(kpi_path, self.obj.log)
        list(reader.datapoints())
Example #6
0
 def test_tranctl_jtl(self):
     obj = JTLReader(__dir__() + "/../data/tranctl.jtl", logging.getLogger(''), None)
     values = [x for x in obj.datapoints(True)]
     self.assertEquals(1, len(values))
Example #7
0
class TestJTLReader(BZTestCase):
    def setUp(self):
        super(TestJTLReader, self).setUp()
        self.obj = None

    def configure(self, jtl_file):
        self.obj = JTLReader(jtl_file, ROOT_LOGGER)

    def tearDown(self):
        if self.obj:
            close_reader_file(self.obj.csvreader)
            close_reader_file(self.obj.errors_reader)
        super(TestJTLReader, self).tearDown()

    def test_tranctl_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tranctl.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(1, len(values))

    def test_tabs_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(4, len(values))

    def test_reader_unicode(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl")
        self.obj.ignored_labels = [u"Тест.Эхо"]
        for point in self.obj.datapoints(final_pass=True):
            cumulative = point[DataPoint.CUMULATIVE]
            self.assertIn(u"САП.АутентифицироватьРасш", cumulative)
            self.assertNotIn(u"Тест.Эхо", cumulative)

    def test_jtl_doublequoting(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_jtl_csv_sniffer_unicode_crash(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/quote-guessing-crash.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_stdev_performance(self):
        start = time.time()
        self.configure(RESOURCES_DIR + "/jmeter/jtl/slow-stdev.jtl")
        res = list(self.obj.datapoints(final_pass=True))
        lst_json = to_json(res)

        self.assertNotIn('"perc": {},', lst_json)

        elapsed = time.time() - start
        ROOT_LOGGER.debug("Elapsed/per datapoint: %s / %s", elapsed,
                          elapsed / len(res))
        # self.assertLess(elapsed, len(res))  # less than 1 datapoint per sec is a no-go
        exp = [
            2.2144798867972773, 0.7207704268609725, 0.606834452578833,
            0.8284089170237546, 0.5858142211763572, 0.622922628329711,
            0.5529488620851849, 0.6933748292117727, 0.4876162181858197,
            0.42471180222446503, 0.2512251128133865
        ]
        self.assertEqual(
            exp,
            [x[DataPoint.CURRENT][''][KPISet.STDEV_RESP_TIME] for x in res])

    def test_kpiset_trapped_getitem(self):
        def new():
            subj = KPISet()
            subj.perc_levels = (100.0, )
            subj[KPISet.RESP_TIMES].add(0.1)
            subj[KPISet.RESP_TIMES].add(0.01)
            subj[KPISet.RESP_TIMES].add(0.001)
            subj.recalculate()
            return subj

        def enc_dec_iter(vals):
            vals = list(vals)
            dct = {x[0]: x[1] for x in vals}
            jsoned = to_json(dct)
            return json.loads(jsoned)

        exp = {
            u'avg_ct': 0,
            u'avg_lt': 0,
            u'avg_rt': 0,
            u'bytes': 0,
            u'concurrency': 0,
            u'errors': [],
            u'fail': 0,
            u'perc': {
                u'100.0': 0.1
            },
            u'rc': {},
            u'rt': {
                u'0.001': 1,
                u'0.01': 1,
                u'0.1': 1
            },
            u'stdev_rt': 0.058 if PY2 else 0.05802585630561603,
            u'succ': 0,
            u'throughput': 0
        }

        self.assertEqual(exp, enc_dec_iter(new().items()))
        if PY2:
            self.assertEqual(exp, enc_dec_iter(new().viewitems()))
            self.assertEqual(exp, enc_dec_iter(new().iteritems()))
        self.assertEqual('{"100.0": 0.1}',
                         to_json(new().get(KPISet.PERCENTILES), indent=None))
Example #8
0
class TestJTLReader(BZTestCase):
    def setUp(self):
        super(TestJTLReader, self).setUp()
        self.obj = None

    def configure(self, jtl_file):
        self.obj = JTLReader(jtl_file, ROOT_LOGGER)

    def tearDown(self):
        if self.obj:
            close_reader_file(self.obj.csvreader)
            close_reader_file(self.obj.errors_reader)
        super(TestJTLReader, self).tearDown()

    def test_tranctl_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tranctl.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(1, len(values))

    def test_tabs_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(4, len(values))

    def test_reader_unicode(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl")
        self.obj.ignored_labels = [u"Тест.Эхо"]
        for point in self.obj.datapoints(final_pass=True):
            cumulative = point[DataPoint.CUMULATIVE]
            self.assertIn(u"САП.АутентифицироватьРасш", cumulative)
            self.assertNotIn(u"Тест.Эхо", cumulative)

    def test_jtl_doublequoting(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_jtl_csv_sniffer_unicode_crash(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/quote-guessing-crash.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_stdev_performance(self):
        start = time.time()
        self.configure(RESOURCES_DIR + "jmeter/jtl/slow-stdev.jtl")
        res = list(self.obj.datapoints(final_pass=True))
        lst_json = to_json(res)

        self.assertNotIn('"perc": {},', lst_json)

        elapsed = time.time() - start
        ROOT_LOGGER.debug("Elapsed/per datapoint: %s / %s", elapsed,
                          elapsed / len(res))
        # self.assertLess(elapsed, len(res))  # less than 1 datapoint per sec is a no-go
        exp = [
            0.53060066889723, 0.39251356581014, 0.388405157629,
            0.38927586980868, 0.30511697736531, 0.21160424043633,
            0.07339064994943
        ]
        self.assertEqual(exp, [
            round(x[DataPoint.CURRENT][''][KPISet.STDEV_RESP_TIME], 14)
            for x in res
        ])

    def test_kpiset_trapped_getitem(self):
        def new():
            subj = KPISet(perc_levels=(100.0, ))
            subj[KPISet.RESP_TIMES].add(0.1)
            subj[KPISet.RESP_TIMES].add(0.01)
            subj[KPISet.RESP_TIMES].add(0.001)
            subj.recalculate()
            return subj

        def enc_dec_iter(vals):
            vals = list(vals)
            dct = {x[0]: x[1] for x in vals}
            jsoned = to_json(dct)
            return json.loads(jsoned)

        exp = {
            u'avg_ct': 0,
            u'avg_lt': 0,
            u'avg_rt': 0,
            u'bytes': 0,
            u'concurrency': 0,
            u'errors': [],
            u'fail': 0,
            u'perc': {
                u'100.0': 0.1
            },
            u'rc': {},
            u'rt': {
                u'0.001': 1,
                u'0.01': 1,
                u'0.1': 1
            },
            u'stdev_rt': 0.05802585630561603,
            u'succ': 0,
            u'throughput': 0
        }

        self.assertEqual(exp, enc_dec_iter(new().items()))
        self.assertEqual('{"100.0": 0.1}',
                         to_json(new().get(KPISet.PERCENTILES), indent=None))
Example #9
0
 def test_jtl_doublequoting(self):
     obj = JTLReader(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl", logging.getLogger(), None)
     list(obj.datapoints(True))
Example #10
0
 def test_reader_unicode(self):
     reader = JTLReader(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl", logging.getLogger(''), None)
     reader.ignored_labels = [u("Тест.Эхо")]
     for point in reader.datapoints():
         cumulative = point[DataPoint.CUMULATIVE]
         self.assertNotIn("Тест.Эхо", cumulative)
Example #11
0
 def test_tabs_jtl(self):
     obj = JTLReader(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl", logging.getLogger(''), None)
     values = [x for x in obj.datapoints(True)]
     self.assertEquals(4, len(values))
Example #12
0
class TestJTLReader(BZTestCase):
    def setUp(self):
        super(TestJTLReader, self).setUp()
        self.obj = None

    def configure(self, jtl_file):
        self.obj = JTLReader(jtl_file, ROOT_LOGGER)

    def tearDown(self):
        if self.obj:
            close_reader_file(self.obj.csvreader)
            close_reader_file(self.obj.errors_reader)
        super(TestJTLReader, self).tearDown()

    def test_tranctl_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tranctl.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(1, len(values))

    def test_tabs_jtl(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/tabs.jtl")
        values = [x for x in self.obj.datapoints(final_pass=True)]
        self.assertEquals(4, len(values))

    def test_reader_unicode(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/unicode.jtl")
        self.obj.ignored_labels = [u"Тест.Эхо"]
        for point in self.obj.datapoints(final_pass=True):
            cumulative = point[DataPoint.CUMULATIVE]
            self.assertIn(u"САП.АутентифицироватьРасш", cumulative)
            self.assertNotIn(u"Тест.Эхо", cumulative)

    def test_jtl_doublequoting(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_jtl_csv_sniffer_unicode_crash(self):
        self.configure(RESOURCES_DIR + "/jmeter/jtl/quote-guessing-crash.jtl")
        list(self.obj.datapoints(final_pass=True))

    def test_stdev_performance(self):
        start = time.time()
        self.configure(RESOURCES_DIR + "/jmeter/jtl/slow-stdev.jtl")
        res = list(self.obj.datapoints(final_pass=True))
        lst_json = to_json(res)

        self.assertNotIn('"perc": {},', lst_json)

        elapsed = time.time() - start
        ROOT_LOGGER.debug("Elapsed/per datapoint: %s / %s", elapsed, elapsed / len(res))
        # self.assertLess(elapsed, len(res))  # less than 1 datapoint per sec is a no-go
        exp = [2.2144798867972773,
               0.7207704268609725,
               0.606834452578833,
               0.8284089170237546,
               0.5858142211763572,
               0.622922628329711,
               0.5529488620851849,
               0.6933748292117727,
               0.4876162181858197,
               0.42471180222446503,
               0.2512251128133865]
        self.assertEqual(exp, [x[DataPoint.CURRENT][''][KPISet.STDEV_RESP_TIME] for x in res])

    def test_kpiset_trapped_getitem(self):
        def new():
            subj = KPISet(perc_levels=(100.0,))
            subj[KPISet.RESP_TIMES].add(0.1)
            subj[KPISet.RESP_TIMES].add(0.01)
            subj[KPISet.RESP_TIMES].add(0.001)
            subj.recalculate()
            return subj

        def enc_dec_iter(vals):
            vals = list(vals)
            dct = {x[0]: x[1] for x in vals}
            jsoned = to_json(dct)
            return json.loads(jsoned)

        exp = {u'avg_ct': 0,
               u'avg_lt': 0,
               u'avg_rt': 0,
               u'bytes': 0,
               u'concurrency': 0,
               u'errors': [],
               u'fail': 0,
               u'perc': {u'100.0': 0.1},
               u'rc': {},
               u'rt': {u'0.001': 1, u'0.01': 1, u'0.1': 1},
               u'stdev_rt': 0.058 if PY2 else 0.05802585630561603,
               u'succ': 0,
               u'throughput': 0}

        self.assertEqual(exp, enc_dec_iter(new().items()))
        if PY2:
            self.assertEqual(exp, enc_dec_iter(new().viewitems()))
            self.assertEqual(exp, enc_dec_iter(new().iteritems()))
        self.assertEqual('{"100.0": 0.1}', to_json(new().get(KPISet.PERCENTILES), indent=None))