summaryrefslogtreecommitdiffstats
path: root/tests/carbon/json_to_carbon_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/carbon/json_to_carbon_test.py')
-rw-r--r--tests/carbon/json_to_carbon_test.py120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/carbon/json_to_carbon_test.py b/tests/carbon/json_to_carbon_test.py
new file mode 100644
index 0000000..ea261af
--- /dev/null
+++ b/tests/carbon/json_to_carbon_test.py
@@ -0,0 +1,120 @@
+##############################################################################
+# Copyright (c) 2015 EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import unittest
+
+import json
+
+import carbon.converter
+
+class JSONToCarbonTest(unittest.TestCase):
+
+ single_json_text_element = """{ "timestamp" : "timestamp", "key" : "value" }"""
+ single_json_numeric_element = """{ "timestamp" : "timestamp", "key" : 123 }"""
+ single_json_key_with_spaces = """{ "timestamp" : "timestamp", "key with spaces" : "value" }"""
+ single_json_value_with_spaces = """{ "timestamp" : "timestamp", "key" : "value with spaces" }"""
+ json_map_name_with_spaces = """{ "timestamp" : "timestamp", "map with spaces" : { "key" : "value" } }"""
+ json_list_name_with_spaces = """{ "timestamp" : "timestamp", "list with spaces" : [{ "key" : "value" }] }"""
+
+ sample_json = """
+{
+ "colorsArray":[{
+ "colorName":"red",
+ "hexValue":"#f00"
+ },
+ {
+ "colorName":"green",
+ "hexValue":"#0f0"
+ },
+ {
+ "colorName":"blue",
+ "hexValue":"#00f"
+ }
+ ]
+}"""
+
+ simple_fio_json = """
+{
+ "fio version" : "fio-2.2.10",
+ "timestamp" : 1444144664,
+ "time" : "Tue Oct 6 11:17:44 2015",
+ "jobs" : [
+ {
+ "jobname" : "random-read",
+ "groupid" : 0,
+ "error" : 0,
+ "eta" : 0,
+ "elapsed" : 26,
+ "read" : {
+ "io_bytes" : 7116,
+ "bw" : 275,
+ "iops" : 68.99,
+ "runtime" : 25788,
+ "total_ios" : 1779,
+ "short_ios" : 0,
+ "drop_ios" : 0,
+ "slat" : {
+ "min" : 0,
+ "max" : 0,
+ "mean" : 0.00,
+ "stddev" : 0.00
+ }
+ }
+ }]
+}
+"""
+
+ def setUp(self):
+ pass
+
+ def test_to_string(self):
+ testconv = carbon.converter.JSONToCarbon()
+ json_object = json.loads(self.simple_fio_json)
+ result = testconv.convert_to_dictionary(json_object, "host.run-name")
+ self.assertEqual("7116 1444144664", result["host.run-name.jobs.1.read.io_bytes"], result["host.run-name.jobs.1.read.io_bytes"])
+
+ def test_single_text_element_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.single_json_text_element))
+
+ self.assertEqual("value timestamp", result["key"], result["key"])
+
+ def test_single_numeric_element_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.single_json_numeric_element))
+
+ self.assertEqual("123 timestamp", result["key"], result["key"])
+
+ def test_single_text_key_space_element_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.single_json_key_with_spaces))
+
+ self.assertEqual("value timestamp", result["key_with_spaces"], result["key_with_spaces"])
+
+ def test_single_text_value_space_element_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.single_json_value_with_spaces))
+
+ self.assertEqual("value_with_spaces timestamp", result["key"], result["key"])
+
+ def test_map_name_with_space_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.json_map_name_with_spaces))
+
+ self.assertEqual("value timestamp", result["map_with_spaces.key"], result["map_with_spaces.key"])
+
+ def test_list_name_with_space_no_prefix(self):
+ testconv = carbon.converter.JSONToCarbon()
+ result = testconv.convert_to_dictionary(json.loads(self.json_list_name_with_spaces))
+
+ self.assertEqual("value timestamp", result["list_with_spaces.1.key"], result["list_with_spaces.1.key"])
+
+
+if __name__ == '__main__':
+ unittest.main() \ No newline at end of file