SLA and Service Directory code added
[myslice.git] / sla / slaclient / service / fed4fire / tests / testparsejson.py
diff --git a/sla/slaclient/service/fed4fire/tests/testparsejson.py b/sla/slaclient/service/fed4fire/tests/testparsejson.py
new file mode 100755 (executable)
index 0000000..7710f0f
--- /dev/null
@@ -0,0 +1,126 @@
+# -*- coding: utf-8 -*-\r
+\r
+from unittest import TestCase\r
+import datetime\r
+import json\r
+\r
+from slaclient.service.fed4fire import jsonparser\r
+\r
+\r
+class ParseJsonTestCase(TestCase):\r
+\r
+    def setUp(self):\r
+\r
+        self.from_json = None\r
+\r
+        self.expirationtime = datetime.datetime.combine(\r
+            datetime.date.today(),\r
+            datetime.time(0, 0, 0)\r
+        )\r
+\r
+        self.template = dict(\r
+            template_id="template-id",\r
+            template_name="template-name",\r
+            provider="provider-id",\r
+            service_id="service-id",\r
+            expiration_time=self.expirationtime.isoformat(),\r
+            service_properties=[\r
+                dict(servicename=None, name="uptime", metric=None,\r
+                     location=None),\r
+                dict(servicename="service-name1", name="uptime", metric=None,\r
+                     location=""),\r
+                dict(servicename="service-name2", name="metric1",\r
+                     metric="xs:string", location=None),\r
+                dict(servicename="service-name2", name="metric2",\r
+                     metric="xs:double", location="//monitoring/metric2")\r
+            ]\r
+        )\r
+\r
+        self.agreement = dict(\r
+            agreement_id="agreement-id",\r
+            template_id="template-id",\r
+            agreement_name="agreement-name",\r
+            consumer="consumer-id",\r
+            provider="provider-id",\r
+            service_id="service-id",\r
+            expiration_time=self.expirationtime.isoformat(),\r
+            guarantees=[\r
+                dict(name="sin", bounds=(-1, 1))\r
+            ]\r
+        )\r
+\r
+    def _check_dict(self, d, is_agreement):\r
+        o = self.from_json(json.dumps(d))\r
+        self.assertEquals(d.get("template_id", None), o.template_id)\r
+        if is_agreement:\r
+            self.assertEquals(d.get("agreement_id"), o.agreement_id or None)\r
+            self.assertEquals(d.get("agreement_name"), o.agreement_name)\r
+            self.assertEquals(d.get("consumer"), o.consumer or None)\r
+        else:\r
+            self.assertEquals(d.get("template_name"), o.template_name or None)\r
+        self.assertEquals(d.get("provider"), o.provider)\r
+        self.assertEquals(d.get("service_id"), o.service_id)\r
+        self.assertEquals(d.get("expiration_time"), o.expiration_time_iso)\r
+        if "service_properties" in d:\r
+            for i in range(0, len(d["service_properties"])):\r
+                self.assertEquals(\r
+                    d["service_properties"][i].get("servicename"),\r
+                    o.service_properties[i].servicename\r
+                )\r
+                self.assertEquals(\r
+                    d["service_properties"][i].get("name"),\r
+                    o.service_properties[i].name\r
+                )\r
+                self.assertEquals(\r
+                    d["service_properties"][i].get("metric"),\r
+                    o.service_properties[i].metric\r
+                )\r
+                self.assertEquals(\r
+                    d["service_properties"][i].get("location"),\r
+                    o.service_properties[i].location\r
+                )\r
+        if "guarantees" in d:\r
+            for i in range(0, len(d["guarantees"])):\r
+                self.assertEquals(\r
+                    d["guarantees"][i].get("name"),\r
+                    o.guarantee_terms[i].metric_name\r
+                )\r
+                self.assertEquals(\r
+                    d["guarantees"][i].get("bounds"),\r
+                    o.guarantee_terms[i].bounds\r
+                )\r
+\r
+    def test_template_from_json(self):\r
+        self.from_json = jsonparser.templateinput_from_json\r
+\r
+        #\r
+        # Add fields one by one, and check\r
+        #\r
+        d = dict()\r
+        for key in self.template:\r
+            if key == "service_properties":\r
+                d[key] = []\r
+                for prop in self.template[key]:\r
+                    d[key].append(prop)\r
+                    self._check_dict(d, False)\r
+            else:\r
+                d[key] = self.template[key]\r
+                self._check_dict(d, False)\r
+\r
+    def test_agreement_from_json(self):\r
+        self.from_json = jsonparser.agreementinput_from_json\r
+\r
+        #\r
+        # Add fields one by one, and check\r
+        #\r
+        d = dict()\r
+\r
+        for key in self.agreement:\r
+            if key == "guarantees":\r
+                d[key] = []\r
+                for term in self.agreement[key]:\r
+                    d[key].append(term)\r
+                    self._check_dict(d, True)\r
+            else:\r
+                d[key] = self.agreement[key]\r
+                self._check_dict(d, True)\r