@@ -32,18 +32,178 @@ func TestNewFactory(t *testing.T) {
32
32
_ , err = NewFactory (config , false )
33
33
assert .Error (err )
34
34
35
- testDir , err := ioutil .TempDir ("" , "vmfactory-tmp-" )
36
- assert .Nil (err )
35
+ testDir , _ := ioutil .TempDir ("" , "vmfactory-tmp-" )
37
36
38
37
config .VMConfig .HypervisorConfig = vc.HypervisorConfig {
39
38
KernelPath : testDir ,
40
39
ImagePath : testDir ,
41
40
}
42
41
42
+ // direct
43
+ _ , err = NewFactory (config , false )
44
+ assert .Nil (err )
45
+ _ , err = NewFactory (config , true )
46
+ assert .Nil (err )
47
+
48
+ // template
49
+ config .Template = true
43
50
_ , err = NewFactory (config , false )
44
51
assert .Nil (err )
52
+ _ , err = NewFactory (config , true )
53
+ assert .Error (err )
45
54
55
+ // Cache
46
56
config .Cache = 10
57
+ _ , err = NewFactory (config , false )
58
+ assert .Nil (err )
59
+ _ , err = NewFactory (config , true )
60
+ assert .Error (err )
61
+
62
+ config .Template = false
63
+ _ , err = NewFactory (config , false )
64
+ assert .Nil (err )
47
65
_ , err = NewFactory (config , true )
48
66
assert .Error (err )
49
67
}
68
+
69
+ func TestVMConfigValid (t * testing.T ) {
70
+ assert := assert .New (t )
71
+
72
+ config := Config {}
73
+
74
+ err := config .validate ()
75
+ assert .Error (err )
76
+
77
+ testDir , _ := ioutil .TempDir ("" , "vmfactory-tmp-" )
78
+
79
+ config .VMConfig = vc.VMConfig {
80
+ HypervisorType : vc .MockHypervisor ,
81
+ AgentType : vc .NoopAgentType ,
82
+ HypervisorConfig : vc.HypervisorConfig {
83
+ KernelPath : testDir ,
84
+ ImagePath : testDir ,
85
+ },
86
+ }
87
+
88
+ err = config .validate ()
89
+ assert .Nil (err )
90
+ }
91
+
92
+ func TestCheckVMConfig (t * testing.T ) {
93
+ assert := assert .New (t )
94
+
95
+ var config1 , config2 vc.VMConfig
96
+
97
+ // default config should equal
98
+ err := checkVMConfig (config1 , config2 )
99
+ assert .Nil (err )
100
+
101
+ config1 .HypervisorType = vc .MockHypervisor
102
+ err = checkVMConfig (config1 , config2 )
103
+ assert .Error (err )
104
+
105
+ config2 .HypervisorType = vc .MockHypervisor
106
+ err = checkVMConfig (config1 , config2 )
107
+ assert .Nil (err )
108
+
109
+ config1 .AgentType = vc .NoopAgentType
110
+ err = checkVMConfig (config1 , config2 )
111
+ assert .Error (err )
112
+
113
+ config2 .AgentType = vc .NoopAgentType
114
+ err = checkVMConfig (config1 , config2 )
115
+ assert .Nil (err )
116
+
117
+ testDir , _ := ioutil .TempDir ("" , "vmfactory-tmp-" )
118
+ config1 .HypervisorConfig = vc.HypervisorConfig {
119
+ KernelPath : testDir ,
120
+ ImagePath : testDir ,
121
+ }
122
+ err = checkVMConfig (config1 , config2 )
123
+ assert .Error (err )
124
+
125
+ config2 .HypervisorConfig = vc.HypervisorConfig {
126
+ KernelPath : testDir ,
127
+ ImagePath : testDir ,
128
+ }
129
+ err = checkVMConfig (config1 , config2 )
130
+ assert .Nil (err )
131
+ }
132
+
133
+ func TestFactoryGetVM (t * testing.T ) {
134
+ assert := assert .New (t )
135
+
136
+ testDir , _ := ioutil .TempDir ("" , "vmfactory-tmp-" )
137
+ hyperConfig := vc.HypervisorConfig {
138
+ KernelPath : testDir ,
139
+ ImagePath : testDir ,
140
+ }
141
+ vmConfig := vc.VMConfig {
142
+ HypervisorType : vc .MockHypervisor ,
143
+ AgentType : vc .NoopAgentType ,
144
+ HypervisorConfig : hyperConfig ,
145
+ }
146
+
147
+ // direct factory
148
+ f , err := NewFactory (Config {VMConfig : vmConfig }, false )
149
+ assert .Nil (err )
150
+
151
+ _ , err = f .GetVM (vmConfig )
152
+ assert .Nil (err )
153
+
154
+ f .CloseFactory ()
155
+
156
+ // template factory
157
+ f , err = NewFactory (Config {Template : true , VMConfig : vmConfig }, false )
158
+ assert .Nil (err )
159
+
160
+ _ , err = f .GetVM (vmConfig )
161
+ assert .Nil (err )
162
+
163
+ f .CloseFactory ()
164
+
165
+ // fetch template factory
166
+ f , err = NewFactory (Config {Template : true , VMConfig : vmConfig }, false )
167
+ assert .Nil (err )
168
+
169
+ _ , err = NewFactory (Config {Template : true , VMConfig : vmConfig }, true )
170
+ assert .Error (err )
171
+
172
+ _ , err = f .GetVM (vmConfig )
173
+ assert .Nil (err )
174
+
175
+ f .CloseFactory ()
176
+
177
+ // cache factory over direct factory
178
+ f , err = NewFactory (Config {Cache : 2 , VMConfig : vmConfig }, false )
179
+ assert .Nil (err )
180
+
181
+ _ , err = f .GetVM (vmConfig )
182
+ assert .Nil (err )
183
+
184
+ f .CloseFactory ()
185
+
186
+ // cache factory over template factory
187
+ f , err = NewFactory (Config {Template : true , Cache : 2 , VMConfig : vmConfig }, false )
188
+ assert .Nil (err )
189
+
190
+ _ , err = f .GetVM (vmConfig )
191
+ assert .Nil (err )
192
+
193
+ // CPU hotplug
194
+ vmConfig .HypervisorConfig .DefaultVCPUs ++
195
+ _ , err = f .GetVM (vmConfig )
196
+ assert .Nil (err )
197
+
198
+ // Memory hotplug
199
+ vmConfig .HypervisorConfig .DefaultMemSz += 128
200
+ _ , err = f .GetVM (vmConfig )
201
+ assert .Nil (err )
202
+
203
+ // checkConfig fall back
204
+ vmConfig .HypervisorConfig .Mlock = true
205
+ _ , err = f .GetVM (vmConfig )
206
+ assert .Nil (err )
207
+
208
+ f .CloseFactory ()
209
+ }
0 commit comments