Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: infra/tools/metric_tool/test/metric_tool_test.py

Issue 1368583005: Create metric_tool to deal with metric definitions (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « infra/tools/metric_tool/test/data/other_tests.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: infra/tools/metric_tool/test/metric_tool_test.py
diff --git a/infra/tools/metric_tool/test/metric_tool_test.py b/infra/tools/metric_tool/test/metric_tool_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..202a8fdada67c0a1ce261d9da7c5d2793dcf189f
--- /dev/null
+++ b/infra/tools/metric_tool/test/metric_tool_test.py
@@ -0,0 +1,83 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import os
+import unittest
+
+from infra.tools.metric_tool import metric_tool
+from infra_libs import temporary_directory
+
+
+DATA_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data')
+
+
+class MainMetricToolTest(unittest.TestCase):
+ def test_smoke_main(self):
+ metric_tool.main(DATA_DIR)
+
+
+class DescriptionExtractionTest(unittest.TestCase):
+ def test_extract_normal_case(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'normal_case.py'))
+
+ self.assertEqual(len(descriptions), len(metric_tool.METRICS_NAMES))
+ # Cheap way of testing we're retrieving the correct strings.
+ for filename, _, name, desc in descriptions:
+ self.assertTrue(filename.endswith('normal_case.py'))
+ self.assertTrue(name.endswith(desc))
+
+ def test_extract_normal_case_2(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'normal_case_2.py'))
+
+ self.assertEqual(len(descriptions), len(metric_tool.METRICS_NAMES))
+ # Cheap way of testing we're retrieving the correct strings.
+ for filename, _, name, desc in descriptions:
+ self.assertTrue(filename.endswith('normal_case_2.py'))
+ self.assertTrue(name.endswith(desc))
+
+ def test_missing_descriptions(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'missing_descriptions.py'))
+
+ self.assertEqual(len(descriptions), 9)
+
+ self.assertEqual(sum([desc[3] is None for desc in descriptions]), 5)
+ self.assertEqual(sum([desc[3] is not None for desc in descriptions]), 4)
+
+ # Cheap way of testing we're retrieving the correct strings.
+ for filename, _, name, desc in descriptions:
+ self.assertTrue(filename.endswith('missing_descriptions.py'))
+ self.assertTrue(desc is None or name.endswith(desc))
+
+ def test_metric_name_not_a_string(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'metric_name_not_a_string.py'))
+ self.assertEqual(len(descriptions), 1)
+ self.assertEqual(descriptions[0][2], 'DYNAMIC')
+ self.assertEqual(descriptions[0][3], 'metric1')
+
+ def test_missing_file(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'should_not_exist.py'))
+ self.assertEqual(descriptions, [])
+
+ def test_invalid_syntax(self):
+ with temporary_directory(prefix='metric_tool-') as tempdir:
+ tempfile = os.path.join(tempdir, 'invalid_syntax.py')
+ with open(tempfile, 'w') as f:
+ f.write('=1\n')
+
+ descriptions = metric_tool.extract_metrics_descriptions(tempfile)
+
+ self.assertEqual(descriptions, [])
+
+ def test_other_tests(self):
+ descriptions = metric_tool.extract_metrics_descriptions(
+ os.path.join(DATA_DIR, 'other_tests.py'))
+ self.assertEqual(len(descriptions), 1)
+ description = descriptions[0]
+ self.assertEqual(description[2], '/my/metric')
+ self.assertEqual(description[3], None)
« no previous file with comments | « infra/tools/metric_tool/test/data/other_tests.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698