Initial commit
[ta/storage.git] / partfs_rootdisk / tests / localstorage_test.py
diff --git a/partfs_rootdisk/tests/localstorage_test.py b/partfs_rootdisk/tests/localstorage_test.py
new file mode 100644 (file)
index 0000000..763e377
--- /dev/null
@@ -0,0 +1,92 @@
+# Copyright 2019 Nokia
+  
+# 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 unittest
+import json
+import jinja2
+from ansible.plugins.filter.core import regex_search
+
+
+class LocalstorageTest(unittest.TestCase):
+
+    def setUp(self):
+        env = jinja2.Environment(
+           loader=jinja2.FileSystemLoader('./role/templates')
+           )
+        env.filters['search'] = regex_search
+        env.tests['search'] = regex_search
+        self.template = env.get_template('localstorage.j2')
+
+    def ordered(self, obj):
+        if isinstance(obj, dict):
+            return sorted((k, self.ordered(v)) for k, v in obj.items())
+        if isinstance(obj, list):
+            return sorted(self.ordered(x) for x in obj)
+        return obj
+
+    def verify(self, usecase):
+        with open('./tests/inputs/%s.json' % usecase) as data:
+            inventory = json.load(data)
+        rendered = self.template.render(inventory)
+        actual = json.loads(rendered)
+        with open('./tests/outputs/%s.json' % usecase) as data:
+            expected = json.load(data)
+        self.assertEqual(self.ordered(actual), self.ordered(expected))
+
+    def test_single_profile(self):
+        self.verify('single_profile')
+
+    def test_double_profile(self):
+        self.verify('double_profile')
+
+    def test_triple_profile(self):
+        self.verify('triple_profile')
+
+    def test_missing_volume(self):
+        self.verify('missing_volume')
+
+    def test_missing_volume2(self):
+        self.verify('missing_volume2')
+
+    def test_fewer_partition(self):
+        self.verify('fewer_partition')
+
+    def test_multinode_hybrid1(self):
+        self.verify('multinode_hybrid1')
+
+    def test_multinode_hybrid2(self):
+        self.verify('multinode_hybrid2')
+
+    def test_multinode_hybrid3(self):
+        self.verify('multinode_hybrid3')
+
+    def test_multinode_hybrid4(self):
+        self.verify('multinode_hybrid4')
+
+    def test_multinode_hybrid5(self):
+        self.verify('multinode_hybrid5')
+
+    def test_multinode_hybrid6(self):
+        self.verify('multinode_hybrid6')
+
+    def test_multinode_hybrid7(self):
+        self.verify('multinode_hybrid7')
+
+    def test_multinode_hybrid8(self):
+        self.verify('multinode_hybrid8')
+
+    def test_multinode_hybrid9(self):
+        self.verify('multinode_hybrid9')
+
+if __name__ == '__main__':
+    unittest.main()