beaker-vmware 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,286 @@
1
+ require 'ostruct'
2
+
3
+ class MockRbVmomiSnapshot
4
+ attr_accessor :name, :rootSnapshotList, :childSnapshotList
5
+
6
+ def initialize
7
+ @name = nil
8
+ @rootSnapshotList = []
9
+ @childSnapshotList = []
10
+ end
11
+
12
+ def print_nested_array(arg)
13
+ str = '[ '
14
+ arg.each do |arry|
15
+ if arry.is_a?(Array)
16
+ str += print_nested_array(arry)
17
+ elsif arry.is_a?(MockRbVmomiSnapshot)
18
+ str += arry.to_s + ', '
19
+ end
20
+ end
21
+ str + ' ]'
22
+ end
23
+
24
+ def to_s
25
+ "Snapshot(name: #{@name}, rootSnapshotlist: #{print_nested_array(@rootSnapshotList)}, childSnapshotList: #{print_nested_array(@childSnapshotList)})"
26
+ end
27
+
28
+ def snapshot
29
+ self
30
+ end
31
+ end
32
+
33
+ class MockRbVmomiVM
34
+ attr_accessor :snapshot, :name, :state
35
+
36
+ def info
37
+ self
38
+ end
39
+
40
+ def process_snaphash(snaphash)
41
+ shotlist = []
42
+ snaphash.each do |name, subsnaps|
43
+ new_snap = MockRbVmomiSnapshot.new
44
+ new_snap.name = name
45
+ new_snap.childSnapshotList = process_snaphash(subsnaps) if subsnaps.is_a?(Hash)
46
+ shotlist << new_snap
47
+ end
48
+ shotlist
49
+ end
50
+
51
+ def get_snapshot(name, snaplist = @snapshot.rootSnapshotList)
52
+ snapshot = nil
53
+ snaplist.each do |snap|
54
+ if snap.is_a?(Array)
55
+ snapshot = get_snapshot(snap, name)
56
+ elsif snap.name == name
57
+ snapshot = snap.snapshot
58
+ end
59
+ end
60
+ snapshot
61
+ end
62
+
63
+ def initialize(name, snaphash)
64
+ @name = name
65
+ @snapshot = MockRbVmomiSnapshot.new
66
+ @snapshot.name = name
67
+ @snapshot.rootSnapshotList = process_snaphash(snaphash)
68
+ end
69
+ end
70
+
71
+ class MockRbVmomiConnection
72
+ class CustomizationSpecManager
73
+ class CustomizationSpec
74
+ def spec
75
+ true
76
+ end
77
+ end
78
+
79
+ def initialize
80
+ @customizationspec = CustomizationSpec.new
81
+ end
82
+
83
+ def GetCustomizationSpec(_arg)
84
+ @customizationspec
85
+ end
86
+ end
87
+
88
+ class PropertyCollector
89
+ class Result
90
+ def initialize(name, object)
91
+ @name = name
92
+ @object = object
93
+ end
94
+
95
+ def val
96
+ @name
97
+ end
98
+
99
+ def obj
100
+ @object
101
+ end
102
+
103
+ def propSet
104
+ [self]
105
+ end
106
+ end
107
+
108
+ class ResultContainer
109
+ attr_accessor :token
110
+
111
+ def initialize
112
+ @results = []
113
+ end
114
+
115
+ def objects
116
+ @results
117
+ end
118
+
119
+ def add_object(obj)
120
+ @results << obj
121
+ end
122
+ end
123
+
124
+ def initialize
125
+ @results = ResultContainer.new
126
+ end
127
+
128
+ def RetrievePropertiesEx(_hash)
129
+ @results.token = true
130
+ @results
131
+ end
132
+
133
+ def ContinueRetrievePropertiesEx(_token)
134
+ @results.token = false
135
+ @results
136
+ end
137
+
138
+ def add_result(name, object)
139
+ @results.add_object(Result.new(name, object))
140
+ end
141
+
142
+ def WaitForUpdates(_arg)
143
+ result = OpenStruct.new
144
+ result.version = 'version'
145
+ result
146
+ end
147
+
148
+ def CreateFilter(_arg)
149
+ filter = OpenStruct.new
150
+ filter.DestroyPropertyFilter = true
151
+ filter
152
+ end
153
+ end
154
+
155
+ class ServiceInstance
156
+ class Datacenter
157
+ attr_accessor :vmFolder, :hostFolder
158
+
159
+ def initialize
160
+ @vmFolder = MockRbVmomi::VIM::Folder.new
161
+ @vmFolder.name = '/root'
162
+ end
163
+
164
+ def find_datastore(_arg)
165
+ true
166
+ end
167
+ end
168
+
169
+ def initialize
170
+ @datacenter = Datacenter.new
171
+ end
172
+
173
+ def find_datacenter(_dc)
174
+ @datacenter
175
+ end
176
+ end
177
+
178
+ class ServiceManager
179
+ class ViewManager
180
+ def CreateContainerView(hash)
181
+ @view = hash
182
+ end
183
+ end
184
+
185
+ def initialize
186
+ @customizationspecmanager = CustomizationSpecManager.new
187
+ @viewmanager = ViewManager.new
188
+ end
189
+
190
+ def customizationSpecManager
191
+ @customizationspecmanager
192
+ end
193
+
194
+ def viewManager
195
+ @viewmanager
196
+ end
197
+
198
+ def rootFolder
199
+ '/root'
200
+ end
201
+ end
202
+
203
+ def initialize(opts)
204
+ @host = opts[:host]
205
+ @user = opts[:user]
206
+ @password = opts[:password]
207
+ @insecure = opts[:insecure]
208
+ @serviceinstance = ServiceInstance.new
209
+ @servicemanager = ServiceManager.new
210
+ @propertycollector = PropertyCollector.new
211
+ end
212
+
213
+ def serviceInstance
214
+ @serviceinstance
215
+ end
216
+
217
+ def serviceContent
218
+ @servicemanager
219
+ end
220
+
221
+ def propertyCollector
222
+ @propertycollector
223
+ end
224
+
225
+ def set_info(vms)
226
+ vms.each do |vm|
227
+ @propertycollector.add_result(vm.name, vm)
228
+ end
229
+ end
230
+ end
231
+
232
+ class MockRbVmomi
233
+ class VIM
234
+ class Folder
235
+ attr_accessor :name
236
+
237
+ def find
238
+ self
239
+ end
240
+
241
+ def childEntity
242
+ self
243
+ end
244
+
245
+ def resourcePool
246
+ self
247
+ end
248
+
249
+ def traverse(_path, _type = Object, _create = false)
250
+ self
251
+ end
252
+ end
253
+
254
+ class ResourcePool
255
+ attr_accessor :name
256
+
257
+ def find
258
+ self
259
+ end
260
+
261
+ def resourcePool
262
+ self
263
+ end
264
+ end
265
+
266
+ class ClusterComputeResource
267
+ attr_accessor :name
268
+
269
+ def find
270
+ self
271
+ end
272
+
273
+ def resourcePool
274
+ self
275
+ end
276
+ end
277
+
278
+ class TraversalSpec
279
+ def initialize(hash); end
280
+ end
281
+
282
+ def self.connect(opts)
283
+ MockRbVmomiConnection.new(opts)
284
+ end
285
+ end
286
+ end
@@ -0,0 +1,167 @@
1
+ class MockVsphereSnapshot
2
+ attr_accessor :name
3
+
4
+ def RevertToSnapshot_Task
5
+ self
6
+ end
7
+
8
+ def wait_for_completion
9
+ true
10
+ end
11
+ end
12
+
13
+ class MockVsphereVM
14
+ attr_accessor :name, :powerState, :snapshot, :template, :toolsRunningStatus
15
+
16
+ def initialize
17
+ @powerState = 'poweredOff'
18
+ @toolsRunningStatus = 'guestToolsStopped'
19
+ @first = true
20
+ end
21
+
22
+ def runtime
23
+ self
24
+ end
25
+
26
+ attr_reader :powerState
27
+
28
+ def toolsRunningStatus
29
+ prev = @toolsRunningStatus
30
+ @toolsRunningStatus = 'guestToolsRunning'
31
+ prev
32
+ end
33
+
34
+ def PowerOnVM_Task
35
+ @powerState = 'poweredOn'
36
+ self
37
+ end
38
+
39
+ def PowerOffVM_Task
40
+ @powerState = 'poweredOff'
41
+ self
42
+ end
43
+
44
+ def summary
45
+ self
46
+ end
47
+
48
+ def guest
49
+ self
50
+ end
51
+
52
+ def ipAddress
53
+ @toolsRunningStatus = 'guestToolsRunning'
54
+ "#{@name}.ip.address"
55
+ end
56
+
57
+ def CloneVM_Task(opts)
58
+ clone = MockVsphereVM.new
59
+ clone.name = opts[:name]
60
+ clone.snapshot = snapshot
61
+ clone.template = template
62
+ clone.PowerOnVM_Task
63
+ MockVsphereHelper.add_vm(opts[:name], clone)
64
+ clone
65
+ end
66
+
67
+ def wait_for_completion
68
+ true
69
+ end
70
+
71
+ def Destroy_Task
72
+ true
73
+ end
74
+ end
75
+
76
+ class MockVsphereHelper
77
+ @@fog_file = {}
78
+ @@vms = {}
79
+
80
+ def initialize(arg); end
81
+
82
+ def self.add_vm(name, vm)
83
+ @@vms[name] = vm
84
+ end
85
+
86
+ def self.set_config(conf)
87
+ @@fog_file = conf
88
+ end
89
+
90
+ def self.powerOn
91
+ @@vms.each_value do |vm|
92
+ vm.powerState = 'poweredOn'
93
+ end
94
+ end
95
+
96
+ def self.powerOff
97
+ @@vms.each_value do |vm|
98
+ vm.powerState = 'poweredOff'
99
+ end
100
+ end
101
+
102
+ def self.set_vms(hosts)
103
+ @@vms = {}
104
+ hosts.each do |host|
105
+ vm = MockVsphereVM.new
106
+ vm.name = host.name
107
+ vm.snapshot = MockVsphereSnapshot.new
108
+ vm.snapshot.name = host[:snapshot]
109
+ @@vms[host.name] = vm
110
+ template = MockVsphereVM.new
111
+ template.name = host[:template]
112
+ template.snapshot = MockVsphereSnapshot.new
113
+ template.snapshot.name = host[:snapshot]
114
+ @@vms[host[:template]] = template
115
+ end
116
+ end
117
+
118
+ def self.load_config(_file)
119
+ @@fog_file
120
+ end
121
+
122
+ def find_vms(keys)
123
+ found = {}
124
+ keys = ([] << keys)
125
+ keys.flatten!
126
+ keys.each do |key|
127
+ found[key] = @@vms[key] if @@vms.has_key?(key)
128
+ end
129
+ found
130
+ end
131
+
132
+ def self.find_vm(key)
133
+ return unless @@vms.has_key?(key)
134
+
135
+ @@vms[key]
136
+ end
137
+
138
+ def find_snapshot(vm, snap)
139
+ return unless @@vms[vm.name].snapshot.name == snap
140
+
141
+ @@vms[vm.name].snapshot
142
+ end
143
+
144
+ def find_customization(_template)
145
+ nil
146
+ end
147
+
148
+ def find_datastore(_dc, datastore)
149
+ datastore
150
+ end
151
+
152
+ def find_pool(_dc, pool)
153
+ pool
154
+ end
155
+
156
+ def find_folder(_dc, folder)
157
+ folder
158
+ end
159
+
160
+ def wait_for_tasks(_tasks, _try, _attempts)
161
+ true
162
+ end
163
+
164
+ def close
165
+ true
166
+ end
167
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,19 +1,24 @@
1
+ require 'beaker'
2
+ require 'mock_fission'
3
+ require 'mock_vsphere'
4
+ require 'mock_vsphere_helper'
5
+
1
6
  begin
2
7
  require 'simplecov'
3
8
  require 'simplecov-console'
4
9
  require 'codecov'
5
10
  rescue LoadError
11
+ # Do nothing if no required gem installed
6
12
  else
7
13
  SimpleCov.start do
8
14
  track_files 'lib/**/*.rb'
9
15
 
10
16
  add_filter '/spec'
11
-
12
- enable_coverage :branch
13
-
14
17
  # do not track vendored files
15
18
  add_filter '/vendor'
16
19
  add_filter '/.vendor'
20
+
21
+ enable_coverage :branch
17
22
  end
18
23
 
19
24
  SimpleCov.formatters = [
@@ -22,10 +27,7 @@ else
22
27
  ]
23
28
  end
24
29
 
25
- require 'rspec/its'
26
- require 'beaker'
27
-
28
- Dir.glob(Dir.pwd + '/lib/beaker/hypervisor/*.rb') {|file| require file}
30
+ Dir['./lib/beaker/hypervisor/*.rb'].sort.each { |file| require file }
29
31
 
30
32
  # setup & require beaker's spec_helper.rb
31
33
  beaker_gem_spec = Gem::Specification.find_by_name('beaker')