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))
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())
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
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())
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))
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))
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))
def test_jtl_doublequoting(self): obj = JTLReader(RESOURCES_DIR + "/jmeter/jtl/doublequoting.jtl", logging.getLogger(), None) list(obj.datapoints(True))
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)
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))
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))