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