Exemplo n.º 1
0
    def test_list_extensions_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        root = etree.XML(response.body)
        self.assertEqual(root.tag.split('extensions')[0], NS)

        # Make sure we have all the extensions, extras extensions being OK.
        exts = root.findall('{0}extension'.format(NS))
        self.assertTrue(len(exts) >= len(self.ext_list))

        # Make sure that at least Fox in Sox is correct.
        (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX']
        self.assertEqual(fox_ext.get('name'), 'Fox In Socks')
        self.assertEqual(
            fox_ext.get('namespace'),
            'http://www.fox.in.socks/api/ext/pie/v1.0')
        self.assertEqual(fox_ext.get('updated'), '2011-01-22T13:25:27-06:00')
        self.assertEqual(
            fox_ext.findtext('{0}description'.format(NS)),
            'The Fox In Socks Extension')

        xmlutil.validate_schema(root, 'extensions')
Exemplo n.º 2
0
    def test_list_extensions_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        root = etree.XML(response.body)
        self.assertEqual(root.tag.split('extensions')[0], NS)

        # Make sure we have all the extensions, extras extensions being OK.
        exts = root.findall('{0}extension'.format(NS))
        self.assertGreaterEqual(len(exts), len(self.ext_list))

        # Make sure that at least Fox in Sox is correct.
        (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX']
        self.assertEqual('Fox In Socks', fox_ext.get('name'))
        self.assertEqual(
            'http://www.fox.in.socks/api/ext/pie/v1.0',
            fox_ext.get('namespace'))
        self.assertEqual('2011-01-22T13:25:27-06:00', fox_ext.get('updated'))
        self.assertEqual(
            'The Fox In Socks Extension.',
            fox_ext.findtext('{0}description'.format(NS)))

        xmlutil.validate_schema(root, 'extensions')
    def test_qos_associations_serializer(self):
        fixture = {
            "qos_associations": [{
                "association_type": "volume_type",
                "name": "type-4",
                "id": "14d54d29-51a4-4046-9f6f-cf9800323563"
            }, {
                "association_type": "volume_type",
                "name": "type-2",
                "id": "3689ce83-308d-4ba1-8faf-7f1be04a282b"
            }]
        }

        output = self.serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'qos_associations')
        association_elems = root.findall("associations")
        self.assertEqual(len(association_elems), 2)
        for i, association_elem in enumerate(association_elems):
            association_dict = fixture['qos_associations'][i]

            # check qos_spec attributes
            for key in ['name', 'id', 'association_type']:
                self.assertEqual(association_elem.get(key),
                                 str(association_dict[key]))
Exemplo n.º 4
0
    def test_qos_associations_serializer(self):
        fixture = {
            "qos_associations": [
                {
                    "association_type": "volume_type",
                    "name": "type-4",
                    "id": "14d54d29-51a4-4046-9f6f-cf9800323563"
                },
                {
                    "association_type": "volume_type",
                    "name": "type-2",
                    "id": "3689ce83-308d-4ba1-8faf-7f1be04a282b"}
            ]
        }

        output = self.serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'qos_associations')
        association_elems = root.findall("associations")
        self.assertEqual(len(association_elems), 2)
        for i, association_elem in enumerate(association_elems):
            association_dict = fixture['qos_associations'][i]

            # check qos_spec attributes
            for key in ['name', 'id', 'association_type']:
                self.assertEqual(association_elem.get(key),
                                 str(association_dict[key]))
Exemplo n.º 5
0
    def test_index(self):
        serializer = limits.LimitsTemplate()
        fixture = {
            "limits": {
                "rate": [
                    {
                        "uri": "*",
                        "regex": ".*",
                        "limit": [
                            {
                                "value": 10,
                                "verb": "POST",
                                "remaining": 2,
                                "unit": "MINUTE",
                                "next-available": "2011-12-15T22:42:45Z",
                            }
                        ],
                    },
                    {
                        "uri": "*/servers",
                        "regex": "^/servers",
                        "limit": [
                            {
                                "value": 50,
                                "verb": "POST",
                                "remaining": 10,
                                "unit": "DAY",
                                "next-available": "2011-12-15T22:42:45Z",
                            }
                        ],
                    },
                ],
                "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240},
            }
        }

        output = serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, "limits")

        # verify absolute limits
        absolutes = root.xpath("ns:absolute/ns:limit", namespaces=NS)
        self.assertEqual(len(absolutes), 4)
        for limit in absolutes:
            name = limit.get("name")
            value = limit.get("value")
            self.assertEqual(value, str(fixture["limits"]["absolute"][name]))

        # verify rate limits
        rates = root.xpath("ns:rates/ns:rate", namespaces=NS)
        self.assertEqual(len(rates), 2)
        for i, rate in enumerate(rates):
            for key in ["uri", "regex"]:
                self.assertEqual(rate.get(key), str(fixture["limits"]["rate"][i][key]))
            rate_limits = rate.xpath("ns:limit", namespaces=NS)
            self.assertEqual(len(rate_limits), 1)
            for j, limit in enumerate(rate_limits):
                for key in ["verb", "value", "remaining", "unit", "next-available"]:
                    self.assertEqual(limit.get(key), str(fixture["limits"]["rate"][i]["limit"][j][key]))
Exemplo n.º 6
0
    def test_index(self):
        serializer = limits.LimitsTemplate()
        fixture = {
            "limits": {
                "rate": [{
                    "uri": "*",
                    "regex": ".*",
                    "limit": [{
                        "value": 10,
                        "verb": "POST",
                        "remaining": 2,
                        "unit": "MINUTE",
                        "next-available": "2011-12-15T22:42:45Z"}]},
                    {"uri": "*/servers",
                     "regex": "^/servers",
                     "limit": [{
                         "value": 50,
                         "verb": "POST",
                         "remaining": 10,
                         "unit": "DAY",
                         "next-available": "2011-12-15T22:42:45Z"}]}],
                "absolute": {"maxServerMeta": 1,
                             "maxImageMeta": 1,
                             "maxPersonality": 5,
                             "maxPersonalitySize": 10240}}}

        output = serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'limits')

        #verify absolute limits
        absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS)
        self.assertEqual(len(absolutes), 4)
        for limit in absolutes:
            name = limit.get('name')
            value = limit.get('value')
            self.assertEqual(value, str(fixture['limits']['absolute'][name]))

        #verify rate limits
        rates = root.xpath('ns:rates/ns:rate', namespaces=NS)
        self.assertEqual(len(rates), 2)
        for i, rate in enumerate(rates):
            for key in ['uri', 'regex']:
                self.assertEqual(rate.get(key),
                                 str(fixture['limits']['rate'][i][key]))
            rate_limits = rate.xpath('ns:limit', namespaces=NS)
            self.assertEqual(len(rate_limits), 1)
            for j, limit in enumerate(rate_limits):
                for key in ['verb', 'value', 'remaining', 'unit',
                            'next-available']:
                    self.assertEqual(
                        limit.get(key),
                        str(fixture['limits']['rate'][i]['limit'][j][key]))
Exemplo n.º 7
0
    def test_index(self):
        serializer = limits.LimitsTemplate()
        fixture = {
            "limits": {
                "rate": [{
                    "uri": "*",
                    "regex": ".*",
                    "limit": [{
                        "value": 10,
                        "verb": "POST",
                        "remaining": 2,
                        "unit": "MINUTE",
                        "next-available": "2011-12-15T22:42:45Z"}]},
                    {"uri": "*/servers",
                     "regex": "^/servers",
                     "limit": [{
                         "value": 50,
                         "verb": "POST",
                         "remaining": 10,
                         "unit": "DAY",
                         "next-available": "2011-12-15T22:42:45Z"}]}],
                "absolute": {"maxServerMeta": 1,
                             "maxImageMeta": 1,
                             "maxPersonality": 5,
                             "maxPersonalitySize": 10240}}}

        output = serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'limits')

        # verify absolute limits
        absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS)
        self.assertEqual(4, len(absolutes))
        for limit in absolutes:
            name = limit.get('name')
            value = limit.get('value')
            self.assertEqual(str(fixture['limits']['absolute'][name]), value)

        # verify rate limits
        rates = root.xpath('ns:rates/ns:rate', namespaces=NS)
        self.assertEqual(2, len(rates))
        for i, rate in enumerate(rates):
            for key in ['uri', 'regex']:
                self.assertEqual(str(fixture['limits']['rate'][i][key]),
                                 rate.get(key))
            rate_limits = rate.xpath('ns:limit', namespaces=NS)
            self.assertEqual(1, len(rate_limits))
            for j, limit in enumerate(rate_limits):
                for key in ['verb', 'value', 'remaining', 'unit',
                            'next-available']:
                    self.assertEqual(
                        str(fixture['limits']['rate'][i]['limit'][j][key]),
                        limit.get(key))
Exemplo n.º 8
0
    def test_index_no_limits(self):
        serializer = limits.LimitsTemplate()

        fixture = {"limits": {"rate": [], "absolute": {}}}

        output = serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'limits')

        # verify absolute limits
        absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS)
        self.assertEqual(0, len(absolutes))

        # verify rate limits
        rates = root.xpath('ns:rates/ns:rate', namespaces=NS)
        self.assertEqual(0, len(rates))
Exemplo n.º 9
0
    def test_index_no_limits(self):
        serializer = limits.LimitsTemplate()

        fixture = {"limits": {"rate": [], "absolute": {}}}

        output = serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, "limits")

        # verify absolute limits
        absolutes = root.xpath("ns:absolute/ns:limit", namespaces=NS)
        self.assertEqual(len(absolutes), 0)

        # verify rate limits
        rates = root.xpath("ns:rates/ns:rate", namespaces=NS)
        self.assertEqual(len(rates), 0)
Exemplo n.º 10
0
    def test_get_extension_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        xml = response.body

        root = etree.XML(xml)
        self.assertEqual(NS, root.tag.split("extension")[0])
        self.assertEqual("FOXNSOX", root.get("alias"))
        self.assertEqual("Fox In Socks", root.get("name"))
        self.assertEqual("http://www.fox.in.socks/api/ext/pie/v1.0", root.get("namespace"))
        self.assertEqual("2011-01-22T13:25:27-06:00", root.get("updated"))
        self.assertEqual("The Fox In Socks Extension.", root.findtext("{0}description".format(NS)))

        xmlutil.validate_schema(root, "extension")
Exemplo n.º 11
0
    def test_get_extension_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        xml = response.body

        root = etree.XML(xml)
        self.assertEqual(root.tag.split('extension')[0], NS)
        self.assertEqual(root.get('alias'), 'FOXNSOX')
        self.assertEqual(root.get('name'), 'Fox In Socks')
        self.assertEqual(root.get('namespace'),
                         'http://www.fox.in.socks/api/ext/pie/v1.0')
        self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00')
        self.assertEqual(root.findtext('{0}description'.format(NS)),
                         'The Fox In Socks Extension.')

        xmlutil.validate_schema(root, 'extension')
Exemplo n.º 12
0
    def test_get_extension_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)
        xml = response.body

        root = etree.XML(xml)
        self.assertEqual(NS, root.tag.split('extension')[0])
        self.assertEqual('FOXNSOX', root.get('alias'))
        self.assertEqual('Fox In Socks', root.get('name'))
        self.assertEqual('http://www.fox.in.socks/api/ext/pie/v1.0',
                         root.get('namespace'))
        self.assertEqual('2011-01-22T13:25:27-06:00', root.get('updated'))
        self.assertEqual('The Fox In Socks Extension.',
                         root.findtext('{0}description'.format(NS)))

        xmlutil.validate_schema(root, 'extension')
Exemplo n.º 13
0
    def test_qos_specs_serializer(self):
        fixture = {
            "qos_specs": [
                {
                    "specs": {
                        "key1": "v1",
                        "key2": "v2",
                    },
                    "consumer": "back-end",
                    "name": "qos-2",
                    "id": "61e7b72f-ef15-46d9-b00e-b80f699999d0"
                },
                {
                    "specs": {"total_iops_sec": "200"},
                    "consumer": "front-end",
                    "name": "qos-1",
                    "id": "e44bba5e-b629-4b96-9aa3-0404753a619b"
                }
            ]
        }

        output = self.serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'qos_specs')
        qos_elems = root.findall("qos_spec")
        self.assertEqual(len(qos_elems), 2)
        for i, qos_elem in enumerate(qos_elems):
            qos_dict = fixture['qos_specs'][i]

            # check qos_spec attributes
            for key in ['name', 'id', 'consumer']:
                self.assertEqual(qos_elem.get(key), str(qos_dict[key]))

            # check specs
            specs = qos_elem.find("specs")
            new_dict = {}
            for element in specs.iter(tag=etree.Element):
                # skip root element for specs
                if element.tag == "specs":
                    continue
                new_dict.update({element.tag: element.text})

            self.assertDictMatch(new_dict, qos_dict['specs'])
Exemplo n.º 14
0
    def test_qos_specs_serializer(self):
        fixture = {
            "qos_specs": [
                {
                    "specs": {
                        "key1": "v1",
                        "key2": "v2",
                    },
                    "consumer": "back-end",
                    "name": "qos-2",
                    "id": "61e7b72f-ef15-46d9-b00e-b80f699999d0"
                },
                {
                    "specs": {"total_iops_sec": "200"},
                    "consumer": "front-end",
                    "name": "qos-1",
                    "id": "e44bba5e-b629-4b96-9aa3-0404753a619b"
                }
            ]
        }

        output = self.serializer.serialize(fixture)
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'qos_specs')
        qos_elems = root.findall("qos_spec")
        self.assertEqual(2, len(qos_elems))
        for i, qos_elem in enumerate(qos_elems):
            qos_dict = fixture['qos_specs'][i]

            # check qos_spec attributes
            for key in ['name', 'id', 'consumer']:
                self.assertEqual(str(qos_dict[key]), qos_elem.get(key))

            # check specs
            specs = qos_elem.find("specs")
            new_dict = {}
            for element in specs.iter(tag=etree.Element):
                # skip root element for specs
                if element.tag == "specs":
                    continue
                new_dict.update({element.tag: element.text})

            self.assertDictMatch(qos_dict['specs'], new_dict)
Exemplo n.º 15
0
    def test_list_extensions_xml(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        request.accept = "application/xml"
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        root = etree.XML(response.body)
        self.assertEqual(NS, root.tag.split("extensions")[0])

        # Make sure we have all the extensions, extras extensions being OK.
        exts = root.findall("{0}extension".format(NS))
        self.assertGreaterEqual(len(exts), len(self.ext_list))

        # Make sure that at least Fox in Sox is correct.
        (fox_ext,) = [x for x in exts if x.get("alias") == "FOXNSOX"]
        self.assertEqual("Fox In Socks", fox_ext.get("name"))
        self.assertEqual("http://www.fox.in.socks/api/ext/pie/v1.0", fox_ext.get("namespace"))
        self.assertEqual("2011-01-22T13:25:27-06:00", fox_ext.get("updated"))
        self.assertEqual("The Fox In Socks Extension.", fox_ext.findtext("{0}description".format(NS)))

        xmlutil.validate_schema(root, "extensions")