~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to tools/python/xen/xm/tests/test_create.py

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
import os.path
 
3
import tempfile
 
4
import unittest
 
5
 
 
6
import xen.xend.XendOptions
 
7
 
 
8
xen.xend.XendOptions.XendOptions.config_default = '/dev/null'
 
9
 
 
10
import xen.xm.create
 
11
from xen.util import auxbin
 
12
 
 
13
 
 
14
class test_create(unittest.TestCase):
 
15
 
 
16
    def assertEqualModuloNulls_(self, a, b):
 
17
        for k, v in a.iteritems():
 
18
            if v:
 
19
                self.failUnless(k in b, '%s not in b' % k)
 
20
                self.assertEqual(v, b[k])
 
21
            else:
 
22
                self.assert_(k not in b or not b[k], '%s in b' % k)
 
23
 
 
24
 
 
25
    def assertEqualModuloNulls(self, a, b):
 
26
        self.assertEqualModuloNulls_(a, b)
 
27
        self.assertEqualModuloNulls_(b, a)
 
28
 
 
29
 
 
30
    def t(self, args, expected):
 
31
        self.assertEqualModuloNulls(
 
32
            xen.xm.create.parseCommandLine(args.split(' '))[0].vals.__dict__,
 
33
            expected)
 
34
 
 
35
 
 
36
    def testCommandLine(self):
 
37
        (fd, fname) = tempfile.mkstemp()
 
38
        os.close(fd)
 
39
        self.t('-f %s kernel=/mykernel display=fakedisplay '
 
40
               'macaddr=ab:cd:ef:ed' % fname,
 
41
               { 'name'      : os.path.basename(fname),
 
42
                 'xm_file'   : fname,
 
43
                 'defconfig' : fname,
 
44
                 'kernel'    : '/mykernel',
 
45
                 'display'   : 'fakedisplay',
 
46
                 'macaddr'   : 'ab:cd:ef:ed',
 
47
                 'memory'    : 128,
 
48
                 'vcpus'     : 1,
 
49
                 'boot'      : 'c',
 
50
                 'dhcp'      : 'off',
 
51
                 'interface' : 'eth0',
 
52
                 'path'      : '.:' + auxbin.xen_configdir(),
 
53
                 'builder'   : 'linux',
 
54
                 'nics'      : -1,
 
55
                 'vncunused' : 1,
 
56
                 'xauthority': xen.xm.create.get_xauthority(),
 
57
                 })
 
58
 
 
59
 
 
60
    def testConfigFile(self):
 
61
        (fd, fname) = tempfile.mkstemp()
 
62
        try:
 
63
            os.write(fd,
 
64
                     '''
 
65
kernel = "/boot/vmlinuz-xenU-smp"
 
66
memory = 768
 
67
name = "dom1"
 
68
vcpus = 4
 
69
disk = ['phy:/dev/virt-blkdev-backend/dom1,sda1,w',
 
70
'phy:/dev/virt-blkdev-backend/usr,sda2,r']
 
71
root = "/dev/sda1 ro"
 
72
extra = " profile=1 GATEWAY=192.0.2.254 NETMASK=255.255.255.0 IPADDR=192.0.2.1 HOSTNAME=dom1"
 
73
on_poweroff = 'destroy'
 
74
on_reboot   = 'destroy'
 
75
on_crash    = 'destroy'
 
76
                     ''')
 
77
        finally:
 
78
            os.close(fd)
 
79
 
 
80
        self.t('-f %s display=fakedisplay' % fname,
 
81
               { 'kernel'      : '/boot/vmlinuz-xenU-smp',
 
82
                 'memory'      : 768,
 
83
                 'name'        : 'dom1',
 
84
                 'vcpus'       : 4,
 
85
                 'nics'        : -1,
 
86
                 'root'        : '/dev/sda1 ro',
 
87
                 'extra'       : ' profile=1 GATEWAY=192.0.2.254 NETMASK=255.255.255.0 IPADDR=192.0.2.1 HOSTNAME=dom1',
 
88
                 'on_poweroff' : 'destroy',
 
89
                 'on_reboot'   : 'destroy',
 
90
                 'on_crash'    : 'destroy',
 
91
                 'disk'        : [['phy:/dev/virt-blkdev-backend/dom1',
 
92
                                   'sda1', 'w', None],
 
93
                                  ['phy:/dev/virt-blkdev-backend/usr',
 
94
                                   'sda2', 'r', None]],
 
95
 
 
96
                 'xm_file'     : fname,
 
97
                 'defconfig'   : fname,
 
98
                 'display'     : 'fakedisplay',
 
99
 
 
100
                 'boot'        : 'c',
 
101
                 'dhcp'        : 'off',
 
102
                 'interface'   : 'eth0',
 
103
                 'path'        : '.:' + auxbin.xen_configdir(),
 
104
                 'builder'     : 'linux',
 
105
 
 
106
                 'vncunused'   : 1,
 
107
                 'xauthority'  : xen.xm.create.get_xauthority(),
 
108
               })
 
109
 
 
110
 
 
111
    def testConfigFileAndCommandLine(self):
 
112
        (fd, fname) = tempfile.mkstemp()
 
113
        try:
 
114
            os.write(fd,
 
115
                     '''
 
116
name       = "testname"
 
117
memory     = 256
 
118
kernel     = "/mykernel"
 
119
maxmem     = 1024
 
120
cpu        = 2
 
121
cpu_weight = 0.75
 
122
                     ''')
 
123
        finally:
 
124
            os.close(fd)
 
125
 
 
126
        self.t('-f %s display=fakedisplay macaddr=ab:cd:ef:ed' %
 
127
          fname,
 
128
               { 'name'       : 'testname',
 
129
                 'xm_file'    : fname,
 
130
                 'defconfig'  : fname,
 
131
                 'kernel'     : '/mykernel',
 
132
                 'display'    : 'fakedisplay',
 
133
                 'macaddr'    : 'ab:cd:ef:ed',
 
134
                 'memory'     : 256,
 
135
                 'maxmem'     : 1024,
 
136
                 'cpu'        : 2,
 
137
                 'cpu_weight' : 0.75,
 
138
                 'vcpus'      : 1,
 
139
                 'boot'       : 'c',
 
140
                 'dhcp'       : 'off',
 
141
                 'interface'  : 'eth0',
 
142
                 'path'        : '.:' + auxbin.xen_configdir(),
 
143
                 'builder'    : 'linux',
 
144
                 'nics'       : -1,
 
145
 
 
146
                 'vncunused'   : 1,
 
147
                 'xauthority' : xen.xm.create.get_xauthority(),
 
148
                 })
 
149
            
 
150
 
 
151
    def testHVMConfigFile(self):
 
152
        (fd, fname) = tempfile.mkstemp()
 
153
        try:
 
154
            os.write(fd,
 
155
                     '''
 
156
kernel = "hvmloader"
 
157
builder='hvm'
 
158
memory = 128
 
159
name = "ExampleHVMDomain"
 
160
vcpus=1
 
161
vif = [ 'type=ioemu, bridge=xenbr0' ]
 
162
disk = [ 'file:/var/images/min-el3-i386.img,ioemu:hda,w' ]
 
163
device_model = 'qemu-dm'
 
164
sdl=0
 
165
vnc=1
 
166
vncviewer=1
 
167
ne2000=0
 
168
                     ''')
 
169
        finally:
 
170
            os.close(fd)
 
171
 
 
172
        self.t('-f %s display=fakedisplay' % fname,
 
173
               { 'kernel'      : 'hvmloader',
 
174
                 'builder'     : 'hvm',
 
175
                 'memory'      : 128,
 
176
                 'name'        : 'ExampleHVMDomain',
 
177
                 'vcpus'       : 1,
 
178
                 'nics'        : -1,
 
179
                 'vif'         : ['type=ioemu, bridge=xenbr0'],
 
180
                 'disk'        : [['file:/var/images/min-el3-i386.img',
 
181
                                   'ioemu:hda', 'w', None]],
 
182
                 'device_model': 'qemu-dm',
 
183
 
 
184
                 'extra'       : ('VNC_VIEWER=%s:%d ' %
 
185
                                  (xen.xm.create.get_host_addr(),
 
186
                                   xen.xm.create.VNC_BASE_PORT +
 
187
                                   xen.xm.create.choose_vnc_display())),
 
188
                 'vnc'         : 1,
 
189
                 'vncunused'   : 1,
 
190
                 'vncviewer'   : 1,
 
191
 
 
192
                 'xm_file'     : fname,
 
193
                 'defconfig'   : fname,
 
194
                 'display'     : 'fakedisplay',
 
195
 
 
196
                 'boot'        : 'c',
 
197
                 'dhcp'        : 'off',
 
198
                 'interface'   : 'eth0',
 
199
                 'path'        : '.:' + auxbin.xen_configdir(),
 
200
 
 
201
                 'xauthority'  : xen.xm.create.get_xauthority(),
 
202
               })
 
203
 
 
204
 
 
205
def test_suite():
 
206
    return unittest.makeSuite(test_create)