http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachMediumToMachineIfNotAlreadyAttachedTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachMediumToMachineIfNotAlreadyAttachedTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachMediumToMachineIfNotAlreadyAttachedTest.java deleted file mode 100644 index 1f1a87c..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachMediumToMachineIfNotAlreadyAttachedTest.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static com.google.common.collect.Iterables.getOnlyElement; -import static org.easymock.EasyMock.anyLong; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import org.jclouds.virtualbox.domain.DeviceDetails; -import org.jclouds.virtualbox.domain.HardDisk; -import org.jclouds.virtualbox.domain.StorageController; -import org.testng.annotations.Test; -import org.virtualbox_4_2.DeviceType; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.IMedium; -import org.virtualbox_4_2.IProgress; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.StorageBus; -import org.virtualbox_4_2.VBoxException; -import org.virtualbox_4_2.VirtualBoxManager; - -@Test(groups = "unit", testName = "AttachMediumToMachineIfNotAlreadyAttachedTest") -public class AttachMediumToMachineIfNotAlreadyAttachedTest { - - @Test - public void testAttachHardDiskIfNotAttached() throws Exception { - - String controllerName = "IDE Controller"; - String diskPath = "/Users/johndoe/jclouds-virtualbox-images/admin.vdi"; - String diskFormat = "vdi"; - int controllerPort = 0; - int deviceSlot = 1; - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium hardDisk = createNiceMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - expect(vBox.createHardDisk(diskFormat, diskPath)).andReturn(hardDisk); - expect(hardDisk.createBaseStorage(anyLong(), anyLong())).andReturn(progress); - - machine.attachDevice(controllerName, controllerPort, deviceSlot, DeviceType.HardDisk, hardDisk); - machine.saveSettings(); - replay(manager, machine, vBox, hardDisk); - - StorageController controller = StorageController.builder() - .name(controllerName) - .bus(StorageBus.IDE) - .attachHardDisk(HardDisk.builder().diskpath(diskPath) - .controllerPort(controllerPort).deviceSlot(deviceSlot).build()) - .build(); - - - DeviceDetails deviceDetails = getOnlyElement(controller.getHardDisks()).getDeviceDetails(); - new AttachMediumToMachineIfNotAlreadyAttached(deviceDetails, hardDisk, controllerName).apply(machine); - - verify(machine); - - } - - @Test - public void testDoNothingIfAlreadyAttachedAttachHardDisk() throws Exception { - - String controllerName = "IDE Controller"; - int controllerPort = 0; - int deviceSlot = 1; - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium hardDisk = createNiceMock(IMedium.class); - - final StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("VirtualBox error: "); - errorBuilder.append("Medium '/Users/mattias/jclouds-virtualbox-test/testadmin.vdi' "); - errorBuilder.append("is already attached to port 0, device 1 of controller 'IDE Controller' "); - errorBuilder.append("of this virtual machine (0x80BB000C)"); - String isoAlreadyAttachedException = errorBuilder.toString(); - - VBoxException isoAttachedException = new VBoxException(createNiceMock(Throwable.class), - isoAlreadyAttachedException); - machine.attachDevice(controllerName, controllerPort, deviceSlot, DeviceType.HardDisk, hardDisk); - expectLastCall().andThrow(isoAttachedException); - - replay(manager, machine, vBox, hardDisk); - - StorageController controller = StorageController.builder() - .name(controllerName) - .bus(StorageBus.IDE) - .attachHardDisk(HardDisk.builder().diskpath("/Users/mattias/jclouds-virtualbox-test/testadmin.vdi") - .controllerPort(controllerPort).deviceSlot(deviceSlot).build()) - .build(); - - DeviceDetails deviceDetails = getOnlyElement(controller.getHardDisks()).getDeviceDetails(); - new AttachMediumToMachineIfNotAlreadyAttached(deviceDetails, hardDisk, controllerName).apply(machine); - - verify(machine); - - } - - @Test(expectedExceptions = VBoxException.class) - public void testFailOnOtherVBoxError() throws Exception { - - String controllerName = "IDE Controller"; - int controllerPort = 0; - int deviceSlot = 1; - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium hardDisk = createNiceMock(IMedium.class); - - final StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("VirtualBox error: "); - errorBuilder.append("Some other VBox error"); - String isoAlreadyAttachedException = errorBuilder.toString(); - - VBoxException isoAttachedException = new VBoxException(createNiceMock(Throwable.class), - isoAlreadyAttachedException); - machine.attachDevice(controllerName, controllerPort, deviceSlot, DeviceType.HardDisk, hardDisk); - expectLastCall().andThrow(isoAttachedException); - - replay(manager, machine, vBox, hardDisk); - - - StorageController controller = StorageController.builder() - .name(controllerName) - .bus(StorageBus.IDE) - .attachHardDisk(HardDisk.builder().diskpath("/Users/mattias/jclouds-virtualbox-test/testadmin.vdi") - .controllerPort(controllerPort).deviceSlot(deviceSlot).build()) - .build(); - - DeviceDetails deviceDetails = getOnlyElement(controller.getHardDisks()).getDeviceDetails(); - new AttachMediumToMachineIfNotAlreadyAttached(deviceDetails, hardDisk, controllerName).apply(machine); - - } - -}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachNATAdapterToMachineIfNotAlreadyExistsTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachNATAdapterToMachineIfNotAlreadyExistsTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachNATAdapterToMachineIfNotAlreadyExistsTest.java deleted file mode 100644 index 9a17acb..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/AttachNATAdapterToMachineIfNotAlreadyExistsTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.virtualbox_4_2.NATProtocol.TCP; -import static org.virtualbox_4_2.NetworkAttachmentType.NAT; - -import java.util.List; - -import com.google.common.collect.Lists; - -import org.jclouds.virtualbox.domain.NetworkAdapter; -import org.jclouds.virtualbox.domain.NetworkInterfaceCard; -import org.testng.annotations.Test; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.INATEngine; -import org.virtualbox_4_2.INetworkAdapter; -import org.virtualbox_4_2.NetworkAttachmentType; -import org.virtualbox_4_2.VBoxException; - -@Test(groups = "unit", testName = "AttachNATAdapterToMachineIfNotAlreadyExistsTest") -public class AttachNATAdapterToMachineIfNotAlreadyExistsTest { - - @Test - public void testApplyNetworkingToNonExistingAdapter() throws Exception { - Long slotId = 0l; - IMachine machine = createMock(IMachine.class); - INetworkAdapter iNetworkAdapter = createMock(INetworkAdapter.class); - INATEngine natEngine = createMock(INATEngine.class); - - expect(machine.getNetworkAdapter(slotId)).andReturn(iNetworkAdapter); - iNetworkAdapter.setAttachmentType(NAT); - expect(iNetworkAdapter.getNATEngine()).andReturn(natEngine).anyTimes(); - - List<String> redirects = Lists.newArrayList(); - expect(natEngine.getRedirects()).andReturn(redirects); - natEngine.addRedirect("[email protected]:2222->:22", TCP, "127.0.0.1", - 2222, "", 22); - iNetworkAdapter.setEnabled(true); - machine.saveSettings(); - - replay(machine, iNetworkAdapter, natEngine); - NetworkAdapter networkAdapter = NetworkAdapter.builder() - .networkAttachmentType(NetworkAttachmentType.NAT) - .tcpRedirectRule("127.0.0.1", 2222, "", 22).build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard - .builder().addNetworkAdapter(networkAdapter).build(); - - new AttachNATAdapterToMachineIfNotAlreadyExists(networkInterfaceCard) - .apply(machine); - - verify(machine, iNetworkAdapter, natEngine); - } - - @Test - public void testApplySkipsWhenAlreadyExists() throws Exception { - Long slotId = 0l; - IMachine machine = createMock(IMachine.class); - INetworkAdapter iNetworkAdapter = createMock(INetworkAdapter.class); - INATEngine natEngine = createMock(INATEngine.class); - - expect(machine.getNetworkAdapter(slotId)).andReturn(iNetworkAdapter); - iNetworkAdapter.setAttachmentType(NAT); - expect(iNetworkAdapter.getNATEngine()).andReturn(natEngine).anyTimes(); - - List<String> redirects = Lists.newArrayList(); - expect(natEngine.getRedirects()).andReturn(redirects); - - natEngine.addRedirect("[email protected]:2222->:22", TCP, "127.0.0.1", - 2222, "", 22); - expectLastCall() - .andThrow( - new VBoxException(null, - "VirtualBox error: A NAT rule of this name already exists (0x80070057)")); - - iNetworkAdapter.setEnabled(true); - machine.saveSettings(); - - replay(machine, iNetworkAdapter, natEngine); - NetworkAdapter networkAdapter = NetworkAdapter.builder() - .networkAttachmentType(NetworkAttachmentType.NAT) - .tcpRedirectRule("127.0.0.1", 2222, "", 22).build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard - .builder().addNetworkAdapter(networkAdapter).build(); - new AttachNATAdapterToMachineIfNotAlreadyExists(networkInterfaceCard) - .apply(machine); - - verify(machine, iNetworkAdapter, natEngine); - } - - @Test(enabled = false, expectedExceptions = VBoxException.class) - public void testRethrowInvalidAdapterSlotException() throws Exception { - Long slotId = 30l; - IMachine machine = createMock(IMachine.class); - INetworkAdapter iNetworkAdapter = createMock(INetworkAdapter.class); - INATEngine natEngine = createMock(INATEngine.class); - - String error = "VirtualBox error: Argument slot is invalid " - + "(must be slot < RT_ELEMENTS(mNetworkAdapters)) (0x80070057)"; - - VBoxException invalidSlotException = new VBoxException( - createNiceMock(Throwable.class), error); - expect(machine.getNetworkAdapter(slotId)) - .andThrow(invalidSlotException); - - replay(machine, iNetworkAdapter, natEngine); - NetworkAdapter networkAdapter = NetworkAdapter.builder() - .networkAttachmentType(NetworkAttachmentType.NAT) - .tcpRedirectRule("127.0.0.1", 2222, "", 22).build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard - .builder().addNetworkAdapter(networkAdapter).build(); - new AttachNATAdapterToMachineIfNotAlreadyExists(networkInterfaceCard) - .apply(machine); - - verify(machine, iNetworkAdapter, natEngine); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/BridgedIfStringToBridgedIfTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/BridgedIfStringToBridgedIfTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/BridgedIfStringToBridgedIfTest.java deleted file mode 100644 index d7238e7..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/BridgedIfStringToBridgedIfTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.testng.Assert.assertEquals; - -import org.jclouds.virtualbox.domain.BridgedIf; -import org.testng.annotations.Test; - -@Test(groups = "live", singleThreaded = true, testName = "BridgedIfStringToBridgedIfTest") -public class BridgedIfStringToBridgedIfTest { - - private static final String en0 = "Name: en0: Ethernet\n" + - "GUID: 00306e65-0000-4000-8000-3c0754205d2f\n" + - "Dhcp: Disabled\n" + - "IPAddress: 192.168.56.1\n" + - "NetworkMask: 255.255.255.0\n" + - "IPV6Address: \n" + - "IPV6NetworkMaskPrefixLength: 0\n" + - "HardwareAddress: 3c:07:54:20:5d:2f\n" + - "MediumType: Ethernet\n" + - "Status: Up\n" + - "VBoxNetworkName: HostInterfaceNetworking-en0: Ethernet\n"; - - private static final String en1 = "Name: en1: Wi-Fi (AirPort)\n" + - "GUID: 00316e65-0000-4000-8000-28cfdaf2917a\n" + - "Dhcp: Disabled\n" + - "IPAddress: 192.168.57.1\n" + - "NetworkMask: 255.255.255.0\n" + - "IPV6Address: \n" + - "IPV6NetworkMaskPrefixLength: 0\n" + - "HardwareAddress: 28:cf:da:f2:91:7a\n" + - "MediumType: Ethernet\n" + - "Status: Up\n" + - "VBoxNetworkName: HostInterfaceNetworking-en1: Wi-Fi (AirPort)\n"; - - private static final String p2p0 = "Name: p2p0\n" + - "GUID: 30703270-0000-4000-8000-0acfdaf2917a\n" + - "Dhcp: Disabled\n" + - "IPAddress: 192.168.58.1\n" + - "NetworkMask: 255.255.255.0\n" + - "IPV6Address: \n" + - "IPV6NetworkMaskPrefixLength: 0\n" + - "HardwareAddress: 0a:cf:da:f2:91:7a\n" + - "MediumType: Ethernet\n" + - "Status: Down\n" + - "VBoxNetworkName: HostInterfaceNetworking-p2p0\n"; - - @Test - public void transformRawBridgedifToBridgedIf() { - BridgedIf bridgedIfEn1 = new BridgedIfStringToBridgedIf().apply(en1); - assertEquals(bridgedIfEn1.getName(), "en1: Wi-Fi (AirPort)"); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest.java deleted file mode 100644 index b1c900e..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX; -import static org.testng.Assert.assertEquals; - -import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest; -import org.jclouds.virtualbox.domain.CloneSpec; -import org.jclouds.virtualbox.domain.HardDisk; -import org.jclouds.virtualbox.domain.IsoSpec; -import org.jclouds.virtualbox.domain.MasterSpec; -import org.jclouds.virtualbox.domain.NetworkAdapter; -import org.jclouds.virtualbox.domain.NetworkInterfaceCard; -import org.jclouds.virtualbox.domain.NetworkSpec; -import org.jclouds.virtualbox.domain.StorageController; -import org.jclouds.virtualbox.domain.VmSpec; -import org.testng.annotations.AfterGroups; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.virtualbox_4_2.CleanupMode; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.NetworkAttachmentType; -import org.virtualbox_4_2.StorageBus; - -import com.google.common.base.CaseFormat; -import com.google.common.collect.ImmutableSet; -import com.google.inject.Injector; - -@Test(groups = "live", singleThreaded = true, testName = "CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest") -public class CloneAndRegisterMachineFromIMachineIfNotAlreadyExistsLiveTest extends BaseVirtualBoxClientLiveTest { - - private MasterSpec machineSpec; - private String instanceName; - - @Override - @BeforeClass(groups = "live") - public void setupContext() { - super.setupContext(); - instanceName = VIRTUALBOX_IMAGE_PREFIX - + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, getClass().getSimpleName()); - - StorageController ideController = StorageController.builder() - .name("IDE Controller") - .bus(StorageBus.IDE) - .attachISO(0, 0, operatingSystemIso) - .attachHardDisk(HardDisk.builder() - .diskpath(adminDisk(instanceName)) - .controllerPort(0) - .deviceSlot(1) - .autoDelete(true) - .build()) - .attachISO(1, 1, guestAdditionsIso) - .build(); - - VmSpec instanceVmSpec = VmSpec.builder() - .id(instanceName) - .name(instanceName) - .osTypeId("") - .memoryMB(512) - .cleanUpMode(CleanupMode.Full) - .controller(ideController) - .forceOverwrite(true) - .build(); - - IsoSpec isoSpec = IsoSpec.builder() - .sourcePath(operatingSystemIso) - .installationScript(keystrokeSequence) - .build(); - - NetworkAdapter networkAdapter = NetworkAdapter.builder() - .networkAttachmentType(NetworkAttachmentType.NAT) - .tcpRedirectRule("127.0.0.1", 2222, "", 22).build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard.builder() - .addNetworkAdapter(networkAdapter) - .build(); - - NetworkSpec networkSpec = NetworkSpec.builder() - .addNIC(networkInterfaceCard) - .build(); - machineSpec = MasterSpec.builder() - .iso(isoSpec) - .vm(instanceVmSpec) - .network(networkSpec) - .build(); - } - - @Test - public void testCloneMachineFromAnotherMachine() { - IMachine source = getVmWithGuestAdditionsInstalled(); - CloneSpec cloneSpec = CloneSpec.builder().vm(machineSpec.getVmSpec()).network(machineSpec.getNetworkSpec()) - .master(source).linked(true).build(); - IMachine clone = checkNotNull( - new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(manager, workingDir, machineUtils) - .apply(cloneSpec), "clone"); - assertEquals(clone.getName(), cloneSpec.getVmSpec().getVmName()); - - } - - private IMachine getVmWithGuestAdditionsInstalled() { - MasterSpec masterSpecForTest = super.getMasterSpecForTest(); - try { - Injector injector = view.utils().injector(); - return injector.getInstance(CreateAndInstallVm.class).apply(masterSpecForTest); - } catch (IllegalStateException e) { - // already created - return manager.get().getVBox().findMachine(masterSpecForTest.getVmSpec().getVmId()); - } - } - - @AfterGroups(groups = "live") - @Override - protected void tearDownContext() { - for (String vmName : ImmutableSet.of(instanceName)) { - undoVm(vmName); - } - super.tearDownContext(); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndInstallVmLiveTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndInstallVmLiveTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndInstallVmLiveTest.java deleted file mode 100644 index 863158f..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndInstallVmLiveTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static com.google.common.base.Preconditions.checkState; -import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX; -import static org.testng.Assert.assertTrue; - -import java.net.URI; -import java.util.Map; - -import javax.inject.Inject; - -import org.jclouds.compute.config.BaseComputeServiceContextModule; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; -import org.jclouds.location.Provider; -import org.jclouds.ssh.SshClient; -import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest; -import org.jclouds.virtualbox.domain.CloneSpec; -import org.jclouds.virtualbox.domain.HardDisk; -import org.jclouds.virtualbox.domain.IsoSpec; -import org.jclouds.virtualbox.domain.MasterSpec; -import org.jclouds.virtualbox.domain.NetworkAdapter; -import org.jclouds.virtualbox.domain.NetworkInterfaceCard; -import org.jclouds.virtualbox.domain.NetworkSpec; -import org.jclouds.virtualbox.domain.StorageController; -import org.jclouds.virtualbox.domain.VmSpec; -import org.jclouds.virtualbox.predicates.SshResponds; -import org.testng.annotations.AfterGroups; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; -import org.virtualbox_4_2.CleanupMode; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.NetworkAttachmentType; -import org.virtualbox_4_2.StorageBus; - -import com.google.common.base.CaseFormat; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableSet; -import com.google.inject.Guice; -import com.google.inject.Injector; - -@Test(groups = "live", singleThreaded = true, testName = "CreateAndInstallVmLiveTest") -public class CreateAndInstallVmLiveTest extends BaseVirtualBoxClientLiveTest { - - Map<OsFamily, Map<String, String>> map = new BaseComputeServiceContextModule() { - }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule()) - .getInstance(Json.class)); - - private Injector injector; - private Function<IMachine, SshClient> sshClientForIMachine; - private Predicate<SshClient> sshResponds; - - private MasterSpec machineSpec; - private String instanceName; - - @Inject - @Provider - protected Supplier<URI> providerSupplier; - - @Override - @BeforeClass(groups = "live") - public void setupContext() { - super.setupContext(); - instanceName = VIRTUALBOX_IMAGE_PREFIX - + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, getClass().getSimpleName()); - - StorageController ideController = StorageController - .builder() - .name("IDE Controller") - .bus(StorageBus.IDE) - .attachISO(0, 0, operatingSystemIso) - .attachHardDisk( - HardDisk.builder().diskpath(adminDisk(instanceName)).controllerPort(0).deviceSlot(1) - .autoDelete(true).build()).attachISO(1, 1, guestAdditionsIso).build(); - - VmSpec instanceVmSpec = VmSpec.builder().id(instanceName).name(instanceName).osTypeId("").memoryMB(512) - .cleanUpMode(CleanupMode.Full).controller(ideController).forceOverwrite(true).build(); - - injector = view.utils().injector(); - IsoSpec isoSpec = IsoSpec - .builder() - .sourcePath(operatingSystemIso) - .installationScript(keystrokeSequence).build(); - - NetworkAdapter networkAdapter = NetworkAdapter.builder().networkAttachmentType(NetworkAttachmentType.HostOnly) - .build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard.builder().addNetworkAdapter(networkAdapter) - .addHostInterfaceName("vboxnet0").slot(0L).build(); - NetworkSpec networkSpec = NetworkSpec.builder().addNIC(networkInterfaceCard).build(); - machineSpec = MasterSpec.builder().iso(isoSpec).vm(instanceVmSpec).network(networkSpec).build(); - } - - @Test - public void testGuestAdditionsAreInstalled() throws Exception { - try { - IMachine machine = cloneFromMaster(); - machineController.ensureMachineIsLaunched(machine.getName()); - - sshClientForIMachine = injector.getInstance(IMachineToSshClient.class); - SshClient client = sshClientForIMachine.apply(machine); - - sshResponds = injector.getInstance(SshResponds.class); - checkState(sshResponds.apply(client), "timed out waiting for guest %s to be accessible via ssh", - machine.getName()); - - String version = machine.getGuestPropertyValue("/VirtualBox/GuestAdd/Version"); - - assertTrue(version != null && !version.isEmpty()); - } finally { - for (VmSpec spec : ImmutableSet.of(machineSpec.getVmSpec())) { - machineController.ensureMachineIsShutdown(spec.getVmName()); - } - } - } - - private IMachine cloneFromMaster() { - IMachine source = getVmWithGuestAdditionsInstalled(); - CloneSpec cloneSpec = CloneSpec.builder().vm(machineSpec.getVmSpec()).network(machineSpec.getNetworkSpec()) - .master(source).linked(true).build(); - return new CloneAndRegisterMachineFromIMachineIfNotAlreadyExists(manager, workingDir, machineUtils) - .apply(cloneSpec); - } - - private IMachine getVmWithGuestAdditionsInstalled() { - MasterSpec masterSpecForTest = super.getMasterSpecForTest(); - try { - Injector injector = view.utils().injector(); - return injector.getInstance(CreateAndInstallVm.class).apply(masterSpecForTest); - } catch (IllegalStateException e) { - return manager.get().getVBox().findMachine(masterSpecForTest.getVmSpec().getVmId()); - } - } - - @AfterGroups(groups = "live") - @Override - protected void tearDownContext() { - for (String vmName : ImmutableSet.of(instanceName)) { - undoVm(vmName); - } - super.tearDownContext(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest.java deleted file mode 100644 index 9a982e1..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.fail; - -import java.util.UUID; - -import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest; -import org.jclouds.virtualbox.domain.ErrorCode; -import org.jclouds.virtualbox.domain.HardDisk; -import org.jclouds.virtualbox.domain.IsoSpec; -import org.jclouds.virtualbox.domain.MasterSpec; -import org.jclouds.virtualbox.domain.NetworkAdapter; -import org.jclouds.virtualbox.domain.NetworkInterfaceCard; -import org.jclouds.virtualbox.domain.NetworkSpec; -import org.jclouds.virtualbox.domain.StorageController; -import org.jclouds.virtualbox.domain.VmSpec; -import org.testng.annotations.AfterGroups; -import org.testng.annotations.Test; -import org.virtualbox_4_2.CleanupMode; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.NetworkAttachmentType; -import org.virtualbox_4_2.StorageBus; -import org.virtualbox_4_2.VBoxException; - -import com.google.inject.Injector; - -@Test(groups = "live", singleThreaded = true, testName = "CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest") -public class CreateAndRegisterMachineFromIsoIfNotAlreadyExistsLiveTest extends BaseVirtualBoxClientLiveTest { - - private String ideControllerName; - private CleanupMode mode; - private String vmName = ""; - - @Override - public void setupContext() { - super.setupContext(); - ideControllerName = "IDE Controller"; - mode = CleanupMode.Full; - } - - @Test - public void testCreateNewMachine() throws Exception { - vmName = "jclouds-test-create-1-node"; - String vmId = UUID.randomUUID().toString(); - - StorageController ideController = StorageController.builder().name(ideControllerName).bus(StorageBus.IDE) - .attachISO(0, 0, operatingSystemIso) - .attachHardDisk(HardDisk.builder().diskpath(adminDisk(vmName)).controllerPort(0).deviceSlot(1).build()) - .attachISO(1, 1, guestAdditionsIso).build(); - - VmSpec vmSpec = VmSpec.builder().id(vmId).name(vmName).memoryMB(512).controller(ideController).cleanUpMode(mode) - .osTypeId("Debian").forceOverwrite(true).build(); - - NetworkAdapter networkAdapter = NetworkAdapter.builder().networkAttachmentType(NetworkAttachmentType.NAT) - .tcpRedirectRule("127.0.0.1", 2222, "", 22).build(); - NetworkInterfaceCard networkInterfaceCard = NetworkInterfaceCard.builder().addNetworkAdapter(networkAdapter) - .build(); - - NetworkSpec networkSpec = NetworkSpec.builder().addNIC(networkInterfaceCard).build(); - - MasterSpec machineSpec = MasterSpec.builder() - .iso(IsoSpec.builder().sourcePath(operatingSystemIso).installationScript("").build()).vm(vmSpec) - .network(networkSpec).build(); - IMachine debianNode = view.utils().injector() - .getInstance(CreateAndRegisterMachineFromIsoIfNotAlreadyExists.class).apply(machineSpec); - IMachine machine = manager.get().getVBox().findMachine(vmName); - assertEquals(debianNode.getName(), machine.getName()); - undoVm(vmName); - - } - - @Test - public void testCreateNewMachineWithBadOsType() throws Exception { - vmName = "jclouds-test-create-2-node"; - String vmId = UUID.randomUUID().toString(); - - StorageController ideController = StorageController.builder().name(ideControllerName).bus(StorageBus.IDE) - .attachISO(0, 0, operatingSystemIso) - .attachHardDisk(HardDisk.builder().diskpath(adminDisk(vmName)).controllerPort(0).deviceSlot(1).build()) - .attachISO(1, 1, guestAdditionsIso).build(); - - VmSpec vmSpec = VmSpec.builder().id(vmId).name(vmName).memoryMB(512).controller(ideController).cleanUpMode(mode) - .osTypeId("SomeWeirdUnknownOs").forceOverwrite(true).build(); - IsoSpec isoSpec = IsoSpec.builder().sourcePath(operatingSystemIso).installationScript("").build(); - NetworkSpec networkSpec = NetworkSpec.builder().build(); - MasterSpec machineSpec = MasterSpec.builder().iso(isoSpec).vm(vmSpec).network(networkSpec).build(); - try { - Injector injector = view.utils().injector(); - injector.getInstance(CreateAndRegisterMachineFromIsoIfNotAlreadyExists.class).apply(machineSpec); - fail(); - } catch (VBoxException e) { - ErrorCode errorCode = ErrorCode.valueOf(e); - // According to the documentation VBOX_E_OBJECT_NOT_FOUND - // if osTypeId is not found. - assertEquals(errorCode, ErrorCode.VBOX_E_OBJECT_NOT_FOUND); - } - undoVm(vmName); - } - - @AfterGroups(groups = "live") - @Override - protected void tearDownContext() { - super.tearDownContext(); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest.java deleted file mode 100644 index 889115c..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import java.util.List; - -import org.easymock.EasyMock; -import org.jclouds.virtualbox.domain.IsoSpec; -import org.jclouds.virtualbox.domain.MasterSpec; -import org.jclouds.virtualbox.domain.NetworkSpec; -import org.jclouds.virtualbox.domain.StorageController; -import org.jclouds.virtualbox.domain.VmSpec; -import org.jclouds.virtualbox.util.MachineUtils; -import org.testng.annotations.Test; -import org.virtualbox_4_2.CleanupMode; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.ISession; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.LockType; -import org.virtualbox_4_2.StorageBus; -import org.virtualbox_4_2.VBoxException; -import org.virtualbox_4_2.VirtualBoxManager; - -import com.beust.jcommander.internal.Lists; -import com.google.common.base.Suppliers; - -@Test(groups = "unit", testName = "CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest") -public class CreateAndRegisterMachineFromIsoIfNotAlreadyExistsTest { - - @Test(enabled = false) - public void testCreateAndSetMemoryWhenNotAlreadyExists() throws Exception { - - MachineUtils machineUtils = createMock(MachineUtils.class); - VirtualBoxManager manager = createMock(VirtualBoxManager.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - String vmName = "jclouds-image-my-ubuntu-image"; - StorageController ideController = StorageController.builder().name("IDE Controller").bus(StorageBus.IDE).build(); - VmSpec vmSpec = VmSpec.builder().id(vmName).name(vmName).osTypeId("").memoryMB(1024).controller(ideController) - .cleanUpMode(CleanupMode.Full).build(); - MasterSpec machineSpec = MasterSpec.builder() - .iso(IsoSpec.builder().sourcePath("some.iso").installationScript("").build()).vm(vmSpec) - .network(NetworkSpec.builder().build()).build(); - IMachine createdMachine = createMock(IMachine.class); - ISession session = createMock(ISession.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - String flags = ""; - List<String> groups = Lists.newArrayList(); - String group = ""; - expect(vBox.composeMachineFilename(vmName, group, flags, "/tmp/workingDir")).andReturn("settingsFile"); - - StringBuilder errorMessageBuilder = new StringBuilder(); - errorMessageBuilder.append("VirtualBox error: Could not find a registered machine with UUID {"); - errorMessageBuilder.append("'jclouds-image-virtualbox-iso-to-machine-test'} (0x80BB0001)"); - String errorMessage = errorMessageBuilder.toString(); - VBoxException vBoxException = new VBoxException(createNiceMock(Throwable.class), errorMessage); - - expect(vBox.findMachine(vmName)).andThrow(vBoxException); - - expect(vBox.createMachine(anyString(), eq(vmName), groups, anyString(), anyString())).andReturn(createdMachine) - .anyTimes(); - vBox.registerMachine(createdMachine); - - expect(vBox.findMachine(vmName)).andReturn(createdMachine).anyTimes(); - expect(manager.getSessionObject()).andReturn(session); - expect(session.getMachine()).andReturn(createdMachine); - createdMachine.lockMachine(session, LockType.Write); - createdMachine.setMemorySize(1024l); - createdMachine.saveSettings(); - session.unlockMachine(); - - // TODO: this mock test is not finished. - replay(manager, createdMachine, vBox, session); - - new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, - "/tmp/workingDir").apply(machineSpec); - - verify(manager, createdMachine, vBox, session); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testFailIfMachineIsAlreadyRegistered() throws Exception { - - MachineUtils machineUtils = createMock(MachineUtils.class); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - String vmName = "jclouds-image-my-ubuntu-image"; - - IMachine registeredMachine = createMock(IMachine.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - expect(vBox.findMachine(vmName)).andReturn(registeredMachine).anyTimes(); - - replay(manager, vBox, machineUtils); - - VmSpec launchSpecification = VmSpec.builder().id(vmName).name(vmName).osTypeId("").memoryMB(1024) - .cleanUpMode(CleanupMode.Full).build(); - - MasterSpec machineSpec = MasterSpec.builder() - .iso(IsoSpec.builder().sourcePath("some.iso").installationScript("dostuff").build()) - .vm(launchSpecification).network(NetworkSpec.builder().build()).build(); - new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, - "/tmp/workingDir").apply(machineSpec); - } - - @Test(expectedExceptions = VBoxException.class) - public void testFailIfOtherVBoxExceptionIsThrown() throws Exception { - - MachineUtils machineUtils = createMock(MachineUtils.class); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - String vmName = "jclouds-image-my-ubuntu-image"; - - String errorMessage = "VirtualBox error: Some other VBox error"; - VBoxException vBoxException = new VBoxException(createNiceMock(Throwable.class), errorMessage); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - - vBox.findMachine(vmName); - expectLastCall().andThrow(vBoxException); - - replay(manager, vBox, machineUtils); - - VmSpec launchSpecification = VmSpec.builder().id(vmName).name(vmName).osTypeId("").cleanUpMode(CleanupMode.Full) - .memoryMB(1024).build(); - MasterSpec machineSpec = MasterSpec.builder() - .iso(IsoSpec.builder().sourcePath("some.iso").installationScript("dostuff").build()) - .vm(launchSpecification).network(NetworkSpec.builder().build()).build(); - - new CreateAndRegisterMachineFromIsoIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, - "/tmp/workingDir").apply(machineSpec); - - } - - private String anyString() { - return EasyMock.<String> anyObject(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsLiveTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsLiveTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsLiveTest.java deleted file mode 100644 index 42bc5b8..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsLiveTest.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; - -import java.io.File; - -import org.jclouds.virtualbox.BaseVirtualBoxClientLiveTest; -import org.jclouds.virtualbox.domain.ErrorCode; -import org.jclouds.virtualbox.domain.HardDisk; -import org.testng.annotations.Test; -import org.virtualbox_4_2.AccessMode; -import org.virtualbox_4_2.DeviceType; -import org.virtualbox_4_2.IMedium; -import org.virtualbox_4_2.IProgress; -import org.virtualbox_4_2.VBoxException; - -public class CreateMediumIfNotAlreadyExistsLiveTest extends BaseVirtualBoxClientLiveTest { - - @Test - public void testCreateMedium() throws Exception { - String path = System.getProperty("user.home") + "/jclouds-virtualbox-test/test-medium-1.vdi"; - HardDisk hardDisk = HardDisk.builder().diskpath(path).controllerPort(0).deviceSlot(0).build(); - IMedium iMedium = new CreateMediumIfNotAlreadyExists(manager, machineUtils, true).apply(hardDisk); - manager.get().getVBox().openMedium(path, DeviceType.HardDisk, AccessMode.ReadWrite, true); - try { - assertFileCanBeDeleted(path); - } finally { - deleteMediumAndBlockUntilComplete(iMedium); - } - } - - @Test - public void testCreateMediumFailWhenUsingNonFullyQualifiedPath() throws Exception { - String path = "test-medium-2.vdi"; - HardDisk hardDisk = HardDisk.builder().diskpath(path).controllerPort(0).deviceSlot(0).build(); - try { - new CreateMediumIfNotAlreadyExists(manager, machineUtils, true).apply(hardDisk); - fail(); - } catch (VBoxException e) { - ErrorCode errorCode = ErrorCode.valueOf(e); - assertEquals(errorCode, ErrorCode.VBOX_E_FILE_ERROR); - } - } - - @Test - public void testCreateSameMediumTwiceWhenUsingOverwrite() throws Exception { - String path = System.getProperty("user.home") + "/jclouds-virtualbox-test/test-medium-3.vdi"; - HardDisk hardDisk = HardDisk.builder().diskpath(path).controllerPort(0).deviceSlot(0).build(); - new CreateMediumIfNotAlreadyExists(manager, machineUtils, true).apply(hardDisk); - IMedium iMedium = new CreateMediumIfNotAlreadyExists(manager, machineUtils, true).apply(hardDisk); - manager.get().getVBox().openMedium(path, DeviceType.HardDisk, AccessMode.ReadWrite, true); - try { - assertFileCanBeDeleted(path); - } finally { - deleteMediumAndBlockUntilComplete(iMedium); - } - } - - private void assertFileCanBeDeleted(String path) { - File file = new File(path); - boolean mediumDeleted = file.delete(); - assertTrue(mediumDeleted); - } - - void deleteMediumAndBlockUntilComplete(IMedium medium) { - final IProgress progress = medium.deleteStorage(); - progress.waitForCompletion(-1); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsTest.java deleted file mode 100644 index 1fbafe3..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/CreateMediumIfNotAlreadyExistsTest.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.anyLong; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.testng.Assert.assertNotSame; - -import org.jclouds.virtualbox.domain.HardDisk; -import org.jclouds.virtualbox.util.MachineUtils; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; -import org.virtualbox_4_2.AccessMode; -import org.virtualbox_4_2.DeviceType; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.IMedium; -import org.virtualbox_4_2.IMediumAttachment; -import org.virtualbox_4_2.IProgress; -import org.virtualbox_4_2.ISession; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.LockType; -import org.virtualbox_4_2.VBoxException; -import org.virtualbox_4_2.VirtualBoxManager; - -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableList; - -public class CreateMediumIfNotAlreadyExistsTest { - - private String adminDiskPath; - private String diskFormat; - - @BeforeMethod - public void setUp() throws Exception { - adminDiskPath = "/Users/johndoe/jclouds-virtualbox-images/admin.vdi"; - diskFormat = "vdi"; - } - - @Test - public void testCreateMediumWhenDiskDoesNotExists() throws Exception { - - HardDisk hardDisk = createTestHardDisk(); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - MachineUtils machineUtils = createMock(MachineUtils.class); - - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium medium = createMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("org.virtualbox_4_2.VBoxException: VirtualBox error: "); - errorBuilder.append("Could not find file for the medium "); - errorBuilder.append("'/Users/johndoe/jclouds-virtualbox-test/testadmin.vdi' (0x80BB0001)"); - String errorMessage = errorBuilder.toString(); - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - - VBoxException notFoundException = new VBoxException(createNiceMock(Throwable.class), errorMessage); - expect(vBox.openMedium(adminDiskPath, DeviceType.HardDisk, AccessMode.ReadWrite, false)).andThrow(notFoundException); - expect(vBox.createHardDisk(diskFormat, adminDiskPath)).andReturn(medium); - expect(medium.createBaseStorage(anyLong(), anyLong())).andReturn(progress); - //expect(machineUtils.writeLockMachineAndApply(anyString(), new DetachDistroMediumFromMachine(anyString(), anyInt() , anyInt()))).andReturn().anyTimes(); - - replay(manager, machine, vBox, medium, machineUtils); - - new CreateMediumIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, true).apply(hardDisk); - - verify(machine, vBox); - - } - - @Test - public void testDeleteAndCreateNewStorageWhenMediumExistsAndUsingOverwrite() throws Exception { - HardDisk hardDisk = createTestHardDisk(); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - MachineUtils machineUtils = createMock(MachineUtils.class); - - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium medium = createMock(IMedium.class); - IMedium newHardDisk = createMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - expect(vBox.openMedium(adminDiskPath, DeviceType.HardDisk, AccessMode.ReadWrite, false)).andReturn(medium); - - expect(medium.deleteStorage()).andReturn(progress); - expect(vBox.createHardDisk(diskFormat, adminDiskPath)).andReturn(newHardDisk); - expect(newHardDisk.createBaseStorage(anyLong(), anyLong())).andReturn(progress); - - //expect(machineUtils.writeLockMachineAndApply(anyString(), new DetachDistroMediumFromMachine(anyString(), anyInt() , anyInt()))).andReturn(v).anyTimes(); - - replay(manager, machine, vBox, medium, newHardDisk, progress, machineUtils); - - IMedium newDisk = new CreateMediumIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, true).apply(hardDisk); - - verify(machine, vBox, medium); - assertNotSame(newDisk, medium); - } - - @Test(enabled = false) - public void testDeleteAndCreateNewStorageWhenMediumExistsAndUsingOverwriteAndStillAttachedDetachesOldThing() - throws Exception { - HardDisk hardDisk = createTestHardDisk(); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - MachineUtils machineUtils = createMock(MachineUtils.class); - - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium medium = createMock(IMedium.class); - - IMedium newHardDisk = createMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - expect(vBox.openMedium(adminDiskPath, DeviceType.HardDisk, AccessMode.ReadWrite, false)).andReturn(medium); - - String oldMachineId = "a1e03931-29f3-4370-ada3-9547b1009212"; - String oldMachineName = "oldMachine"; - IMachine oldMachine = createMock(IMachine.class); - IMediumAttachment oldAttachment = createMock(IMediumAttachment.class); - String oldAttachmentController = "oldAttachmentController"; - int oldAttachmentDevice = 1; - int oldAttachmentPort = 2; - IMedium oldMedium = createMock(IMedium.class); - String oldMediumId = "oldMediumId"; - ISession detachSession = createNiceMock(ISession.class); - - StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("org.virtualbox_4_2.VBoxException: VirtualBox error: "); - errorBuilder.append("Cannot delete storage: medium '/Users/adriancole/jclouds-virtualbox-test/testadmin.vdi "); - errorBuilder.append("is still attached to the following 1 virtual machine(s): "); - errorBuilder.append(oldMachineId + " (0x80BB000C)"); - String errorMessage = errorBuilder.toString(); - - VBoxException stillAttached = new VBoxException(createNiceMock(Throwable.class), errorMessage); - expect(medium.deleteStorage()).andThrow(stillAttached); - - expect(vBox.findMachine(oldMachineId)).andReturn(oldMachine); - expect(oldMachine.getMediumAttachments()).andReturn(ImmutableList.of(oldAttachment)); - expect(oldAttachment.getMedium()).andReturn(oldMedium); - expect(oldMedium.getId()).andReturn(oldMediumId); - // in this case, they are the same medium, so safe to detach - expect(medium.getId()).andReturn(oldMediumId); - expect(oldMachine.getName()).andReturn(oldMachineName); - expect(oldAttachment.getController()).andReturn(oldAttachmentController); - expect(oldAttachment.getDevice()).andReturn(oldAttachmentDevice); - expect(oldAttachment.getPort()).andReturn(oldAttachmentPort); - // TODO: is this ok that we searched by ID last time? - expect(vBox.findMachine(oldMachineName)).andReturn(oldMachine); - expect(manager.getSessionObject()).andReturn(detachSession); - oldMachine.lockMachine(detachSession, LockType.Write); - expect(detachSession.getMachine()).andReturn(oldMachine); - oldMachine.detachDevice(oldAttachmentController, oldAttachmentPort, oldAttachmentDevice); - oldMachine.saveSettings(); - - expect(medium.deleteStorage()).andReturn(progress); - expect(vBox.createHardDisk(diskFormat, adminDiskPath)).andReturn(newHardDisk); - expect(newHardDisk.createBaseStorage(anyLong(), anyLong())).andReturn(progress); - - replay(manager, oldMachine, oldAttachment, oldMedium, detachSession, machine, vBox, medium, newHardDisk, progress, machineUtils); - - IMedium newDisk = new CreateMediumIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, true).apply(hardDisk); - - verify(machine, oldMachine, oldAttachment, detachSession, oldMedium, vBox, medium); - assertNotSame(newDisk, medium); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testFailWhenMediumExistsAndNotUsingOverwrite() throws Exception { - HardDisk hardDisk = createTestHardDisk(); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - MachineUtils machineUtils = createMock(MachineUtils.class); - - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium medium = createMock(IMedium.class); - IMedium newHardDisk = createMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - expect(vBox.openMedium(adminDiskPath, DeviceType.HardDisk, AccessMode.ReadWrite, false)).andReturn(medium); - - replay(manager, machine, vBox, medium, newHardDisk, progress, machineUtils); - - new CreateMediumIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, false).apply(hardDisk); - } - - @Test(expectedExceptions = VBoxException.class) - public void testFailOnOtherVBoxException() throws Exception { - - HardDisk hardDisk = createTestHardDisk(); - - VirtualBoxManager manager = createNiceMock(VirtualBoxManager.class); - MachineUtils machineUtils = createMock(MachineUtils.class); - - IMachine machine = createMock(IMachine.class); - IVirtualBox vBox = createMock(IVirtualBox.class); - IMedium medium = createMock(IMedium.class); - IProgress progress = createNiceMock(IProgress.class); - - String errorMessage = "VirtualBox error: Some other VBox error"; - - expect(manager.getVBox()).andReturn(vBox).anyTimes(); - - VBoxException notFoundException = new VBoxException(createNiceMock(Throwable.class), errorMessage); - expect(vBox.openMedium(adminDiskPath, DeviceType.HardDisk, AccessMode.ReadWrite, false)).andThrow(notFoundException); - expect(vBox.createHardDisk(diskFormat, adminDiskPath)).andReturn(medium); - expect(medium.createBaseStorage(anyLong(), anyLong())).andReturn(progress); - - replay(manager, machine, vBox, medium, machineUtils); - - new CreateMediumIfNotAlreadyExists(Suppliers.ofInstance(manager), machineUtils, true).apply(hardDisk); - } - - private HardDisk createTestHardDisk() { - return HardDisk.builder().diskpath(adminDiskPath).controllerPort(0).deviceSlot(0).build(); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/DetachDistroMediumFromMachineTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/DetachDistroMediumFromMachineTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/DetachDistroMediumFromMachineTest.java deleted file mode 100644 index 0bfbc07..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/DetachDistroMediumFromMachineTest.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; - -import org.testng.annotations.Test; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.VBoxException; - -@Test(groups = "unit", testName = "DetachDistroMediumFromMachineTest") -public class DetachDistroMediumFromMachineTest { - - @Test - public void testDetachDistroMedium() throws Exception { - - String controller = "IDE Controller"; - IMachine machine = createMock(IMachine.class); - - int controllerPort = 0; - int device = 1; - - machine.saveSettings(); - machine.detachDevice(controller, controllerPort, device); - - replay(machine); - - new DetachDistroMediumFromMachine(controller, controllerPort, device).apply(machine); - - verify(machine); - - } - - @Test - public void testAcceptAlreadyDetachedDistroMedium() throws Exception { - - String controller = "IDE Controller"; - - IMachine machine = createNiceMock(IMachine.class); - - final StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("VirtualBox error: "); - errorBuilder.append("Medium '/Users/johndoe/jclouds-virtualbox-test/ubuntu-11.04-server-i386.iso' "); - errorBuilder.append("is already detached from port 0, device 0 of controller 'IDE Controller' "); - errorBuilder.append("of this virtual machine (0x80BB000C)"); - String isoAlreadyAttachedException = errorBuilder.toString(); - - int controllerPort = 0; - int device = 1; - - VBoxException isoAttachedException = new VBoxException(createNiceMock(Throwable.class), isoAlreadyAttachedException); - machine.detachDevice(controller, controllerPort, device); - expectLastCall().andThrow(isoAttachedException); - - replay(machine); - - new DetachDistroMediumFromMachine(controller, controllerPort, device).apply(machine); - - verify(machine); - - } - - @Test(expectedExceptions = VBoxException.class) - public void testFailOnOtherVBoxErrors() throws Exception { - - String controllerName = "IDE Controller"; - - IMachine machine = createNiceMock(IMachine.class); - - final StringBuilder errorBuilder = new StringBuilder(); - errorBuilder.append("VirtualBox error: "); - errorBuilder.append("Some other VBox error"); - String isoAlreadyAttachedException = errorBuilder.toString(); - - int controllerPort = 0; - int device = 1; - - VBoxException isoAttachedException = new VBoxException(createNiceMock(Throwable.class), isoAlreadyAttachedException); - machine.detachDevice(controllerName, controllerPort, device); - expectLastCall().andThrow(isoAttachedException); - - replay(machine); - - new DetachDistroMediumFromMachine(controllerName, controllerPort, device).apply(machine); - - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToHardwareTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToHardwareTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToHardwareTest.java deleted file mode 100644 index 2475815..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToHardwareTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.testng.Assert.assertEquals; - -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.predicates.ImagePredicates; -import org.testng.annotations.Test; -import org.virtualbox_4_2.IGuestOSType; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.VirtualBoxManager; - -import com.google.common.base.Suppliers; - -@Test(groups = "unit") -public class IMachineToHardwareTest { - - @Test - public void testConvert() throws Exception { - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - IMachine vm = createNiceMock(IMachine.class); - IGuestOSType guestOsType = createNiceMock(IGuestOSType.class); - - String linuxDescription = "Ubuntu Linux 10.04"; - String machineName = "hw-machineId"; - - expect(vm.getOSTypeId()).andReturn("os-type").anyTimes(); - expect(vm.getName()).andReturn(machineName).anyTimes(); - - expect(vm.getDescription()).andReturn(linuxDescription).anyTimes(); - - expect(vBox.getGuestOSType(eq("os-type"))).andReturn(guestOsType); - expect(vbm.getVBox()).andReturn(vBox); - expect(guestOsType.getIs64Bit()).andReturn(true); - - replay(vbm, vBox, vm, guestOsType); - - Hardware hardware = new IMachineToHardware(Suppliers.ofInstance(vbm)).apply(vm); - - assertEquals(hardware.getId(), machineName); - assertEquals(hardware.getProviderId(), machineName); - // for starters assume 1-to-1 relationship hardware to image (which - // correlate to a single source IMachine) - assertEquals(hardware.supportsImage().toString(), ImagePredicates.idEquals(machineName).toString()); - - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToImageTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToImageTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToImageTest.java deleted file mode 100644 index 3f9f7e8..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToImageTest.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.testng.Assert.assertEquals; -import static org.testng.AssertJUnit.assertTrue; - -import java.util.Map; - -import org.jclouds.compute.config.BaseComputeServiceContextModule; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; -import org.jclouds.virtualbox.config.VirtualBoxComputeServiceContextModule; -import org.jclouds.virtualbox.config.VirtualBoxConstants; -import org.testng.annotations.Test; -import org.virtualbox_4_2.IGuestOSType; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.MachineState; -import org.virtualbox_4_2.VirtualBoxManager; - -import com.google.common.base.Suppliers; -import com.google.inject.Guice; - -@Test(groups = "unit", testName = "IMachineToImageTest") -public class IMachineToImageTest { - - Map<OsFamily, Map<String, String>> map = new BaseComputeServiceContextModule() { - }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule()) - .getInstance(Json.class)); - - @Test - public void testConvert() throws Exception { - - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - IMachine vm = createNiceMock(IMachine.class); - IGuestOSType guestOsType = createNiceMock(IGuestOSType.class); - String linuxDescription = "Ubuntu 10.04"; - expect(vbm.getVBox()).andReturn(vBox).anyTimes(); - - expect(vm.getOSTypeId()).andReturn("os-type").anyTimes(); - expect(vm.getName()).andReturn(VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX + "my-vm-id").anyTimes(); - expect(vBox.getGuestOSType(eq("os-type"))).andReturn(guestOsType); - expect(vm.getDescription()).andReturn("my-ubuntu-machine").anyTimes(); - expect(guestOsType.getDescription()).andReturn(linuxDescription).anyTimes(); - expect(guestOsType.getIs64Bit()).andReturn(true); - expect(vm.getState()).andReturn(MachineState.PoweredOff); - - replay(vbm, vBox, vm, guestOsType); - - IMachineToImage fn = new IMachineToImage(VirtualBoxComputeServiceContextModule.toPortableImageStatus, Suppliers - .ofInstance(vbm), map); - - Image image = fn.apply(vm); - - assertEquals(image.getDescription(), "my-ubuntu-machine"); - assertEquals(image.getOperatingSystem().getDescription(), linuxDescription); - assertTrue(image.getOperatingSystem().is64Bit()); - assertEquals(image.getOperatingSystem().getFamily(), OsFamily.UBUNTU); - assertEquals(image.getOperatingSystem().getVersion(), "10.04"); - assertEquals(image.getId(), "my-vm-id"); - assertEquals(image.getStatus(), Image.Status.AVAILABLE); - - } - - @Test - public void testConvert1() throws Exception { - - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - IMachine vm = createNiceMock(IMachine.class); - IGuestOSType guestOsType = createNiceMock(IGuestOSType.class); - String guestOsDescription = "ubuntu 11.04 server (i386)"; - String vmDescription = "ubuntu-11.04-server-i386"; - expect(vbm.getVBox()).andReturn(vBox).anyTimes(); - - expect(vm.getName()).andReturn(VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX + "my-vm-id").anyTimes(); - expect(vm.getOSTypeId()).andReturn("os-type").anyTimes(); - expect(vBox.getGuestOSType(eq("os-type"))).andReturn(guestOsType); - expect(vm.getDescription()).andReturn(vmDescription).anyTimes(); - expect(guestOsType.getDescription()).andReturn(guestOsDescription).anyTimes(); - expect(guestOsType.getIs64Bit()).andReturn(true); - expect(vm.getState()).andReturn(MachineState.Running); - - replay(vbm, vBox, vm, guestOsType); - - IMachineToImage fn = new IMachineToImage(VirtualBoxComputeServiceContextModule.toPortableImageStatus, Suppliers - .ofInstance(vbm), map); - - Image image = fn.apply(vm); - - assertEquals(image.getDescription(), vmDescription); - assertEquals(image.getOperatingSystem().getDescription(), guestOsDescription); - assertTrue(image.getOperatingSystem().is64Bit()); - assertEquals(image.getOperatingSystem().getFamily(), OsFamily.UBUNTU); - assertEquals(image.getOperatingSystem().getVersion(), "11.04"); - assertEquals(image.getId(), "my-vm-id"); - assertEquals(image.getStatus(), Image.Status.PENDING); - - } - - @Test - public void testUnparseableOsString() throws Exception { - - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - IMachine vm = createNiceMock(IMachine.class); - IGuestOSType guestOsType = createNiceMock(IGuestOSType.class); - - expect(vbm.getVBox()).andReturn(vBox).anyTimes(); - - expect(vm.getName()).andReturn(VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX + "my-vm-id").anyTimes(); - String unknownOsDescription = "SomeOtherOs 2.04"; - expect(vm.getOSTypeId()).andReturn("os-type").anyTimes(); - expect(vm.getDescription()).andReturn("my-unknown-machine").anyTimes(); - expect(guestOsType.getDescription()).andReturn(unknownOsDescription).anyTimes(); - expect(guestOsType.getIs64Bit()).andReturn(true); - expect(vBox.getGuestOSType(eq("os-type"))).andReturn(guestOsType); - expect(vm.getState()).andReturn(MachineState.PoweredOff); - - replay(vbm, vBox, vm, guestOsType); - - IMachineToImage fn = new IMachineToImage(VirtualBoxComputeServiceContextModule.toPortableImageStatus, Suppliers - .ofInstance(vbm), map); - - Image image = fn.apply(vm); - - assertEquals(image.getOperatingSystem().getDescription(), "SomeOtherOs 2.04"); - assertEquals(image.getOperatingSystem().getVersion(), ""); - assertEquals(image.getId(), "my-vm-id"); - - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/75178c77/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToNodeMetadataTest.java ---------------------------------------------------------------------- diff --git a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToNodeMetadataTest.java b/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToNodeMetadataTest.java deleted file mode 100644 index 66288f8..0000000 --- a/virtualbox/src/test/java/org/jclouds/virtualbox/functions/IMachineToNodeMetadataTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.virtualbox.functions; - -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_IMAGE_PREFIX; -import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_NODE_NAME_SEPARATOR; -import static org.jclouds.virtualbox.config.VirtualBoxConstants.VIRTUALBOX_NODE_PREFIX; -import static org.testng.Assert.assertEquals; - -import java.util.Map; - -import org.jclouds.compute.config.BaseComputeServiceContextModule; -import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.json.Json; -import org.jclouds.json.config.GsonModule; -import org.jclouds.virtualbox.config.VirtualBoxComputeServiceContextModule; -import org.jclouds.virtualbox.util.NetworkUtils; -import org.testng.annotations.Test; -import org.virtualbox_4_2.IGuestOSType; -import org.virtualbox_4_2.IMachine; -import org.virtualbox_4_2.INATEngine; -import org.virtualbox_4_2.INetworkAdapter; -import org.virtualbox_4_2.IVirtualBox; -import org.virtualbox_4_2.MachineState; -import org.virtualbox_4_2.NetworkAttachmentType; -import org.virtualbox_4_2.VirtualBoxManager; - -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.inject.Guice; - -public class IMachineToNodeMetadataTest { - - private static final String MASTER_NAME = "mock-image-of-a-server"; - Map<OsFamily, Map<String, String>> map = new BaseComputeServiceContextModule() { - }.provideOsVersionMap(new ComputeServiceConstants.ReferenceData(), Guice.createInjector(new GsonModule()) - .getInstance(Json.class)); - - @Test(enabled = false) - public void testCreateFromMaster() throws Exception { - - IMachine vm = createNiceMock(IMachine.class); - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - IGuestOSType iGuestOSType = createNiceMock(IGuestOSType.class); - INetworkAdapter nat = createNiceMock(INetworkAdapter.class); - INATEngine natEng = createNiceMock(INATEngine.class); - - expect(vm.getName()).andReturn(VIRTUALBOX_IMAGE_PREFIX + MASTER_NAME).anyTimes(); - expect(vm.getState()).andReturn(MachineState.PoweredOff).anyTimes(); - expect(vm.getNetworkAdapter(eq(0l))).andReturn(nat).once(); - expect(vm.getNetworkAdapter(eq(1l))).andReturn(null).once(); - expect(nat.getAttachmentType()).andReturn(NetworkAttachmentType.NAT).once(); - expect(nat.getNATEngine()).andReturn(natEng).anyTimes(); - expect(natEng.getHostIP()).andReturn("127.0.0.1").once(); - expect(natEng.getRedirects()).andReturn(ImmutableList.of("0,1,127.0.0.1,2222,,22")); - - expect(vbm.getVBox()).andReturn(vBox).anyTimes(); - expect(vm.getOSTypeId()).andReturn("RedHat_64").anyTimes(); - expect(vBox.getGuestOSType(vm.getOSTypeId())).andReturn(iGuestOSType); - - INetworkAdapter hostOnly = createNiceMock(INetworkAdapter.class); - NetworkUtils networkUtils = createNiceMock(NetworkUtils.class); - - replay(vm, vBox, iGuestOSType, nat, natEng, hostOnly, networkUtils); - - NodeMetadata node = new IMachineToNodeMetadata(Suppliers - .ofInstance(vbm), VirtualBoxComputeServiceContextModule.toPortableNodeStatus, - networkUtils, map).apply(vm); - - assertEquals(MASTER_NAME, node.getName()); - assertEquals(1, node.getPrivateAddresses().size()); - assertEquals(1, node.getPublicAddresses().size()); - assertEquals("127.0.0.1", Iterables.get(node.getPublicAddresses(), 0)); - assertEquals(NetworkUtils.MASTER_PORT, node.getLoginPort()); - assertEquals("", node.getGroup()); - } - - @Test(enabled = false) - public void testCreateFromNode() throws Exception { - - IMachine vm = createNiceMock(IMachine.class); - VirtualBoxManager vbm = createNiceMock(VirtualBoxManager.class); - IVirtualBox vBox = createNiceMock(IVirtualBox.class); - expect(vbm.getVBox()).andReturn(vBox).anyTimes(); - String group = "my-cluster-group"; - String name = "a-name-with-a-code-338"; - - expect(vm.getName()).andReturn( - VIRTUALBOX_NODE_PREFIX + MASTER_NAME + VIRTUALBOX_NODE_NAME_SEPARATOR + group - + VIRTUALBOX_NODE_NAME_SEPARATOR + name).anyTimes(); - expect(vm.getState()).andReturn(MachineState.PoweredOff).anyTimes(); - - INetworkAdapter nat = createNiceMock(INetworkAdapter.class); - INATEngine natEng = createNiceMock(INATEngine.class); - - INetworkAdapter hostOnly = createNiceMock(INetworkAdapter.class); - - - - expect(vm.getNetworkAdapter(eq(0l))).andReturn(nat).once(); - expect(vm.getNetworkAdapter(eq(1l))).andReturn(hostOnly).once(); - expect(nat.getAttachmentType()).andReturn(NetworkAttachmentType.NAT).once(); - expect(nat.getNATEngine()).andReturn(natEng).anyTimes(); - expect(natEng.getHostIP()).andReturn("127.0.0.1").once(); - expect(natEng.getRedirects()).andReturn(ImmutableList.of("0,1,127.0.0.1,3000,,22")); - NetworkUtils networkUtils = createNiceMock(NetworkUtils.class); - - replay(vm, nat, natEng, hostOnly, networkUtils); - - NodeMetadata node = new IMachineToNodeMetadata(Suppliers - .ofInstance(vbm), VirtualBoxComputeServiceContextModule.toPortableNodeStatus, - networkUtils, map).apply(vm); - - assertEquals(name, node.getName()); - assertEquals(group, node.getGroup()); - assertEquals(1, node.getPublicAddresses().size()); - } -}
