############################################################################## # 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 ############################################################################## from storperf.carbon.converter import Converter import json import unittest class JSONToCarbonTest(unittest.TestCase): single_json_text_element = """{ "key" : "value" }""" single_json_numeric_element = """{ "key" : 123 }""" single_json_key_with_spaces = """{ "key with spaces" : "value" }""" single_json_value_with_spaces = """{ "key" : "value with spaces" }""" json_map_name_with_spaces = \ """{ "map with spaces" : { "key" : "value" } }""" json_list_name_with_spaces = \ """{ "list with spaces" : [{ "key" : "value" }] }""" 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 = Converter() json_object = json.loads(self.simple_fio_json) result = testconv.convert_json_to_flat(json_object, "host.run-name") self.assertEqual("7116", 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 = Converter() result = testconv.convert_json_to_flat( json.loads(self.single_json_text_element)) self.assertEqual("value", result["key"], result["key"]) def test_single_numeric_element_no_prefix(self): testconv = Converter() result = testconv.convert_json_to_flat( json.loads(self.single_json_numeric_element)) self.assertEqual("123", result["key"], result["key"]) def test_single_text_key_space_element_no_prefix(self): testconv = Converter() result = testconv.convert_json_to_flat( json.loads(self.single_json_key_with_spaces)) self.assertEqual( "value", result["key_with_spaces"], result["key_with_spaces"]) def test_single_text_value_space_element_no_prefix(self): testconv = Converter() result = testconv.convert_json_to_flat( json.loads(self.single_json_value_with_spaces)) self.assertEqual("value_with_spaces", result["key"], result["key"]) def test_map_name_with_space_no_prefix(self): testconv = Converter() result = testconv.convert_json_to_flat( json.loads(self.json_map_name_with_spaces)) self.assertEqual( "value", result["map_with_spaces.key"], result["map_with_spaces.key"]) def test_list_name_with_space_no_prefix(self): testconv = Converter() result = testconv.convert_json_to_flat( json.loads(self.json_list_name_with_spaces)) self.assertEqual( "value", result["list_with_spaces.1.key"], result["list_with_spaces.1.key"]) if __name__ == '__main__': unittest.main()