diff --git a/labs/virtualbox/pom.xml b/labs/virtualbox/pom.xml index d41c02277b..e6dd502692 100644 --- a/labs/virtualbox/pom.xml +++ b/labs/virtualbox/pom.xml @@ -40,11 +40,9 @@ 4.1.8r75467 administrator 12345 - ubuntu-11.04-server-i386 + default-ubuntu-11.04-i386 toor:password true - true - target/test-classes/testImages.yaml @@ -147,7 +145,6 @@ ${test.virtualbox.image-id} ${test.virtualbox.image.login-user} ${test.virtualbox.image.authenticate-sudo} - ${test.virtualbox.image.descriptor.yaml} diff --git a/labs/virtualbox/src/main/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunning.java b/labs/virtualbox/src/main/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunning.java index ee3bdf994b..7374471fa9 100644 --- a/labs/virtualbox/src/main/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunning.java +++ b/labs/virtualbox/src/main/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunning.java @@ -70,6 +70,7 @@ public class StartVBoxIfNotAlreadyRunning implements Supplier @Provider Supplier providerSupplier, @Identity String identity, @Credential String credential) { this.runScriptOnNodeFactory = checkNotNull(runScriptOnNodeFactory, "runScriptOnNodeFactory"); this.socketTester = checkNotNull(socketTester, "socketTester"); + this.socketTester.seconds(1L); this.host = checkNotNull(host, "host"); this.providerSupplier = checkNotNull(providerSupplier, "endpoint to virtualbox websrvd is needed"); this.identity = checkNotNull(identity, "identity"); @@ -96,8 +97,8 @@ public class StartVBoxIfNotAlreadyRunning implements Supplier manager = managerForNode.apply(host); manager.connect(provider.toASCIIString(), identity, credential); if (logger.isDebugEnabled()) - if (manager.getSessionObject().getState() == SessionState.Unlocked) - logger.warn("manager is not in unlocked state " + manager); + if (manager.getSessionObject().getState() != SessionState.Unlocked) + logger.warn("manager is not in unlocked state " + manager.getSessionObject().getState()); } @Override diff --git a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java index cbf9c71ed1..c50c479408 100644 --- a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java +++ b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/BaseVirtualBoxClientLiveTest.java @@ -19,6 +19,8 @@ package org.jclouds.virtualbox; +import static com.google.common.base.Preconditions.checkNotNull; + import java.io.File; import java.net.URI; import java.util.Properties; @@ -32,13 +34,17 @@ import org.jclouds.byon.config.CacheNodeStoreModule; import org.jclouds.compute.BaseVersionedServiceLiveTest; import org.jclouds.compute.ComputeServiceContext; import org.jclouds.compute.ComputeServiceContextFactory; +import org.jclouds.compute.domain.Image; import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.domain.OsFamily; +import org.jclouds.compute.domain.Template; import org.jclouds.compute.strategy.PrioritizeCredentialsFromTemplate; import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; import org.jclouds.sshj.config.SshjSshClientModule; +import org.jclouds.virtualbox.compute.VirtualBoxComputeServiceAdapter; import org.jclouds.virtualbox.config.VirtualBoxConstants; import org.jclouds.virtualbox.domain.IsoSpec; +import org.jclouds.virtualbox.domain.Master; import org.jclouds.virtualbox.domain.VmSpec; import org.jclouds.virtualbox.functions.admin.UnregisterMachineIfExistsAndDeleteItsMedia; import org.jclouds.virtualbox.util.MachineUtils; @@ -72,16 +78,16 @@ public class BaseVirtualBoxClientLiveTest extends BaseVersionedServiceLiveTest { } protected ComputeServiceContext context; - + @Inject protected Supplier manager; - + @Inject - void eagerlyStartManager(Supplier manager){ + void eagerlyStartManager(Supplier manager) { this.manager = manager; manager.get(); } - + @Inject protected MachineUtils machineUtils; @@ -89,7 +95,7 @@ public class BaseVirtualBoxClientLiveTest extends BaseVersionedServiceLiveTest { @Inject @Preconfiguration protected LoadingCache preconfigurationUri; - + protected String hostVersion; protected String operatingSystemIso; protected String guestAdditionsIso; @@ -101,6 +107,8 @@ public class BaseVirtualBoxClientLiveTest extends BaseVersionedServiceLiveTest { protected Supplier host; @Inject protected PrioritizeCredentialsFromTemplate prioritizeCredentialsFromTemplate; + @Inject + protected LoadingCache mastersCache; @Override protected void setupCredentials() { @@ -135,13 +143,18 @@ public class BaseVirtualBoxClientLiveTest extends BaseVersionedServiceLiveTest { context = new ComputeServiceContextFactory().createContext(provider, identity, credential, ImmutableSet. of(new SLF4JLoggingModule(), new SshjSshClientModule(), hostModule), overrides); context.utils().injector().injectMembers(this); - + imageId = "ubuntu-11.04-server-i386"; isosDir = workingDir + File.separator + "isos"; - + hostVersion = Iterables.get(Splitter.on('r').split(context.getProviderSpecificContext().getBuildVersion()), 0); operatingSystemIso = String.format("%s/%s.iso", isosDir, imageId); guestAdditionsIso = String.format("%s/VBoxGuestAdditions_%s.iso", isosDir, hostVersion); + + // try and get a master from the cache, this will initialize the config/download isos and + // prepare everything IF a master is not available, subsequent calls should be pretty fast + Template template = context.getComputeService().templateBuilder().build(); + checkNotNull(mastersCache.apply(template.getImage())); } protected void undoVm(VmSpec vmSpecification) { @@ -173,7 +186,7 @@ public class BaseVirtualBoxClientLiveTest extends BaseVersionedServiceLiveTest { } } } - + public String adminDisk(String vmName) { return workingDir + File.separator + vmName + ".vdi"; } diff --git a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapterLiveTest.java b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapterLiveTest.java index 82b94fea31..4dc90bd45a 100644 --- a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapterLiveTest.java +++ b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/compute/VirtualBoxComputeServiceAdapterLiveTest.java @@ -40,10 +40,11 @@ import com.google.common.collect.Iterables; @Test(groups = "live", singleThreaded = true, testName = "VirtualBoxComputeServiceAdapterLiveTest") public class VirtualBoxComputeServiceAdapterLiveTest extends BaseVirtualBoxClientLiveTest { - @Inject - private VirtualBoxComputeServiceAdapter adapter; private NodeAndInitialCredentials machine; + + @Inject + protected VirtualBoxComputeServiceAdapter adapter; @Test public void testCreatedNodeHasExpectedNameAndWeCanConnectViaSsh() { diff --git a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/ImageFromYamlStringTest.java b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/ImageFromYamlStringTest.java index 6160723751..1a4dfb43cd 100644 --- a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/ImageFromYamlStringTest.java +++ b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/ImageFromYamlStringTest.java @@ -40,7 +40,7 @@ import com.google.common.collect.Iterables; public class ImageFromYamlStringTest { public static final Image TEST1 = new ImageBuilder() - .id("myTestId") + .id("default-ubuntu-11.04-i386") .name("ubuntu-11.04-server-i386") .description("ubuntu 11.04 server (i386)") .operatingSystem( @@ -51,7 +51,7 @@ public class ImageFromYamlStringTest { public void testNodesParse() throws Exception { final StringBuilder yamlFileLines = new StringBuilder(); - for (Object line : IOUtils.readLines(new InputStreamReader(getClass().getResourceAsStream("/testImages.yaml")))) { + for (Object line : IOUtils.readLines(new InputStreamReader(getClass().getResourceAsStream("/default-images.yaml")))) { yamlFileLines.append(line).append("\n"); } diff --git a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningTest.java b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningLiveTest.java similarity index 97% rename from labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningTest.java rename to labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningLiveTest.java index 5c75110204..5e30870f5b 100644 --- a/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningTest.java +++ b/labs/virtualbox/src/test/java/org/jclouds/virtualbox/functions/admin/StartVBoxIfNotAlreadyRunningLiveTest.java @@ -44,8 +44,8 @@ import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.base.Suppliers; -@Test(groups = "unit", singleThreaded = true, testName = "StartVBoxIfNotAlreadyRunningTest") -public class StartVBoxIfNotAlreadyRunningTest { +@Test(groups = "live", singleThreaded = true, testName = "StartVBoxIfNotAlreadyRunningLiveTest") +public class StartVBoxIfNotAlreadyRunningLiveTest { @SuppressWarnings({ "unchecked", "rawtypes" }) @Test diff --git a/labs/virtualbox/src/test/resources/testImages.yaml b/labs/virtualbox/src/test/resources/testImages.yaml deleted file mode 100644 index 137a34ebf0..0000000000 --- a/labs/virtualbox/src/test/resources/testImages.yaml +++ /dev/null @@ -1,68 +0,0 @@ -images: - - id: myTestId - name: ubuntu-11.04-server-i386 - description: ubuntu 11.04 server (i386) - os_arch: x86 - os_family: ubuntu - os_description: ubuntu - os_version: 11.04 - iso: http://releases.ubuntu.com/11.04/ubuntu-11.04-server-i386.iso - keystroke_sequence: | - - /install/vmlinuz noapic preseed/url=http://10.0.2.2:8080/src/test/resources/preseed.cfg - debian-installer=en_US auto locale=en_US kbd-chooser/method=us - hostname=vmName - fb=false debconf/frontend=noninteractive - keyboard-configuration/layout=USA keyboard-configuration/variant=USA console-setup/ask_detect=false - initrd=/install/initrd.gz -- - preseed_cfg: | - ## Options to set on the command line - d-i debian-installer/locale string en_US.utf8 - d-i console-setup/ask_detect boolean false - d-i console-setup/layout string USA - d-i netcfg/get_hostname string unassigned-hostname - d-i netcfg/get_domain string unassigned-domain - # Continue without a default route - # Not working , specify a dummy in the DHCP - d-i time/zone string UTC - d-i clock-setup/utc-auto boolean true - d-i clock-setup/utc boolean true - d-i kbd-chooser/method select American English - d-i netcfg/wireless_wep string - d-i base-installer/kernel/override-image string linux-server - # Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive - d-i debconf debconf/frontend select Noninteractive - d-i pkgsel/install-language-support boolean false - tasksel tasksel/first multiselect standard, ubuntu-server - d-i partman-auto/method string lvm - d-i partman-lvm/confirm boolean true - d-i partman-lvm/device_remove_lvm boolean true - d-i partman-auto/choose_recipe select atomic - d-i partman/confirm_write_new_label boolean true - d-i partman/confirm_nooverwrite boolean true - d-i partman/choose_partition select finish - d-i partman/confirm boolean true - # Write the changes to disks and configure LVM? - d-i partman-lvm/confirm boolean true - d-i partman-lvm/confirm_nooverwrite boolean true - d-i partman-auto-lvm/guided_size string max - ## Default user, we can get away with a recipe to change this - d-i passwd/user-fullname string toor - d-i passwd/username string toor - d-i passwd/user-password password password - d-i passwd/user-password-again password password - d-i user-setup/encrypt-home boolean false - d-i user-setup/allow-password-weak boolean true - # Individual additional packages to install - d-i pkgsel/include string openssh-server ntp - # Whether to upgrade packages after debootstrap. - # Allowed values: none, safe-upgrade, full-upgrade - d-i pkgsel/upgrade select full-upgrade - d-i grub-installer/only_debian boolean true - d-i grub-installer/with_other_os boolean true - d-i finish-install/reboot_in_progress note - #For the update - d-i pkgsel/update-policy select none - # debconf-get-selections --install - #Use mirror - choose-mirror-bin mirror/http/proxy string