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.
- data/.gitignore +2 -1
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/Readme.md +5 -21
- data/VERSION +1 -1
- data/docs/WhatsNew.md +9 -47
- data/lib/virtualbox.rb +7 -30
- data/lib/virtualbox/abstract_model.rb +25 -5
- data/lib/virtualbox/abstract_model/attributable.rb +5 -1
- data/lib/virtualbox/abstract_model/dirty.rb +2 -0
- data/lib/virtualbox/abstract_model/interface_attributes.rb +96 -0
- data/lib/virtualbox/abstract_model/relatable.rb +19 -8
- data/lib/virtualbox/appliance.rb +59 -0
- data/lib/virtualbox/audio_adapter.rb +44 -0
- data/lib/virtualbox/bios.rb +44 -0
- data/lib/virtualbox/com.rb +23 -0
- data/lib/virtualbox/com/abstract_enum.rb +42 -0
- data/lib/virtualbox/com/abstract_implementer.rb +43 -0
- data/lib/virtualbox/com/abstract_interface.rb +165 -0
- data/lib/virtualbox/com/ffi/interface.rb +141 -0
- data/lib/virtualbox/com/ffi/interfaces.rb +42 -0
- data/lib/virtualbox/com/ffi/util.rb +101 -0
- data/lib/virtualbox/com/ffi/vboxxpcomc.rb +31 -0
- data/lib/virtualbox/com/ffi_interface.rb +65 -0
- data/lib/virtualbox/com/implementer/base.rb +52 -0
- data/lib/virtualbox/com/implementer/ffi.rb +350 -0
- data/lib/virtualbox/com/implementer/mscom.rb +165 -0
- data/lib/virtualbox/com/implementer/nil.rb +10 -0
- data/lib/virtualbox/com/interface/appliance.rb +20 -0
- data/lib/virtualbox/com/interface/audio_adapter.rb +13 -0
- data/lib/virtualbox/com/interface/audio_controller_type.rb +9 -0
- data/lib/virtualbox/com/interface/audio_driver_type.rb +9 -0
- data/lib/virtualbox/com/interface/bios_boot_menu_mode.rb +9 -0
- data/lib/virtualbox/com/interface/bios_settings.rb +19 -0
- data/lib/virtualbox/com/interface/clipboard_mode.rb +9 -0
- data/lib/virtualbox/com/interface/console.rb +48 -0
- data/lib/virtualbox/com/interface/cpu_property_type.rb +9 -0
- data/lib/virtualbox/com/interface/device_type.rb +9 -0
- data/lib/virtualbox/com/interface/dhcp_server.rb +20 -0
- data/lib/virtualbox/com/interface/firmware_type.rb +9 -0
- data/lib/virtualbox/com/interface/guest_os_type.rb +21 -0
- data/lib/virtualbox/com/interface/host.rb +40 -0
- data/lib/virtualbox/com/interface/host_network_interface.rb +28 -0
- data/lib/virtualbox/com/interface/host_network_interface_medium_type.rb +9 -0
- data/lib/virtualbox/com/interface/host_network_interface_status.rb +9 -0
- data/lib/virtualbox/com/interface/host_network_interface_type.rb +9 -0
- data/lib/virtualbox/com/interface/host_usb_device.rb +11 -0
- data/lib/virtualbox/com/interface/host_usb_device_filter.rb +11 -0
- data/lib/virtualbox/com/interface/hw_virt_ex_property_type.rb +9 -0
- data/lib/virtualbox/com/interface/machine.rb +103 -0
- data/lib/virtualbox/com/interface/machine_state.rb +12 -0
- data/lib/virtualbox/com/interface/medium.rb +48 -0
- data/lib/virtualbox/com/interface/medium_attachment.rb +16 -0
- data/lib/virtualbox/com/interface/medium_format.rb +16 -0
- data/lib/virtualbox/com/interface/medium_state.rb +9 -0
- data/lib/virtualbox/com/interface/medium_type.rb +9 -0
- data/lib/virtualbox/com/interface/medium_variant.rb +9 -0
- data/lib/virtualbox/com/interface/network_adapter.rb +28 -0
- data/lib/virtualbox/com/interface/network_adapter_type.rb +9 -0
- data/lib/virtualbox/com/interface/network_attachment_type.rb +9 -0
- data/lib/virtualbox/com/interface/nsiexception.rb +21 -0
- data/lib/virtualbox/com/interface/nsisupports.rb +13 -0
- data/lib/virtualbox/com/interface/parallel_port.rb +15 -0
- data/lib/virtualbox/com/interface/port_mode.rb +9 -0
- data/lib/virtualbox/com/interface/progress.rb +58 -0
- data/lib/virtualbox/com/interface/serial_port.rb +17 -0
- data/lib/virtualbox/com/interface/session.rb +16 -0
- data/lib/virtualbox/com/interface/session_state.rb +9 -0
- data/lib/virtualbox/com/interface/session_type.rb +9 -0
- data/lib/virtualbox/com/interface/shared_folder.rb +15 -0
- data/lib/virtualbox/com/interface/snapshot.rb +18 -0
- data/lib/virtualbox/com/interface/storage_bus.rb +9 -0
- data/lib/virtualbox/com/interface/storage_controller.rb +21 -0
- data/lib/virtualbox/com/interface/storage_controller_type.rb +9 -0
- data/lib/virtualbox/com/interface/system_properties.rb +35 -0
- data/lib/virtualbox/com/interface/usb_controller.rb +18 -0
- data/lib/virtualbox/com/interface/usb_device.rb +22 -0
- data/lib/virtualbox/com/interface/usb_device_filter.rb +21 -0
- data/lib/virtualbox/com/interface/usb_device_filter_action.rb +9 -0
- data/lib/virtualbox/com/interface/usb_device_state.rb +9 -0
- data/lib/virtualbox/com/interface/virtual_box_error_info.rb +15 -0
- data/lib/virtualbox/com/interface/virtual_system_description.rb +17 -0
- data/lib/virtualbox/com/interface/virtual_system_description_type.rb +12 -0
- data/lib/virtualbox/com/interface/virtual_system_description_value_type.rb +9 -0
- data/lib/virtualbox/com/interface/virtualbox.rb +54 -0
- data/lib/virtualbox/com/interface/vrdp_auth_type.rb +9 -0
- data/lib/virtualbox/com/interface/vrdp_server.rb +17 -0
- data/lib/virtualbox/com/mscom_interface.rb +22 -0
- data/lib/virtualbox/com/util.rb +18 -0
- data/lib/virtualbox/dvd.rb +7 -94
- data/lib/virtualbox/exceptions.rb +24 -0
- data/lib/virtualbox/ext/glob_loader.rb +22 -0
- data/lib/virtualbox/ext/logger.rb +38 -0
- data/lib/virtualbox/ext/platform.rb +1 -1
- data/lib/virtualbox/extra_data.rb +25 -37
- data/lib/virtualbox/forwarded_port.rb +35 -13
- data/lib/virtualbox/global.rb +22 -80
- data/lib/virtualbox/hard_drive.rb +30 -97
- data/lib/virtualbox/lib.rb +82 -0
- data/lib/virtualbox/media.rb +7 -6
- data/lib/virtualbox/medium.rb +138 -0
- data/lib/virtualbox/medium_attachment.rb +61 -0
- data/lib/virtualbox/network_adapter.rb +134 -0
- data/lib/virtualbox/shared_folder.rb +53 -78
- data/lib/virtualbox/storage_controller.rb +76 -20
- data/lib/virtualbox/system_properties.rb +74 -0
- data/lib/virtualbox/usb_controller.rb +55 -0
- data/lib/virtualbox/version.rb +15 -0
- data/lib/virtualbox/virtual_system_description.rb +47 -0
- data/lib/virtualbox/vm.rb +160 -272
- data/test/test_helper.rb +0 -108
- data/test/virtualbox/abstract_model/attributable_test.rb +7 -1
- data/test/virtualbox/abstract_model/dirty_test.rb +1 -1
- data/test/virtualbox/abstract_model/interface_attributes_test.rb +169 -0
- data/test/virtualbox/abstract_model/relatable_test.rb +20 -0
- data/test/virtualbox/abstract_model_test.rb +40 -5
- data/test/virtualbox/appliance_test.rb +152 -0
- data/test/virtualbox/audio_adapter_test.rb +83 -0
- data/test/virtualbox/bios_test.rb +83 -0
- data/test/virtualbox/com/abstract_enum_test.rb +48 -0
- data/test/virtualbox/com/abstract_implementer_test.rb +39 -0
- data/test/virtualbox/com/abstract_interface_test.rb +139 -0
- data/test/virtualbox/com/ffi/interface_test.rb +249 -0
- data/test/virtualbox/com/ffi/util_test.rb +86 -0
- data/test/virtualbox/com/ffi_interface_test.rb +42 -0
- data/test/virtualbox/com/implementer/base_test.rb +37 -0
- data/test/virtualbox/com/implementer/ffi_test.rb +519 -0
- data/test/virtualbox/com/implementer/mscom_test.rb +208 -0
- data/test/virtualbox/com/mscom_interface_test.rb +17 -0
- data/test/virtualbox/com/util_test.rb +17 -0
- data/test/virtualbox/dvd_test.rb +4 -95
- data/test/virtualbox/ext/platform_test.rb +8 -0
- data/test/virtualbox/extra_data_test.rb +78 -102
- data/test/virtualbox/forwarded_port_test.rb +57 -7
- data/test/virtualbox/global_test.rb +25 -115
- data/test/virtualbox/hard_drive_test.rb +49 -212
- data/test/virtualbox/lib_test.rb +93 -0
- data/test/virtualbox/medium_attachment_test.rb +147 -0
- data/test/virtualbox/medium_test.rb +192 -0
- data/test/virtualbox/network_adapter_test.rb +160 -0
- data/test/virtualbox/shared_folder_test.rb +144 -160
- data/test/virtualbox/storage_controller_test.rb +166 -45
- data/test/virtualbox/system_properties_test.rb +87 -0
- data/test/virtualbox/usb_controller_test.rb +104 -0
- data/test/virtualbox/version_test.rb +34 -0
- data/test/virtualbox/virtual_system_description_test.rb +61 -0
- data/test/virtualbox/vm_test.rb +288 -322
- data/test/virtualbox_test.rb +1 -9
- data/virtualbox.gemspec +139 -23
- metadata +143 -27
- data/lib/virtualbox/attached_device.rb +0 -249
- data/lib/virtualbox/command.rb +0 -109
- data/lib/virtualbox/image.rb +0 -137
- data/lib/virtualbox/nic.rb +0 -111
- data/lib/virtualbox/system_property.rb +0 -55
- data/lib/virtualbox/usb.rb +0 -72
- data/test/virtualbox/attached_device_test.rb +0 -303
- data/test/virtualbox/command_test.rb +0 -152
- data/test/virtualbox/image_test.rb +0 -190
- data/test/virtualbox/nic_test.rb +0 -76
- data/test/virtualbox/system_property_test.rb +0 -71
- 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
|
data/test/virtualbox/nic_test.rb
DELETED
|
@@ -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
|