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