virtualbox 0.5.4 → 0.6.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.
Files changed (162) hide show
  1. data/.gitignore +2 -1
  2. data/Gemfile +1 -1
  3. data/Rakefile +1 -1
  4. data/Readme.md +5 -21
  5. data/VERSION +1 -1
  6. data/docs/WhatsNew.md +9 -47
  7. data/lib/virtualbox.rb +7 -30
  8. data/lib/virtualbox/abstract_model.rb +25 -5
  9. data/lib/virtualbox/abstract_model/attributable.rb +5 -1
  10. data/lib/virtualbox/abstract_model/dirty.rb +2 -0
  11. data/lib/virtualbox/abstract_model/interface_attributes.rb +96 -0
  12. data/lib/virtualbox/abstract_model/relatable.rb +19 -8
  13. data/lib/virtualbox/appliance.rb +59 -0
  14. data/lib/virtualbox/audio_adapter.rb +44 -0
  15. data/lib/virtualbox/bios.rb +44 -0
  16. data/lib/virtualbox/com.rb +23 -0
  17. data/lib/virtualbox/com/abstract_enum.rb +42 -0
  18. data/lib/virtualbox/com/abstract_implementer.rb +43 -0
  19. data/lib/virtualbox/com/abstract_interface.rb +165 -0
  20. data/lib/virtualbox/com/ffi/interface.rb +141 -0
  21. data/lib/virtualbox/com/ffi/interfaces.rb +42 -0
  22. data/lib/virtualbox/com/ffi/util.rb +101 -0
  23. data/lib/virtualbox/com/ffi/vboxxpcomc.rb +31 -0
  24. data/lib/virtualbox/com/ffi_interface.rb +65 -0
  25. data/lib/virtualbox/com/implementer/base.rb +52 -0
  26. data/lib/virtualbox/com/implementer/ffi.rb +350 -0
  27. data/lib/virtualbox/com/implementer/mscom.rb +165 -0
  28. data/lib/virtualbox/com/implementer/nil.rb +10 -0
  29. data/lib/virtualbox/com/interface/appliance.rb +20 -0
  30. data/lib/virtualbox/com/interface/audio_adapter.rb +13 -0
  31. data/lib/virtualbox/com/interface/audio_controller_type.rb +9 -0
  32. data/lib/virtualbox/com/interface/audio_driver_type.rb +9 -0
  33. data/lib/virtualbox/com/interface/bios_boot_menu_mode.rb +9 -0
  34. data/lib/virtualbox/com/interface/bios_settings.rb +19 -0
  35. data/lib/virtualbox/com/interface/clipboard_mode.rb +9 -0
  36. data/lib/virtualbox/com/interface/console.rb +48 -0
  37. data/lib/virtualbox/com/interface/cpu_property_type.rb +9 -0
  38. data/lib/virtualbox/com/interface/device_type.rb +9 -0
  39. data/lib/virtualbox/com/interface/dhcp_server.rb +20 -0
  40. data/lib/virtualbox/com/interface/firmware_type.rb +9 -0
  41. data/lib/virtualbox/com/interface/guest_os_type.rb +21 -0
  42. data/lib/virtualbox/com/interface/host.rb +40 -0
  43. data/lib/virtualbox/com/interface/host_network_interface.rb +28 -0
  44. data/lib/virtualbox/com/interface/host_network_interface_medium_type.rb +9 -0
  45. data/lib/virtualbox/com/interface/host_network_interface_status.rb +9 -0
  46. data/lib/virtualbox/com/interface/host_network_interface_type.rb +9 -0
  47. data/lib/virtualbox/com/interface/host_usb_device.rb +11 -0
  48. data/lib/virtualbox/com/interface/host_usb_device_filter.rb +11 -0
  49. data/lib/virtualbox/com/interface/hw_virt_ex_property_type.rb +9 -0
  50. data/lib/virtualbox/com/interface/machine.rb +103 -0
  51. data/lib/virtualbox/com/interface/machine_state.rb +12 -0
  52. data/lib/virtualbox/com/interface/medium.rb +48 -0
  53. data/lib/virtualbox/com/interface/medium_attachment.rb +16 -0
  54. data/lib/virtualbox/com/interface/medium_format.rb +16 -0
  55. data/lib/virtualbox/com/interface/medium_state.rb +9 -0
  56. data/lib/virtualbox/com/interface/medium_type.rb +9 -0
  57. data/lib/virtualbox/com/interface/medium_variant.rb +9 -0
  58. data/lib/virtualbox/com/interface/network_adapter.rb +28 -0
  59. data/lib/virtualbox/com/interface/network_adapter_type.rb +9 -0
  60. data/lib/virtualbox/com/interface/network_attachment_type.rb +9 -0
  61. data/lib/virtualbox/com/interface/nsiexception.rb +21 -0
  62. data/lib/virtualbox/com/interface/nsisupports.rb +13 -0
  63. data/lib/virtualbox/com/interface/parallel_port.rb +15 -0
  64. data/lib/virtualbox/com/interface/port_mode.rb +9 -0
  65. data/lib/virtualbox/com/interface/progress.rb +58 -0
  66. data/lib/virtualbox/com/interface/serial_port.rb +17 -0
  67. data/lib/virtualbox/com/interface/session.rb +16 -0
  68. data/lib/virtualbox/com/interface/session_state.rb +9 -0
  69. data/lib/virtualbox/com/interface/session_type.rb +9 -0
  70. data/lib/virtualbox/com/interface/shared_folder.rb +15 -0
  71. data/lib/virtualbox/com/interface/snapshot.rb +18 -0
  72. data/lib/virtualbox/com/interface/storage_bus.rb +9 -0
  73. data/lib/virtualbox/com/interface/storage_controller.rb +21 -0
  74. data/lib/virtualbox/com/interface/storage_controller_type.rb +9 -0
  75. data/lib/virtualbox/com/interface/system_properties.rb +35 -0
  76. data/lib/virtualbox/com/interface/usb_controller.rb +18 -0
  77. data/lib/virtualbox/com/interface/usb_device.rb +22 -0
  78. data/lib/virtualbox/com/interface/usb_device_filter.rb +21 -0
  79. data/lib/virtualbox/com/interface/usb_device_filter_action.rb +9 -0
  80. data/lib/virtualbox/com/interface/usb_device_state.rb +9 -0
  81. data/lib/virtualbox/com/interface/virtual_box_error_info.rb +15 -0
  82. data/lib/virtualbox/com/interface/virtual_system_description.rb +17 -0
  83. data/lib/virtualbox/com/interface/virtual_system_description_type.rb +12 -0
  84. data/lib/virtualbox/com/interface/virtual_system_description_value_type.rb +9 -0
  85. data/lib/virtualbox/com/interface/virtualbox.rb +54 -0
  86. data/lib/virtualbox/com/interface/vrdp_auth_type.rb +9 -0
  87. data/lib/virtualbox/com/interface/vrdp_server.rb +17 -0
  88. data/lib/virtualbox/com/mscom_interface.rb +22 -0
  89. data/lib/virtualbox/com/util.rb +18 -0
  90. data/lib/virtualbox/dvd.rb +7 -94
  91. data/lib/virtualbox/exceptions.rb +24 -0
  92. data/lib/virtualbox/ext/glob_loader.rb +22 -0
  93. data/lib/virtualbox/ext/logger.rb +38 -0
  94. data/lib/virtualbox/ext/platform.rb +1 -1
  95. data/lib/virtualbox/extra_data.rb +25 -37
  96. data/lib/virtualbox/forwarded_port.rb +35 -13
  97. data/lib/virtualbox/global.rb +22 -80
  98. data/lib/virtualbox/hard_drive.rb +30 -97
  99. data/lib/virtualbox/lib.rb +82 -0
  100. data/lib/virtualbox/media.rb +7 -6
  101. data/lib/virtualbox/medium.rb +138 -0
  102. data/lib/virtualbox/medium_attachment.rb +61 -0
  103. data/lib/virtualbox/network_adapter.rb +134 -0
  104. data/lib/virtualbox/shared_folder.rb +53 -78
  105. data/lib/virtualbox/storage_controller.rb +76 -20
  106. data/lib/virtualbox/system_properties.rb +74 -0
  107. data/lib/virtualbox/usb_controller.rb +55 -0
  108. data/lib/virtualbox/version.rb +15 -0
  109. data/lib/virtualbox/virtual_system_description.rb +47 -0
  110. data/lib/virtualbox/vm.rb +160 -272
  111. data/test/test_helper.rb +0 -108
  112. data/test/virtualbox/abstract_model/attributable_test.rb +7 -1
  113. data/test/virtualbox/abstract_model/dirty_test.rb +1 -1
  114. data/test/virtualbox/abstract_model/interface_attributes_test.rb +169 -0
  115. data/test/virtualbox/abstract_model/relatable_test.rb +20 -0
  116. data/test/virtualbox/abstract_model_test.rb +40 -5
  117. data/test/virtualbox/appliance_test.rb +152 -0
  118. data/test/virtualbox/audio_adapter_test.rb +83 -0
  119. data/test/virtualbox/bios_test.rb +83 -0
  120. data/test/virtualbox/com/abstract_enum_test.rb +48 -0
  121. data/test/virtualbox/com/abstract_implementer_test.rb +39 -0
  122. data/test/virtualbox/com/abstract_interface_test.rb +139 -0
  123. data/test/virtualbox/com/ffi/interface_test.rb +249 -0
  124. data/test/virtualbox/com/ffi/util_test.rb +86 -0
  125. data/test/virtualbox/com/ffi_interface_test.rb +42 -0
  126. data/test/virtualbox/com/implementer/base_test.rb +37 -0
  127. data/test/virtualbox/com/implementer/ffi_test.rb +519 -0
  128. data/test/virtualbox/com/implementer/mscom_test.rb +208 -0
  129. data/test/virtualbox/com/mscom_interface_test.rb +17 -0
  130. data/test/virtualbox/com/util_test.rb +17 -0
  131. data/test/virtualbox/dvd_test.rb +4 -95
  132. data/test/virtualbox/ext/platform_test.rb +8 -0
  133. data/test/virtualbox/extra_data_test.rb +78 -102
  134. data/test/virtualbox/forwarded_port_test.rb +57 -7
  135. data/test/virtualbox/global_test.rb +25 -115
  136. data/test/virtualbox/hard_drive_test.rb +49 -212
  137. data/test/virtualbox/lib_test.rb +93 -0
  138. data/test/virtualbox/medium_attachment_test.rb +147 -0
  139. data/test/virtualbox/medium_test.rb +192 -0
  140. data/test/virtualbox/network_adapter_test.rb +160 -0
  141. data/test/virtualbox/shared_folder_test.rb +144 -160
  142. data/test/virtualbox/storage_controller_test.rb +166 -45
  143. data/test/virtualbox/system_properties_test.rb +87 -0
  144. data/test/virtualbox/usb_controller_test.rb +104 -0
  145. data/test/virtualbox/version_test.rb +34 -0
  146. data/test/virtualbox/virtual_system_description_test.rb +61 -0
  147. data/test/virtualbox/vm_test.rb +288 -322
  148. data/test/virtualbox_test.rb +1 -9
  149. data/virtualbox.gemspec +139 -23
  150. metadata +143 -27
  151. data/lib/virtualbox/attached_device.rb +0 -249
  152. data/lib/virtualbox/command.rb +0 -109
  153. data/lib/virtualbox/image.rb +0 -137
  154. data/lib/virtualbox/nic.rb +0 -111
  155. data/lib/virtualbox/system_property.rb +0 -55
  156. data/lib/virtualbox/usb.rb +0 -72
  157. data/test/virtualbox/attached_device_test.rb +0 -303
  158. data/test/virtualbox/command_test.rb +0 -152
  159. data/test/virtualbox/image_test.rb +0 -190
  160. data/test/virtualbox/nic_test.rb +0 -76
  161. data/test/virtualbox/system_property_test.rb +0 -71
  162. data/test/virtualbox/usb_test.rb +0 -35
@@ -1,152 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class CommandTest < Test::Unit::TestCase
4
- context "getting the version" do
5
- setup do
6
- VirtualBox::Command.stubs(:execute).returns("foo")
7
- VirtualBox::Command.stubs(:success?).returns(true)
8
- end
9
-
10
- should "be able to call version on VirtualBox and it calls the class method" do
11
- version = "foo"
12
- assert_equal version, VirtualBox.version
13
- end
14
-
15
- should "run the command with the version flag" do
16
- VirtualBox::Command.expects(:execute).with("VBoxManage --version").once.returns("7")
17
- VirtualBox::Command.version
18
- end
19
-
20
- should "return the value of the command if it succeeded" do
21
- version = "3.1.4r1940"
22
- VirtualBox::Command.expects(:execute).returns(version)
23
- assert_equal version, VirtualBox::Command.version
24
- end
25
-
26
- should "return the value of nil if the command failed" do
27
- VirtualBox::Command.expects(:success?).returns(false)
28
- assert_nil VirtualBox::Command.version
29
- end
30
-
31
- should "strip the newlines from the result" do
32
- version = "3.1.4r1940"
33
- VirtualBox::Command.expects(:execute).returns(version + "\n")
34
- assert_equal version, VirtualBox::Command.version
35
- end
36
- end
37
-
38
- context "parsing XML" do
39
- should "open the file, parse it, and close the file" do
40
- arg = "foo"
41
- file = mock("file")
42
- seq = sequence("seq")
43
- File.expects(:open).with(arg, "r").returns(file).in_sequence(seq)
44
- Nokogiri.expects(:XML).in_sequence(seq)
45
- file.expects(:close).in_sequence(seq)
46
-
47
- VirtualBox::Command.parse_xml(arg)
48
- end
49
- end
50
-
51
- context "shell escaping" do
52
- should "convert value to string" do
53
- assert_nothing_raised do
54
- assert_equal "400", VirtualBox::Command.shell_escape(400)
55
- end
56
- end
57
-
58
- context "unix" do
59
- setup do
60
- VirtualBox::Platform.stubs(:windows?).returns(false)
61
- end
62
-
63
- should "convert properly" do
64
- assert_equal "foo\\ bar", VirtualBox::Command.shell_escape("foo bar")
65
- end
66
- end
67
-
68
- context "windows" do
69
- setup do
70
- VirtualBox::Platform.stubs(:windows?).returns(true)
71
- end
72
-
73
- should "wrap strings with spaces in quotes" do
74
- assert_equal '"foo bar"', VirtualBox::Command.shell_escape("foo bar")
75
- end
76
-
77
- should "just return the string if it has no spaces" do
78
- assert_equal "foo:bar", VirtualBox::Command.shell_escape('foo:bar')
79
- end
80
- end
81
- end
82
-
83
- context "executing commands" do
84
- should "use backticks to execute the command" do
85
- VirtualBox::Command.expects(:`).with("foo").once
86
- VirtualBox::Command.execute("foo")
87
- end
88
-
89
- should "return the result of the execution" do
90
- VirtualBox::Command.expects(:`).with("foo").returns("bar").once
91
- assert_equal "bar", VirtualBox::Command.execute("foo")
92
- end
93
- end
94
-
95
- context "vbox commands" do
96
- should "call 'vboxmanage' followed by command" do
97
- VirtualBox::Command.expects(:execute).with("VBoxManage -q foo")
98
- VirtualBox::Command.stubs(:success?).returns(true)
99
- VirtualBox::Command.vboxmanage("foo")
100
- end
101
-
102
- should "call the custom vboxmanage executable if set" do
103
- VirtualBox::Command.vboxmanage = "barf"
104
- VirtualBox::Command.expects(:execute).with("barf -q foo")
105
- VirtualBox::Command.stubs(:success?).returns(true)
106
- VirtualBox::Command.vboxmanage("foo")
107
- VirtualBox::Command.vboxmanage = "VBoxManage"
108
- end
109
-
110
- should "raise a CommandFailedException if it failed" do
111
- VirtualBox::Command.expects(:execute).with("VBoxManage -q foo")
112
- VirtualBox::Command.stubs(:success?).returns(false)
113
- assert_raises(VirtualBox::Exceptions::CommandFailedException) {
114
- VirtualBox::Command.vboxmanage("foo")
115
- }
116
- end
117
-
118
- should "call vboxmanage with multiple arguments" do
119
- VirtualBox::Command.expects(:execute).with("VBoxManage -q foo bar baz --bak bax")
120
- VirtualBox::Command.vboxmanage("foo", "bar", "baz", "--bak", "bax")
121
- end
122
-
123
- should "shell escape all arguments" do
124
- VirtualBox::Command.expects(:execute).with("VBoxManage -q foo\\ bar baz another\\ string")
125
- VirtualBox::Command.vboxmanage("foo bar", "baz", "another string")
126
- end
127
-
128
- should "convert arguments to strings" do
129
- VirtualBox::Command.expects(:execute).with("VBoxManage -q isastring 8")
130
- VirtualBox::Command.vboxmanage(:isastring, 8)
131
- end
132
- end
133
-
134
- context "testing command results" do
135
- setup do
136
- @command = "foo"
137
- VirtualBox::Command.stubs(:execute)
138
- end
139
-
140
- should "return true if the exit code is 0" do
141
- system("echo 'hello' 1>/dev/null")
142
- assert_equal 0, $?.to_i
143
- assert VirtualBox::Command.test(@command)
144
- end
145
-
146
- should "return false if the exit code is 1" do
147
- system("there_is_no_way_this_can_exist_1234567890")
148
- assert_not_equal 0, $?.to_i
149
- assert !VirtualBox::Command.test(@command)
150
- end
151
- end
152
- end
@@ -1,190 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class ImageTest < Test::Unit::TestCase
4
- context "image type and empty drive" do
5
- setup do
6
- @image = VirtualBox::Image.new
7
- end
8
-
9
- should "raise an exception if image_type is called on Image" do
10
- assert_raises(RuntimeError) { @image.image_type }
11
- end
12
-
13
- should "return false by default on empty_drive?" do
14
- assert !@image.empty_drive?
15
- end
16
- end
17
-
18
- context "in a relationship" do
19
- class ImageRelationshipModel < VirtualBox::AbstractModel
20
- relationship :image, VirtualBox::Image
21
- end
22
-
23
- setup do
24
- @model = ImageRelationshipModel.new
25
- end
26
-
27
- context "populating a relationship" do
28
- should "return 'emptydrive' if the medium is an empty drive" do
29
- result = VirtualBox::Image.populate_relationship(@model, {
30
- :medium => "emptydrive"
31
- })
32
-
33
- assert result.is_a?(VirtualBox::DVD)
34
- assert result.empty_drive?
35
- end
36
-
37
- should "result a matching image from subclasses if uuid" do
38
- uuid = "foo'"
39
-
40
- subobject = mock("subobject")
41
- subobject.stubs(:uuid).returns(uuid)
42
-
43
- subclass = mock("subclass")
44
- subclass.stubs(:all).returns([subobject])
45
-
46
- VirtualBox::Image.expects(:subclasses).returns([subclass])
47
-
48
- result = VirtualBox::Image.populate_relationship(@model, { :uuid => uuid })
49
- assert_equal subobject, result
50
- end
51
-
52
- should "result in nil if suboject can't be found" do
53
- VirtualBox::Image.expects(:subclasses).returns([])
54
- assert_nil VirtualBox::Image.populate_relationship(@model, { :uuid => "foo" })
55
- end
56
- end
57
-
58
- context "setting relationship object" do
59
- should "raise an InvalidRelationshipObjectException if new value is not an image" do
60
- assert_raises(VirtualBox::Exceptions::InvalidRelationshipObjectException) {
61
- @model.image = "foo"
62
- }
63
- end
64
-
65
- should "not raise an exception if setting to nil" do
66
- assert_nothing_raised { @model.image = nil }
67
- end
68
-
69
- should "just return the new value if it is an image" do
70
- image = VirtualBox::Image.new
71
- assert_nil @model.image
72
- assert_nothing_raised { @model.image = image }
73
- assert_equal image, @model.image
74
- end
75
- end
76
- end
77
-
78
- context "recording subclasses" do
79
- should "list all subclasses" do
80
- assert_nothing_raised { VirtualBox::Image.subclasses }
81
- end
82
- end
83
-
84
- context "parsing raw" do
85
- setup do
86
- @raw = <<-raw
87
- UUID: 9d2e4353-d1e9-466c-ac58-f2249264147b
88
- Format: VDI
89
- Location: /Users/mitchellh/Library/VirtualBox/HardDisks/TestJeOS.vdi
90
- Accessible: yes
91
- Type: normal
92
- Usage: TestJeOS (UUID: 3d0f87b4-50f7-4fc5-ad89-93375b1b32a3)
93
-
94
- UUID: 11dedd14-57a1-4bdb-adeb-dd1d67f066e1
95
- Format: VDI
96
- Location: /Users/mitchellh/Library/VirtualBox/HardDisks/HoboBase.vdi
97
- Accessible: yes
98
- Type: normal
99
- Usage: HoboBase (UUID: 696249ad-00b6-4087-b47f-9b82629efc31)
100
-
101
- UUID: 322f79fd-7da6-416f-a16f-e70066ccf165
102
- Format: VMDK
103
- Location: /Users/mitchellh/Library/VirtualBox/HardDisks/HoboBase.vmdk
104
- Accessible: yes
105
- Type: normal
106
- Usage: HoboBase_2 (UUID: 3cc36c5d-562a-4030-8acf-f061f44170c4)
107
- raw
108
- end
109
-
110
- should "call parse block the correct number of times" do
111
- VirtualBox::Image.expects(:parse_block).times(3).returns({})
112
- VirtualBox::Image.parse_raw(@raw)
113
- end
114
-
115
- should "remove nil (invalid) blocks from result" do
116
- result = VirtualBox::Image.parse_raw(@raw)
117
- assert_equal 3, result.length
118
- end
119
-
120
- should "be able to extract the filename from the location" do
121
- result = VirtualBox::Image.parse_raw(@raw)
122
- assert_equal "TestJeOS.vdi", result[0].filename
123
- assert_equal "HoboBase.vdi", result[1].filename
124
- assert_equal "HoboBase.vmdk", result[2].filename
125
- end
126
- end
127
-
128
- context "parsing multiple blocks" do
129
- setup do
130
- @raw = <<-raw
131
- one
132
-
133
- two
134
-
135
- three
136
- raw
137
- end
138
-
139
- should "call parse block for each multiline" do
140
- parse_seq = sequence("parse")
141
- VirtualBox::Image.expects(:parse_block).with("one").in_sequence(parse_seq)
142
- VirtualBox::Image.expects(:parse_block).with("two").in_sequence(parse_seq)
143
- VirtualBox::Image.expects(:parse_block).with("three").in_sequence(parse_seq)
144
- VirtualBox::Image.parse_blocks(@raw)
145
- end
146
-
147
- should "return an array of the parses with nil ignored" do
148
- parse_seq = sequence("parse")
149
- VirtualBox::Image.expects(:parse_block).with("one").returns({}).in_sequence(parse_seq)
150
- VirtualBox::Image.expects(:parse_block).with("two").returns(nil).in_sequence(parse_seq)
151
- VirtualBox::Image.expects(:parse_block).with("three").returns({}).in_sequence(parse_seq)
152
- result = VirtualBox::Image.parse_blocks(@raw)
153
-
154
- assert result.is_a?(Array)
155
- assert_equal 2, result.length
156
- end
157
- end
158
-
159
- context "parsing a single block" do
160
- setup do
161
- @expected = {
162
- :uuid => "1234567890",
163
- :path => "foo",
164
- :accessible => "yes"
165
- }
166
-
167
- @block = ""
168
- @expected.each { |k,v| @block += "#{k}: #{v}\n" }
169
- end
170
-
171
- should "return nil for an invalid block" do
172
- assert VirtualBox::Image.parse_block("HI").nil?
173
- end
174
-
175
- should "mirror location to path" do
176
- result = VirtualBox::Image.parse_block(@block)
177
- assert_equal "foo", result[:location]
178
- end
179
-
180
- should "properly parse if all properties are available" do
181
- result = VirtualBox::Image.parse_block(@block)
182
- assert !result.nil?
183
-
184
- @expected.each do |k,v|
185
- k = :location if k == :path
186
- assert_equal v, result[k]
187
- end
188
- end
189
- end
190
- end
@@ -1,76 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class NicTest < Test::Unit::TestCase
4
- setup do
5
- @caller = mock("caller")
6
- @caller.stubs(:name).returns("foo")
7
- end
8
-
9
- context "saving" do
10
- setup do
11
- @nic = VirtualBox::Nic.populate_relationship(@caller, mock_xml_doc)
12
- @vmname = "myvm"
13
- end
14
-
15
- should "use the vmname strung through the save" do
16
- VirtualBox::Command.expects(:vboxmanage).with("modifyvm", @vmname, "--nic1", "foo")
17
-
18
- nic = @nic[0]
19
- nic.nic = "foo"
20
- nic.save(@vmname)
21
- end
22
-
23
- should "use the proper index" do
24
- VirtualBox::Command.expects(:vboxmanage).with("modifyvm", @vmname, "--nic2", "far")
25
-
26
- nic = @nic[1]
27
- nic.nic = "far"
28
- nic.save(@vmname)
29
- end
30
-
31
- should "save the nictype" do
32
- VirtualBox::Command.expects(:vboxmanage).with("modifyvm", @vmname, "--nictype1", "ZOO")
33
-
34
- nic = @nic[0]
35
- nic.nictype = "ZOO"
36
- assert nic.nictype_changed?
37
- nic.save(@vmname)
38
- end
39
-
40
- should "raise a CommandFailedException if it fails" do
41
- VirtualBox::Command.stubs(:vboxmanage).raises(VirtualBox::Exceptions::CommandFailedException)
42
-
43
- nic = @nic[0]
44
- nic.nictype = "ZOO"
45
- assert_raises(VirtualBox::Exceptions::CommandFailedException) {
46
- nic.save(@vmname)
47
- }
48
- end
49
- end
50
-
51
- context "populating relationships" do
52
- setup do
53
- @value = VirtualBox::Nic.populate_relationship(@caller, mock_xml_doc)
54
- end
55
-
56
- should "create the correct amount of objects" do
57
- assert_equal 8, @value.length
58
- end
59
-
60
- should "not be dirty initially" do
61
- assert !@value[0].changed?
62
- end
63
-
64
- should "be an existing record" do
65
- assert !@value[0].new_record?
66
- end
67
-
68
- should "parse the type" do
69
- assert_equal "Am79C973", @value[0].nictype
70
- end
71
-
72
- should "correctly turn adapters which aren't enabled into 'none'" do
73
- assert_equal "none", @value[2].nic
74
- end
75
- end
76
- end
@@ -1,71 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class SystemPropertyTest < Test::Unit::TestCase
4
- setup do
5
- @raw = <<-raw
6
- VirtualBox Command Line Management Interface Version 3.1.2
7
- (C) 2005-2009 Sun Microsystems, Inc.
8
- All rights reserved.
9
-
10
- Minimum guest RAM size: 4 Megabytes
11
- Maximum guest RAM size: 3584 Megabytes
12
- Minimum video RAM size: 1 Megabytes
13
- Maximum video RAM size: 128 Megabytes
14
- Minimum guest CPU count: 1
15
- Maximum guest CPU count: 32
16
- Maximum VDI size: 2097151 Megabytes
17
- Maximum Network Adapter count: 8
18
- Maximum Serial Port count: 2
19
- Maximum Parallel Port count: 2
20
- Maximum Boot Position: 4
21
- Maximum IDE Controllers: 1
22
- Maximum IDE Port count: 2
23
- Maximum Devices per IDE Port: 2
24
- Maximum SATA Controllers: 1
25
- Maximum SATA Port count: 30
26
- Maximum Devices per SATA Port: 1
27
- Maximum SCSI Controllers: 1
28
- Maximum SCSI Port count: 16
29
- Maximum Devices per SCSI Port: 1
30
- Maximum Floppy Controllers: 1
31
- Maximum Floppy Port count: 1
32
- Maximum Devices per Floppy Port: 2
33
- Default machine folder: /Users/mitchellh/Library/VirtualBox/Machines
34
- Default hard disk folder: /Users/mitchellh/Library/VirtualBox/HardDisks
35
- VRDP authentication library: VRDPAuth
36
- Webservice auth. library: VRDPAuth
37
- Log history count: 3
38
- raw
39
- end
40
-
41
- context "getting all system properties" do
42
- setup do
43
- VirtualBox::Command.stubs(:vboxmanage).returns(@raw)
44
- end
45
-
46
- should "return a new SystemProperty object" do
47
- result = VirtualBox::SystemProperty.all
48
- assert result.is_a?(VirtualBox::SystemProperty)
49
- end
50
-
51
- should "run the vboxmanage command and parse its output" do
52
- raw = mock("raw")
53
- VirtualBox::Command.expects(:vboxmanage).with("list", "systemproperties").returns(raw)
54
- VirtualBox::SystemProperty.expects(:parse_raw).with(raw).returns("foo")
55
- VirtualBox::SystemProperty.all
56
- end
57
- end
58
-
59
- context "parsing the raw output" do
60
- should "return a hash with the proper number of values" do
61
- result = VirtualBox::SystemProperty.parse_raw(@raw)
62
- assert result.is_a?(Hash)
63
- assert_equal 28, result.length
64
- end
65
-
66
- should "lowercase and convert each key to a symbol" do
67
- result = VirtualBox::SystemProperty.parse_raw(@raw)
68
- assert_equal "30", result[:maximum_sata_port_count]
69
- end
70
- end
71
- end