diff options
Diffstat (limited to 'heatclient/tests/unit/test_resource_formatter.py')
-rw-r--r-- | heatclient/tests/unit/test_resource_formatter.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/heatclient/tests/unit/test_resource_formatter.py b/heatclient/tests/unit/test_resource_formatter.py new file mode 100644 index 0000000..e3a053d --- /dev/null +++ b/heatclient/tests/unit/test_resource_formatter.py @@ -0,0 +1,100 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +import json +import os +import six + +from heatclient.common import resource_formatter +from heatclient.osc.v1 import resource +from heatclient.tests.unit.osc.v1 import fakes as orchestration_fakes +from heatclient.v1 import resources as v1_resources + + +TEST_VAR_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), + 'var')) + + +class TestStackResourceListDotFormat(orchestration_fakes.TestOrchestrationv1): + + response_path = os.path.join(TEST_VAR_DIR, 'dot_test.json') + + data = '''digraph G { + graph [ + fontsize=10 fontname="Verdana" compound=true rankdir=LR + ] + r_f34a35baf594b319a741 [label="rg1 +OS::Heat::ResourceGroup" ]; + r_121e343b017a6d246f36 [label="random2 +OS::Heat::RandomString" ]; + r_dbcae38ad41dc991751d [label="random1 +OS::Heat::RandomString" style=filled color=red]; + + subgraph cluster_stack_16437984473ec64a8e6c { + label="rg1"; + r_30e9aa76bc0d53310cde [label="1 +OS::Heat::ResourceGroup" ]; + r_63c05d424cb708f1599f [label="0 +OS::Heat::ResourceGroup" ]; + + } + + subgraph cluster_stack_fbfb461c8cc84b686c08 { + label="1"; + r_e2e5c36ae18e29d9c299 [label="1 +OS::Heat::RandomString" ]; + r_56c62630a0d655bce234 [label="0 +OS::Heat::RandomString" ]; + + } + + subgraph cluster_stack_d427657dfccc28a131a7 { + label="0"; + r_240756913e2e940387ff [label="1 +OS::Heat::RandomString" ]; + r_81c64c43d9131aceedbb [label="0 +OS::Heat::RandomString" ]; + + } + + r_f34a35baf594b319a741 -> r_30e9aa76bc0d53310cde [ + color=dimgray lhead=cluster_stack_16437984473ec64a8e6c arrowhead=none + ]; + r_30e9aa76bc0d53310cde -> r_e2e5c36ae18e29d9c299 [ + color=dimgray lhead=cluster_stack_fbfb461c8cc84b686c08 arrowhead=none + ]; + r_63c05d424cb708f1599f -> r_240756913e2e940387ff [ + color=dimgray lhead=cluster_stack_d427657dfccc28a131a7 arrowhead=none + ]; + + r_dbcae38ad41dc991751d -> r_121e343b017a6d246f36; + +} +''' + + def setUp(self): + super(TestStackResourceListDotFormat, self).setUp() + self.resource_client = self.app.client_manager.orchestration.resources + self.cmd = resource.ResourceList(self.app, None) + with open(self.response_path) as f: + response = json.load(f) + self.resources = [] + for r in response['resources']: + self.resources.append(v1_resources.Resource(None, r)) + + def test_resource_list(self): + out = six.StringIO() + formatter = resource_formatter.ResourceDotFormatter() + formatter.emit_list(None, self.resources, out, None) + + self.assertEqual(self.data, out.getvalue()) |