def test_render(self): # Explicit label chart = charts.OutputStackedAreaChart( {"total_iteration_count": 2}, label="Label", axis_label="Axis label") chart.add_iteration((("foo", 10), ("bar", 20))) # One iteration is transformed to Table self.assertEqual({"axis_label": "Axis label", "data": {"cols": ["Name", "Label"], "rows": [["foo", 10], ["bar", 20]]}, "description": "", "label": "Label", "title": "", "widget": "Table"}, chart.render()) chart.add_iteration((("foo", 11), ("bar", 21))) # StackedArea for more iterations self.assertEqual({"axis_label": "Axis label", "data": [("foo", [[1, 10], [2, 11]]), ("bar", [[1, 20], [2, 21]])], "description": "", "label": "Label", "title": "", "widget": "StackedArea"}, chart.render()) # No label chart = charts.OutputStackedAreaChart({"total_iteration_count": 1}) chart.add_iteration((("foo", 10), ("bar", 20))) self.assertEqual({"axis_label": "", "data": {"cols": ["Name", "Value"], "rows": [["foo", 10], ["bar", 20]]}, "description": "", "label": "", "title": "", "widget": "Table"}, chart.render())
def test_add_iteration_and_render(self): chart = charts.OutputStackedAreaChart( {"iterations_count": 3, "output_names": ["foo", "bar"]}, 10) self.assertIsInstance(chart, charts.Chart) [chart.add_iteration({"scenario_output": {"data": x}}) for x in ({"foo": 1.1, "bar": 1.2}, {"foo": 1.3}, {"bar": 1.4})] expected = [("bar", [[1, 1.2], [2, 0], [3, 1.4]]), ("foo", [[1, 1.1], [2, 1.3], [3, 0]])] self.assertEqual(expected, sorted(chart.render()))
def test___init__(self): self.assertEqual("StackedArea", charts.OutputStackedAreaChart.widget) chart = charts.OutputStackedAreaChart({"iterations_count": 42}) self.assertIsInstance(chart, charts.OutputChart)
def _process_scenario(data, pos): main_area = charts.MainStackedAreaChart(data["info"]) main_hist = charts.MainHistogramChart(data["info"]) main_stat = charts.MainStatsTable(data["info"]) load_profile = charts.LoadProfileChart(data["info"]) atomic_pie = charts.AtomicAvgChart(data["info"]) atomic_area = charts.AtomicStackedAreaChart(data["info"]) atomic_hist = charts.AtomicHistogramChart(data["info"]) output_area = charts.OutputStackedAreaChart(data["info"]) errors = [] output_errors = [] for idx, itr in enumerate(data["iterations"]): if itr["error"]: typ, msg, trace = itr["error"] errors.append({ "iteration": idx, "type": typ, "message": msg, "traceback": trace }) if itr["scenario_output"]["errors"]: output_errors.append((idx, itr["scenario_output"]["errors"])) for chart in (main_area, main_hist, main_stat, load_profile, atomic_pie, atomic_area, atomic_hist, output_area): chart.add_iteration(itr) kw = data["key"]["kw"] cls, method = data["key"]["name"].split(".") return { "cls": cls, "met": method, "pos": str(pos), "name": method + (pos and " [%d]" % (pos + 1) or ""), "runner": kw["runner"]["type"], "config": json.dumps({data["key"]["name"]: [kw]}, indent=2), "iterations": { "iter": main_area.render(), "pie": [("success", (data["info"]["iterations_count"] - len(errors))), ("errors", len(errors))], "histogram": main_hist.render()[0] }, "load_profile": load_profile.render(), "atomic": { "histogram": atomic_hist.render(), "iter": atomic_area.render(), "pie": atomic_pie.render() }, "table": main_stat.render(), "output": output_area.render(), "output_errors": output_errors, "errors": errors, "load_duration": data["info"]["load_duration"], "full_duration": data["info"]["full_duration"], "sla": data["sla"], "sla_success": all([s["success"] for s in data["sla"]]), "iterations_count": data["info"]["iterations_count"], }