root / snf-cyclades-app / synnefo / logic / tests / networks.py @ eb5f7eb0
History | View | Annotate | Download (4.7 kB)
1 | 5962d9a6 | Christos Stavrakakis | # vim: set fileencoding=utf-8 :
|
---|---|---|---|
2 | 5962d9a6 | Christos Stavrakakis | # Copyright 2013 GRNET S.A. All rights reserved.
|
3 | 5962d9a6 | Christos Stavrakakis | #
|
4 | 5962d9a6 | Christos Stavrakakis | # Redistribution and use in source and binary forms, with or without
|
5 | 5962d9a6 | Christos Stavrakakis | # modification, are permitted provided that the following conditions
|
6 | 5962d9a6 | Christos Stavrakakis | # are met:
|
7 | 5962d9a6 | Christos Stavrakakis | #
|
8 | 5962d9a6 | Christos Stavrakakis | # 1. Redistributions of source code must retain the above copyright
|
9 | 5962d9a6 | Christos Stavrakakis | # notice, this list of conditions and the following disclaimer.
|
10 | 5962d9a6 | Christos Stavrakakis | #
|
11 | 5962d9a6 | Christos Stavrakakis | # 2. Redistributions in binary form must reproduce the above copyright
|
12 | 5962d9a6 | Christos Stavrakakis | # notice, this list of conditions and the following disclaimer in the
|
13 | 5962d9a6 | Christos Stavrakakis | # documentation and/or other materials provided with the distribution.
|
14 | 5962d9a6 | Christos Stavrakakis | #
|
15 | 5962d9a6 | Christos Stavrakakis | # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
16 | 5962d9a6 | Christos Stavrakakis | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17 | 5962d9a6 | Christos Stavrakakis | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
18 | 5962d9a6 | Christos Stavrakakis | # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
19 | 5962d9a6 | Christos Stavrakakis | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20 | 5962d9a6 | Christos Stavrakakis | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
21 | 5962d9a6 | Christos Stavrakakis | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
22 | 5962d9a6 | Christos Stavrakakis | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
23 | 5962d9a6 | Christos Stavrakakis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
24 | 5962d9a6 | Christos Stavrakakis | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
25 | 5962d9a6 | Christos Stavrakakis | # SUCH DAMAGE.
|
26 | 5962d9a6 | Christos Stavrakakis | #
|
27 | 5962d9a6 | Christos Stavrakakis | # The views and conclusions contained in the software and documentation are
|
28 | 5962d9a6 | Christos Stavrakakis | # those of the authors and should not be interpreted as representing official
|
29 | 5962d9a6 | Christos Stavrakakis | # policies, either expressed or implied, of GRNET S.A.
|
30 | 5962d9a6 | Christos Stavrakakis | |
31 | 5962d9a6 | Christos Stavrakakis | # Provides automated tests for logic module
|
32 | 5962d9a6 | Christos Stavrakakis | from django.test import TestCase |
33 | 5962d9a6 | Christos Stavrakakis | from snf_django.lib.api import faults |
34 | 5962d9a6 | Christos Stavrakakis | from snf_django.utils.testing import mocked_quotaholder |
35 | 5962d9a6 | Christos Stavrakakis | from synnefo.logic import networks |
36 | 5962d9a6 | Christos Stavrakakis | from synnefo.db import models_factory as mfactory |
37 | 5962d9a6 | Christos Stavrakakis | from synnefo.db.models import BridgePoolTable, MacPrefixPoolTable |
38 | 5962d9a6 | Christos Stavrakakis | from synnefo import settings |
39 | 5962d9a6 | Christos Stavrakakis | from copy import copy |
40 | 5962d9a6 | Christos Stavrakakis | |
41 | 5962d9a6 | Christos Stavrakakis | |
42 | 5962d9a6 | Christos Stavrakakis | #@patch("synnefo.logic.rapi_pool.GanetiRapiClient")
|
43 | 5962d9a6 | Christos Stavrakakis | class NetworkTest(TestCase): |
44 | 5962d9a6 | Christos Stavrakakis | def test_create(self): |
45 | 5962d9a6 | Christos Stavrakakis | kwargs = { |
46 | 5962d9a6 | Christos Stavrakakis | "name": "test", |
47 | a96e84cf | Christos Stavrakakis | "userid": "user", |
48 | 5962d9a6 | Christos Stavrakakis | "flavor": "CUSTOM", |
49 | 5962d9a6 | Christos Stavrakakis | } |
50 | 5962d9a6 | Christos Stavrakakis | # wrong flavor
|
51 | 5962d9a6 | Christos Stavrakakis | kw = copy(kwargs) |
52 | 5962d9a6 | Christos Stavrakakis | kw["flavor"] = "UNKNOWN" |
53 | 5962d9a6 | Christos Stavrakakis | self.assertRaises(faults.BadRequest, networks.create, **kw)
|
54 | 5962d9a6 | Christos Stavrakakis | # Test create objet
|
55 | 5962d9a6 | Christos Stavrakakis | kwargs["public"] = True |
56 | 5962d9a6 | Christos Stavrakakis | with mocked_quotaholder():
|
57 | 5962d9a6 | Christos Stavrakakis | net = networks.create(**kwargs) |
58 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.public, True) |
59 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.flavor, "CUSTOM") |
60 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.action, "CREATE") |
61 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.state, "ACTIVE") |
62 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.name, "test") |
63 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.userid, "user") |
64 | 5962d9a6 | Christos Stavrakakis | |
65 | 5962d9a6 | Christos Stavrakakis | # Test for each for flavor type
|
66 | 5962d9a6 | Christos Stavrakakis | # MAC_FILTERED
|
67 | 5962d9a6 | Christos Stavrakakis | kwargs["flavor"] = "MAC_FILTERED" |
68 | 5962d9a6 | Christos Stavrakakis | # Test exception if no rules exists
|
69 | 5962d9a6 | Christos Stavrakakis | self.assertRaises(faults.ServiceUnavailable, networks.create, **kwargs)
|
70 | 5962d9a6 | Christos Stavrakakis | mfactory.MacPrefixPoolTableFactory(base="aa:bb:0")
|
71 | 5962d9a6 | Christos Stavrakakis | with mocked_quotaholder():
|
72 | 5962d9a6 | Christos Stavrakakis | net = networks.create(**kwargs) |
73 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mode, "bridged") |
74 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mac_prefix, "aa:bb:1") |
75 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.link, settings.DEFAULT_MAC_FILTERED_BRIDGE)
|
76 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.backend_tag, ["private-filtered"]) |
77 | 5962d9a6 | Christos Stavrakakis | pool = MacPrefixPoolTable.get_pool() |
78 | 5962d9a6 | Christos Stavrakakis | self.assertFalse(pool.is_available("aa:bb:1")) |
79 | 5962d9a6 | Christos Stavrakakis | |
80 | 5962d9a6 | Christos Stavrakakis | # PHYSICAL_VLAN
|
81 | 5962d9a6 | Christos Stavrakakis | kwargs["flavor"] = "PHYSICAL_VLAN" |
82 | 5962d9a6 | Christos Stavrakakis | # Test exception if no rules exists
|
83 | 5962d9a6 | Christos Stavrakakis | self.assertRaises(faults.ServiceUnavailable, networks.create, **kwargs)
|
84 | 5962d9a6 | Christos Stavrakakis | mfactory.BridgePoolTableFactory(base="prv")
|
85 | 5962d9a6 | Christos Stavrakakis | with mocked_quotaholder():
|
86 | 5962d9a6 | Christos Stavrakakis | net = networks.create(**kwargs) |
87 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mode, "bridged") |
88 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mac_prefix, settings.DEFAULT_MAC_PREFIX)
|
89 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.link, "prv1") |
90 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.backend_tag, ["physical-vlan"]) |
91 | 5962d9a6 | Christos Stavrakakis | pool = BridgePoolTable.get_pool() |
92 | 5962d9a6 | Christos Stavrakakis | self.assertFalse(pool.is_available(net.link))
|
93 | 5962d9a6 | Christos Stavrakakis | |
94 | 5962d9a6 | Christos Stavrakakis | # IP_LESS_ROUTED
|
95 | 5962d9a6 | Christos Stavrakakis | kwargs["flavor"] = "IP_LESS_ROUTED" |
96 | 5962d9a6 | Christos Stavrakakis | with mocked_quotaholder():
|
97 | 5962d9a6 | Christos Stavrakakis | net = networks.create(**kwargs) |
98 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mode, "routed") |
99 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mac_prefix, settings.DEFAULT_MAC_PREFIX)
|
100 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.link, settings.DEFAULT_ROUTING_TABLE)
|
101 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.backend_tag, ["ip-less-routed"]) |
102 | 5962d9a6 | Christos Stavrakakis | |
103 | 5962d9a6 | Christos Stavrakakis | # CUSTOM
|
104 | 5962d9a6 | Christos Stavrakakis | kwargs["flavor"] = "CUSTOM" |
105 | 5962d9a6 | Christos Stavrakakis | with mocked_quotaholder():
|
106 | 5962d9a6 | Christos Stavrakakis | net = networks.create(**kwargs) |
107 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mode, "bridged") |
108 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.mac_prefix, settings.DEFAULT_MAC_PREFIX)
|
109 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.link, settings.DEFAULT_BRIDGE)
|
110 | 5962d9a6 | Christos Stavrakakis | self.assertEqual(net.backend_tag, []) |