SLA and Service Directory code added
[unfold.git] / sla / slaclient / service / fed4fire / tests / testparsejson.py
1 # -*- coding: utf-8 -*-\r
2 \r
3 from unittest import TestCase\r
4 import datetime\r
5 import json\r
6 \r
7 from slaclient.service.fed4fire import jsonparser\r
8 \r
9 \r
10 class ParseJsonTestCase(TestCase):\r
11 \r
12     def setUp(self):\r
13 \r
14         self.from_json = None\r
15 \r
16         self.expirationtime = datetime.datetime.combine(\r
17             datetime.date.today(),\r
18             datetime.time(0, 0, 0)\r
19         )\r
20 \r
21         self.template = dict(\r
22             template_id="template-id",\r
23             template_name="template-name",\r
24             provider="provider-id",\r
25             service_id="service-id",\r
26             expiration_time=self.expirationtime.isoformat(),\r
27             service_properties=[\r
28                 dict(servicename=None, name="uptime", metric=None,\r
29                      location=None),\r
30                 dict(servicename="service-name1", name="uptime", metric=None,\r
31                      location=""),\r
32                 dict(servicename="service-name2", name="metric1",\r
33                      metric="xs:string", location=None),\r
34                 dict(servicename="service-name2", name="metric2",\r
35                      metric="xs:double", location="//monitoring/metric2")\r
36             ]\r
37         )\r
38 \r
39         self.agreement = dict(\r
40             agreement_id="agreement-id",\r
41             template_id="template-id",\r
42             agreement_name="agreement-name",\r
43             consumer="consumer-id",\r
44             provider="provider-id",\r
45             service_id="service-id",\r
46             expiration_time=self.expirationtime.isoformat(),\r
47             guarantees=[\r
48                 dict(name="sin", bounds=(-1, 1))\r
49             ]\r
50         )\r
51 \r
52     def _check_dict(self, d, is_agreement):\r
53         o = self.from_json(json.dumps(d))\r
54         self.assertEquals(d.get("template_id", None), o.template_id)\r
55         if is_agreement:\r
56             self.assertEquals(d.get("agreement_id"), o.agreement_id or None)\r
57             self.assertEquals(d.get("agreement_name"), o.agreement_name)\r
58             self.assertEquals(d.get("consumer"), o.consumer or None)\r
59         else:\r
60             self.assertEquals(d.get("template_name"), o.template_name or None)\r
61         self.assertEquals(d.get("provider"), o.provider)\r
62         self.assertEquals(d.get("service_id"), o.service_id)\r
63         self.assertEquals(d.get("expiration_time"), o.expiration_time_iso)\r
64         if "service_properties" in d:\r
65             for i in range(0, len(d["service_properties"])):\r
66                 self.assertEquals(\r
67                     d["service_properties"][i].get("servicename"),\r
68                     o.service_properties[i].servicename\r
69                 )\r
70                 self.assertEquals(\r
71                     d["service_properties"][i].get("name"),\r
72                     o.service_properties[i].name\r
73                 )\r
74                 self.assertEquals(\r
75                     d["service_properties"][i].get("metric"),\r
76                     o.service_properties[i].metric\r
77                 )\r
78                 self.assertEquals(\r
79                     d["service_properties"][i].get("location"),\r
80                     o.service_properties[i].location\r
81                 )\r
82         if "guarantees" in d:\r
83             for i in range(0, len(d["guarantees"])):\r
84                 self.assertEquals(\r
85                     d["guarantees"][i].get("name"),\r
86                     o.guarantee_terms[i].metric_name\r
87                 )\r
88                 self.assertEquals(\r
89                     d["guarantees"][i].get("bounds"),\r
90                     o.guarantee_terms[i].bounds\r
91                 )\r
92 \r
93     def test_template_from_json(self):\r
94         self.from_json = jsonparser.templateinput_from_json\r
95 \r
96         #\r
97         # Add fields one by one, and check\r
98         #\r
99         d = dict()\r
100         for key in self.template:\r
101             if key == "service_properties":\r
102                 d[key] = []\r
103                 for prop in self.template[key]:\r
104                     d[key].append(prop)\r
105                     self._check_dict(d, False)\r
106             else:\r
107                 d[key] = self.template[key]\r
108                 self._check_dict(d, False)\r
109 \r
110     def test_agreement_from_json(self):\r
111         self.from_json = jsonparser.agreementinput_from_json\r
112 \r
113         #\r
114         # Add fields one by one, and check\r
115         #\r
116         d = dict()\r
117 \r
118         for key in self.agreement:\r
119             if key == "guarantees":\r
120                 d[key] = []\r
121                 for term in self.agreement[key]:\r
122                     d[key].append(term)\r
123                     self._check_dict(d, True)\r
124             else:\r
125                 d[key] = self.agreement[key]\r
126                 self._check_dict(d, True)\r