Statistics
| Branch: | Tag: | Revision:

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, [])