Fix issue where logging a list of performance values was incorrect.

BUG=chromium:595169
TEST=hand execution of test_unittest.py

Change-Id: I945714b7790df1bca06beba9b4f09ef6c725a3c5
Reviewed-on: https://chromium-review.googlesource.com/332890
Commit-Ready: Keith Haddow <haddowk@chromium.org>
Tested-by: Keith Haddow <haddowk@chromium.org>
Reviewed-by: Keith Haddow <haddowk@chromium.org>
diff --git a/client/common_lib/test_unittest.py b/client/common_lib/test_unittest.py
index c735184..f692dc1 100755
--- a/client/common_lib/test_unittest.py
+++ b/client/common_lib/test_unittest.py
@@ -4,6 +4,8 @@
 
 __author__ = 'gps@google.com (Gregory P. Smith)'
 
+import json
+import tempfile
 import unittest
 import common
 from autotest_lib.client.common_lib import test
@@ -291,5 +293,72 @@
         self.god.check_playback()
 
 
+    def test_output_single_perf_value(self):
+        self.test.resultsdir = tempfile.mkdtemp()
+
+        self.test.output_perf_value("Test", 1, units="ms", higher_is_better=True)
+
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "scalar",
+                           "value": 1, "improvement_direction": "up"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
+    def test_output_single_perf_value_twice(self):
+        self.test.resultsdir = tempfile.mkdtemp()
+
+        self.test.output_perf_value("Test", 1, units="ms", higher_is_better=True)
+        self.test.output_perf_value("Test", 2, units="ms", higher_is_better=True)
+
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "list_of_scalar_values",
+                           "values": [1, 2], "improvement_direction": "up"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
+    def test_output_single_perf_value_three_times(self):
+        self.test.resultsdir = tempfile.mkdtemp()
+
+        self.test.output_perf_value("Test", 1, units="ms", higher_is_better=True)
+        self.test.output_perf_value("Test", 2, units="ms", higher_is_better=True)
+        self.test.output_perf_value("Test", 3, units="ms", higher_is_better=True)
+
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "list_of_scalar_values",
+                           "values": [1, 2, 3], "improvement_direction": "up"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
+    def test_output_list_perf_value(self):
+        self.test.resultsdir = tempfile.mkdtemp()
+
+        self.test.output_perf_value("Test", [1, 2, 3], units="ms", higher_is_better=False)
+
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "list_of_scalar_values",
+                           "values": [1, 2, 3], "improvement_direction": "down"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
+    def test_output_single_then_list_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", [4, 3, 2], units="ms", higher_is_better=False)
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "list_of_scalar_values",
+                           "values": [1, 4, 3, 2], "improvement_direction": "down"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
+    def test_output_list_then_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, 3, 2], units="ms", higher_is_better=False)
+        f = open(self.test.resultsdir + "/results-chart.json")
+        expected_result = {"Test": {"summary": {"units": "ms", "type": "list_of_scalar_values",
+                           "values": [1, 2, 3, 4, 3, 2], "improvement_direction": "down"}}}
+        self.assertDictEqual(expected_result, json.loads(f.read()))
+
+
 if __name__ == '__main__':
     unittest.main()