1 # -*- coding: utf-8 -*-
\r
3 from unittest import TestCase
\r
6 from slaclient import wsag_model
\r
7 from slaclient import xmlconverter
\r
8 import slaclient.templates.fed4fire
\r
9 from slaclient.templates.fed4fire import TemplateInput
\r
10 from slaclient.templates.fed4fire import AgreementInput
\r
15 class TemplatesTestCase(TestCase):
\r
18 self.converter = xmlconverter.AgreementConverter()
\r
20 self.expirationtime = datetime.datetime.combine(
\r
21 datetime.date.today(),
\r
22 datetime.time(0, 0, 0)
\r
24 self.templateinput = TemplateInput(
\r
25 template_id="template-id",
\r
26 template_name="template-name",
\r
27 service_id="service-name",
\r
28 expiration_time=self.expirationtime,
\r
29 service_properties=[
\r
30 wsag_model.Agreement.Property(
\r
34 wsag_model.Agreement.Property(
\r
35 name="responsetime",
\r
36 location="responsetime"),
\r
37 wsag_model.Agreement.Property(
\r
39 metric="xs:string"),
\r
42 self.agreementinput = AgreementInput(
\r
43 agreement_id="agreement-id",
\r
44 agreement_name="agreement-name",
\r
45 consumer="consumer-id",
\r
46 provider="provider-id",
\r
47 service_id="service-name",
\r
48 template_id="template-id",
\r
49 expiration_time=self.expirationtime,
\r
50 service_properties=self.templateinput.service_properties,
\r
52 AgreementInput.GuaranteeTerm(
\r
55 AgreementInput.GuaranteeTerm(
\r
56 "responsetime", (0, 200)
\r
61 def test_template(self):
\r
62 slatemplate = slaclient.templates.fed4fire.render_slatemplate(
\r
65 # convert xml to wsag_model classes
\r
66 actual = xmlconverter.convertstring(self.converter, slatemplate)
\r
67 """:type: wsag_model.Template"""
\r
69 expected = self.templateinput
\r
72 expected.template_id,
\r
75 self._check_common(expected, actual)
\r
78 def test_agreement(self):
\r
79 slaagreement = slaclient.templates.fed4fire.render_slaagreement(
\r
82 # convert xml to wsag_model classes
\r
83 actual = xmlconverter.convertstring(self.converter, slaagreement)
\r
84 """:type: wsag_model.Agreement"""
\r
86 expected = self.agreementinput
\r
89 expected.agreement_id,
\r
92 expected.consumer and self.assertEquals(
\r
94 actual.context.consumer
\r
96 self._check_common(expected, actual)
\r
97 self._check_guarantee_terms(expected, actual)
\r
100 def _check_common(self, expected, actual):
\r
101 if expected.provider:
\r
104 actual.context.provider
\r
107 expected.expiration_time_iso,
\r
108 actual.context.expirationtime
\r
111 expected.service_id,
\r
112 actual.context.service
\r
114 self._check_properties(expected, actual)
\r
116 def _check_properties(self, expected, actual):
\r
117 for expected_prop in expected.service_properties:
\r
118 actual_prop = actual.variables[expected_prop.name]
\r
120 expected_prop.name,
\r
124 expected_prop.location or expected_prop.name,
\r
125 actual_prop.location
\r
128 expected_prop.metric or 'xs:double',
\r
132 def _check_guarantee_terms(self, expected, actual):
\r
134 :type expected: AgreementInput
\r
135 :type actual: wsag_model.Agreement
\r
137 for expected_term in expected.guarantee_terms:
\r
138 actual_term = actual.guaranteeterms[expected_term.name]
\r
140 if actual_term is None:
\r
141 self.assertEquals(expected_term.name, None)
\r
143 expected_term.kpiname,
\r
144 actual_term.servicelevelobjective.kpiname
\r