Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-gtools / test / synnefo.ganeti_unittest.py @ 2eda9c61

History | View | Annotate | Download (3.9 kB)

1 45ebfd48 Vangelis Koukis
#!/usr/bin/env python
2 45ebfd48 Vangelis Koukis
# -*- coding: utf-8 -*-
3 06a0e098 Vassilios Karakoidas
#
4 0e1f3323 Christos Stavrakakis
# Copyright 2013 GRNET S.A. All rights reserved.
5 06a0e098 Vassilios Karakoidas
#
6 45ebfd48 Vangelis Koukis
# Redistribution and use in source and binary forms, with or
7 45ebfd48 Vangelis Koukis
# without modification, are permitted provided that the following
8 45ebfd48 Vangelis Koukis
# conditions are met:
9 06a0e098 Vassilios Karakoidas
#
10 45ebfd48 Vangelis Koukis
#   1. Redistributions of source code must retain the above
11 45ebfd48 Vangelis Koukis
#      copyright notice, this list of conditions and the following
12 45ebfd48 Vangelis Koukis
#      disclaimer.
13 45ebfd48 Vangelis Koukis
#
14 45ebfd48 Vangelis Koukis
#   2. Redistributions in binary form must reproduce the above
15 45ebfd48 Vangelis Koukis
#      copyright notice, this list of conditions and the following
16 45ebfd48 Vangelis Koukis
#      disclaimer in the documentation and/or other materials
17 45ebfd48 Vangelis Koukis
#      provided with the distribution.
18 45ebfd48 Vangelis Koukis
#
19 45ebfd48 Vangelis Koukis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
20 45ebfd48 Vangelis Koukis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 45ebfd48 Vangelis Koukis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 45ebfd48 Vangelis Koukis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
23 45ebfd48 Vangelis Koukis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 45ebfd48 Vangelis Koukis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 45ebfd48 Vangelis Koukis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 45ebfd48 Vangelis Koukis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 45ebfd48 Vangelis Koukis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 45ebfd48 Vangelis Koukis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 45ebfd48 Vangelis Koukis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 45ebfd48 Vangelis Koukis
# POSSIBILITY OF SUCH DAMAGE.
31 45ebfd48 Vangelis Koukis
#
32 45ebfd48 Vangelis Koukis
# The views and conclusions contained in the software and
33 45ebfd48 Vangelis Koukis
# documentation are those of the authors and should not be
34 45ebfd48 Vangelis Koukis
# interpreted as representing official policies, either expressed
35 45ebfd48 Vangelis Koukis
# or implied, of GRNET S.A.
36 45ebfd48 Vangelis Koukis
#
37 45ebfd48 Vangelis Koukis
38 0e1f3323 Christos Stavrakakis
import sys
39 ff55193e Vangelis Koukis
import logging
40 0e1f3323 Christos Stavrakakis
from synnefo.ganeti.eventd import get_instance_nics
41 0e1f3323 Christos Stavrakakis
from mock import patch
42 45ebfd48 Vangelis Koukis
43 0e1f3323 Christos Stavrakakis
log = logging.getLogger()
44 06a0e098 Vassilios Karakoidas
45 0e1f3323 Christos Stavrakakis
# Use backported unittest functionality if Python < 2.7
46 0e1f3323 Christos Stavrakakis
try:
47 0e1f3323 Christos Stavrakakis
    import unittest2 as unittest
48 0e1f3323 Christos Stavrakakis
except ImportError:
49 0e1f3323 Christos Stavrakakis
    if sys.version_info < (2, 7):
50 0e1f3323 Christos Stavrakakis
        raise Exception("The unittest2 package is required for Python < 2.7")
51 0e1f3323 Christos Stavrakakis
    import unittest
52 06a0e098 Vassilios Karakoidas
53 ff55193e Vangelis Koukis
54 0e1f3323 Christos Stavrakakis
@patch("ganeti.cli.GetClient")
55 0e1f3323 Christos Stavrakakis
class GanetiNICTestCase(unittest.TestCase):
56 0e1f3323 Christos Stavrakakis
    def test_no_nics(self, client):
57 0e1f3323 Christos Stavrakakis
        ret = [[[], [], [], [], [], []]]
58 0e1f3323 Christos Stavrakakis
        client.return_value.QueryInstances.return_value = ret
59 0e1f3323 Christos Stavrakakis
        self.assertEqual(get_instance_nics('test', log), [])
60 ff55193e Vangelis Koukis
61 0e1f3323 Christos Stavrakakis
    def test_one_nic(self, client):
62 0e1f3323 Christos Stavrakakis
        ret = [[["network"], ["ip"], ["mac"], ["mode"], ["link"],
63 0e1f3323 Christos Stavrakakis
                ["tag1", "tag2"]]]
64 0e1f3323 Christos Stavrakakis
        client.return_value.QueryInstances.return_value = ret
65 0e1f3323 Christos Stavrakakis
        nics0 = get_instance_nics("test", log)
66 0e1f3323 Christos Stavrakakis
        nics1 = [{"network": "network",
67 0e1f3323 Christos Stavrakakis
                  "ip": "ip",
68 0e1f3323 Christos Stavrakakis
                  "mac": "mac",
69 0e1f3323 Christos Stavrakakis
                  "mode": "mode",
70 0e1f3323 Christos Stavrakakis
                  "link": "link"}]
71 0e1f3323 Christos Stavrakakis
        self.assertEqual(nics0, nics1)
72 ff55193e Vangelis Koukis
73 0e1f3323 Christos Stavrakakis
    def test_two_nics(self, client):
74 0e1f3323 Christos Stavrakakis
        ret = [[["network1", "network2"], ["ip1", "ip2"], ["mac1", "mac2"],
75 0e1f3323 Christos Stavrakakis
                ["mode1", "mode2"], ["link1", "link2"], ["tag1", "tag2"]]]
76 0e1f3323 Christos Stavrakakis
        client.return_value.QueryInstances.return_value = ret
77 0e1f3323 Christos Stavrakakis
        nics0 = get_instance_nics("test", log)
78 0e1f3323 Christos Stavrakakis
        nics1 = [{"network": "network1",
79 0e1f3323 Christos Stavrakakis
                  "ip": "ip1",
80 0e1f3323 Christos Stavrakakis
                  "mac": "mac1",
81 0e1f3323 Christos Stavrakakis
                  "mode": "mode1",
82 0e1f3323 Christos Stavrakakis
                  "link": "link1"},
83 0e1f3323 Christos Stavrakakis
                  {"network": "network2",
84 0e1f3323 Christos Stavrakakis
                   "ip": "ip2",
85 0e1f3323 Christos Stavrakakis
                   "mac": "mac2",
86 0e1f3323 Christos Stavrakakis
                   "mode": "mode2",
87 0e1f3323 Christos Stavrakakis
                   "link": "link2"}]
88 0e1f3323 Christos Stavrakakis
        self.assertEqual(nics0, nics1)
89 0e1f3323 Christos Stavrakakis
90 0e1f3323 Christos Stavrakakis
    def test_firewall(self, client):
91 0e1f3323 Christos Stavrakakis
        ret = [[["network"], ["ip"], ["mac"], ["mode"], ["link"],
92 0e1f3323 Christos Stavrakakis
            ["tag1", "synnefo:network:0:protected"]]]
93 0e1f3323 Christos Stavrakakis
        client.return_value.QueryInstances.return_value = ret
94 0e1f3323 Christos Stavrakakis
        nics0 = get_instance_nics("test", log)
95 0e1f3323 Christos Stavrakakis
        nics1 = [{"network": "network",
96 0e1f3323 Christos Stavrakakis
                  "ip": "ip",
97 0e1f3323 Christos Stavrakakis
                  "mac": "mac",
98 0e1f3323 Christos Stavrakakis
                  "mode": "mode",
99 0e1f3323 Christos Stavrakakis
                  "link": "link",
100 0e1f3323 Christos Stavrakakis
                  "firewall": "protected"}]
101 0e1f3323 Christos Stavrakakis
        self.assertEqual(nics0, nics1)
102 45ebfd48 Vangelis Koukis
103 45ebfd48 Vangelis Koukis
104 45ebfd48 Vangelis Koukis
if __name__ == '__main__':
105 45ebfd48 Vangelis Koukis
    unittest.main()