[common_lib/test.py]: add append opt to output_perf_value
Add append_mode parameter to determine a new perf report
should be appended if a existing key is existed or not.
If the parameter is set to false, the new perf report will
override any existing value.
BUG=chromium:717664
TEST=autotest_lib.client.common_lib.test_unittest
Change-Id: I54816624cea455408094b66e2d14a1f2783a8c5b
Reviewed-on: https://chromium-review.googlesource.com/511222
Commit-Ready: Po-Hsien Wang <pwang@chromium.org>
Tested-by: Po-Hsien Wang <pwang@chromium.org>
Reviewed-by: Ilja H. Friedel <ihf@chromium.org>
diff --git a/client/common_lib/test_unittest.py b/client/common_lib/test_unittest.py
index abf1c44..a269207 100755
--- a/client/common_lib/test_unittest.py
+++ b/client/common_lib/test_unittest.py
@@ -398,6 +398,91 @@
"improvement_direction": "up"}}}
self.assertDictEqual(expected_result, json.loads(f.read()))
+ def test_output_list_then_replace_list_perf_value(self):
+ self.test.resultsdir = tempfile.mkdtemp()
+ self.test.output_perf_value("Test", [1, 2, 3], units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test", [4, 5, 6], units="ms",
+ higher_is_better=False,
+ replace_existing_values=True)
+ f = open(self.test.resultsdir + "/results-chart.json")
+ expected_result = {"Test": {"summary": {"units": "ms",
+ "type": "list_of_scalar_values",
+ "values": [4, 5, 6],
+ "improvement_direction": "down"}}}
+ self.assertDictEqual(expected_result, json.loads(f.read()))
+
+ def test_output_single_then_replace_list_perf_value(self):
+ self.test.resultsdir = tempfile.mkdtemp()
+ self.test.output_perf_value("Test", 3, units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test", [4, 5, 6], units="ms",
+ higher_is_better=False,
+ replace_existing_values=True)
+ f = open(self.test.resultsdir + "/results-chart.json")
+ expected_result = {"Test": {"summary": {"units": "ms",
+ "type": "list_of_scalar_values",
+ "values": [4, 5, 6],
+ "improvement_direction": "down"}}}
+ self.assertDictEqual(expected_result, json.loads(f.read()))
+
+ def test_output_list_then_replace_single_perf_value(self):
+ self.test.resultsdir = tempfile.mkdtemp()
+ self.test.output_perf_value("Test", [1,2,3], units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test", 4, units="ms",
+ higher_is_better=False,
+ replace_existing_values=True)
+ f = open(self.test.resultsdir + "/results-chart.json")
+ expected_result = {"Test": {"summary": {"units": "ms",
+ "type": "scalar",
+ "value": 4,
+ "improvement_direction": "down"}}}
+ self.assertDictEqual(expected_result, json.loads(f.read()))
+
+ def test_output_single_then_replace_single_perf_value(self):
+ self.test.resultsdir = tempfile.mkdtemp()
+ self.test.output_perf_value("Test", 1, units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test", 2, units="ms",
+ higher_is_better=False,
+ replace_existing_values=True)
+ f = open(self.test.resultsdir + "/results-chart.json")
+ expected_result = {"Test": {"summary": {"units": "ms",
+ "type": "scalar",
+ "value": 2,
+ "improvement_direction": "down"}}}
+ self.assertDictEqual(expected_result, json.loads(f.read()))
+
+ def test_output_perf_then_replace_certain_perf_value(self):
+ self.test.resultsdir = tempfile.mkdtemp()
+ self.test.output_perf_value("Test1", 1, units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test2", 2, units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test3", 3, units="ms",
+ higher_is_better=False)
+ self.test.output_perf_value("Test2", -1, units="ms",
+ higher_is_better=False,
+ replace_existing_values=True)
+ f = open(self.test.resultsdir + "/results-chart.json")
+ expected_result = {"Test1": {"summary":
+ {"units": "ms",
+ "type": "scalar",
+ "value": 1,
+ "improvement_direction": "down"}},
+ "Test2": {"summary":
+ {"units": "ms",
+ "type": "scalar",
+ "value": -1,
+ "improvement_direction": "down"}},
+ "Test3": {"summary":
+ {"units": "ms",
+ "type": "scalar",
+ "value": 3,
+ "improvement_direction": "down"}}}
+ self.assertDictEqual(expected_result, json.loads(f.read()))
+
def test_chart_supplied(self):
self.test.resultsdir = tempfile.mkdtemp()