1 # -*- coding: utf-8 -*-
\r
3 from unittest import TestCase
\r
7 from slaclient.service.fed4fire import jsonparser
\r
10 class ParseJsonTestCase(TestCase):
\r
14 self.from_json = None
\r
16 self.expirationtime = datetime.datetime.combine(
\r
17 datetime.date.today(),
\r
18 datetime.time(0, 0, 0)
\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
30 dict(servicename="service-name1", name="uptime", metric=None,
\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
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
48 dict(name="sin", bounds=(-1, 1))
\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
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
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
67 d["service_properties"][i].get("servicename"),
\r
68 o.service_properties[i].servicename
\r
71 d["service_properties"][i].get("name"),
\r
72 o.service_properties[i].name
\r
75 d["service_properties"][i].get("metric"),
\r
76 o.service_properties[i].metric
\r
79 d["service_properties"][i].get("location"),
\r
80 o.service_properties[i].location
\r
82 if "guarantees" in d:
\r
83 for i in range(0, len(d["guarantees"])):
\r
85 d["guarantees"][i].get("name"),
\r
86 o.guarantee_terms[i].metric_name
\r
89 d["guarantees"][i].get("bounds"),
\r
90 o.guarantee_terms[i].bounds
\r
93 def test_template_from_json(self):
\r
94 self.from_json = jsonparser.templateinput_from_json
\r
97 # Add fields one by one, and check
\r
100 for key in self.template:
\r
101 if key == "service_properties":
\r
103 for prop in self.template[key]:
\r
104 d[key].append(prop)
\r
105 self._check_dict(d, False)
\r
107 d[key] = self.template[key]
\r
108 self._check_dict(d, False)
\r
110 def test_agreement_from_json(self):
\r
111 self.from_json = jsonparser.agreementinput_from_json
\r
114 # Add fields one by one, and check
\r
118 for key in self.agreement:
\r
119 if key == "guarantees":
\r
121 for term in self.agreement[key]:
\r
122 d[key].append(term)
\r
123 self._check_dict(d, True)
\r
125 d[key] = self.agreement[key]
\r
126 self._check_dict(d, True)
\r