root / snf-cyclades-gtools / test / synnefo.ganeti_unittest.py @ 72cbea06
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() |