Updated Branches:
  refs/heads/master 358ee9010 -> 78166fe3a

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/providers/amazon-tests/src/test/java/org/apache/provisionr/amazon/AmazonProvisionrLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/amazon-tests/src/test/java/org/apache/provisionr/amazon/AmazonProvisionrLiveTest.java
 
b/providers/amazon-tests/src/test/java/org/apache/provisionr/amazon/AmazonProvisionrLiveTest.java
index daa56f7..ab14c26 100644
--- 
a/providers/amazon-tests/src/test/java/org/apache/provisionr/amazon/AmazonProvisionrLiveTest.java
+++ 
b/providers/amazon-tests/src/test/java/org/apache/provisionr/amazon/AmazonProvisionrLiveTest.java
@@ -18,8 +18,7 @@
 
 package org.apache.provisionr.amazon;
 
-import com.google.common.base.Charsets;
-import com.google.common.io.Resources;
+import com.google.common.base.Stopwatch;
 import java.io.IOException;
 import java.util.List;
 import java.util.NoSuchElementException;
@@ -42,7 +41,6 @@ import org.apache.provisionr.api.software.Software;
 import org.apache.provisionr.core.PoolStatus;
 import org.apache.provisionr.core.Ssh;
 import org.apache.provisionr.core.templates.PoolTemplate;
-import org.apache.provisionr.core.templates.xml.XmlTemplate;
 import static org.apache.provisionr.test.KarafTests.installProvisionrFeatures;
 import static 
org.apache.provisionr.test.KarafTests.installProvisionrTestSupportBundle;
 import static 
org.apache.provisionr.test.KarafTests.passThroughAllSystemPropertiesWithPrefix;
@@ -56,6 +54,7 @@ import org.ops4j.pax.exam.junit.Configuration;
 import org.ops4j.pax.exam.junit.ExamReactorStrategy;
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
 import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
+import org.osgi.util.tracker.ServiceTracker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -66,8 +65,9 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
     public static final Logger LOG = 
LoggerFactory.getLogger(AmazonProvisionrLiveTest.class);
 
     public static final int TEST_POOL_SIZE = 2;
-
-    public static final String DEFAULT_JENKINS_TEMPLATE_PATH = 
"/org/apache/provisionr/core/templates/jenkins.xml";
+    public static final String TEST_SPOT_BID_PRICE = "0.04";
+    public static final String TEST_INSTANCE_TYPE = "t1.micro";
+    public static final String TEST_POOL_TEMPLATE = "jenkins";
 
     public AmazonProvisionrLiveTest() {
         super(AmazonProvisionr.ID);
@@ -78,7 +78,7 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
         return new Option[]{
             useDefaultKarafAsInProjectWithJunitBundles(),
             passThroughAllSystemPropertiesWithPrefix("test.amazon."),
-            installProvisionrFeatures("provisionr-amazon"),
+            installProvisionrFeatures("provisionr-amazon", 
"provisionr-examples"),
             installProvisionrTestSupportBundle()
         };
     }
@@ -90,7 +90,7 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
 
     @Test
     public void startProvisioningProcessForSpotInstances() throws Exception {
-        startProvisioningProcess("0.04");
+        startProvisioningProcess(TEST_SPOT_BID_PRICE);
     }
 
     private void startProvisioningProcess(String spotBid) throws Exception {
@@ -114,7 +114,7 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
             
Rule.builder().anySource().port(22).protocol(Protocol.TCP).createRule()
         ).createNetwork();
 
-        final Hardware hardware = 
Hardware.builder().type("t1.micro").createHardware();
+        final Hardware hardware = 
Hardware.builder().type(TEST_INSTANCE_TYPE).createHardware();
 
         final AdminAccess adminAccess = 
AdminAccess.builder().asCurrentUser().createAdminAccess();
 
@@ -124,10 +124,8 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
             .file("http://provisionr.incubator.apache.org";, destinationPath)
             .createSoftware();
 
-        PoolTemplate jenkins = 
XmlTemplate.newXmlTemplate(Resources.toString(Resources
-            .getResource(PoolTemplate.class, DEFAULT_JENKINS_TEMPLATE_PATH), 
Charsets.UTF_8));
-
-        final Pool pool = jenkins.apply(Pool.builder()
+        PoolTemplate template = getPoolTemplateWithId(TEST_POOL_TEMPLATE, 
5000);
+        final Pool pool = template.apply(Pool.builder()
             .provider(provider)
             .network(network)
             .adminAccess(adminAccess)
@@ -162,6 +160,31 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
         }
     }
 
+    private PoolTemplate getPoolTemplateWithId(String templateId, int 
timeoutInMilliseconds)
+        throws TimeoutException, InterruptedException {
+        ServiceTracker tracker = new ServiceTracker(bundleContext,
+            PoolTemplate.class.getCanonicalName(), null);
+        tracker.open(true);
+
+        try {
+            Stopwatch stopwatch = new Stopwatch().start();
+            while (stopwatch.elapsedMillis() < timeoutInMilliseconds) {
+                for (Object candidate : tracker.getServices()) {
+                    if 
(PoolTemplate.class.cast(candidate).getId().equals(templateId)) {
+                        return PoolTemplate.class.cast(candidate);
+                    }
+                }
+                TimeUnit.MILLISECONDS.sleep(100);
+            }
+
+            throw new TimeoutException(String.format("Status check timed out 
after %d milliseconds",
+                stopwatch.elapsedMillis()));
+
+        } finally {
+            tracker.close();
+        }
+    }
+
     private void assertSshCommand(Machine machine, AdminAccess adminAccess, 
String bashCommand) throws IOException {
         LOG.info("Checking return code for command '{}' on machine {}", 
bashCommand, machine.getExternalId());
         SSHClient client = Ssh.newClient(machine, adminAccess);
@@ -184,8 +207,8 @@ public class AmazonProvisionrLiveTest extends 
ProvisionrLiveTestSupport {
 
     private void waitForPoolStatus(Provisionr provisionr, String businessKey,
                                    String expectedStatus) throws 
InterruptedException, TimeoutException {
+        String status;
         for (int i = 0; i < 120; i++) {
-            String status;
             try {
                 status = provisionr.getStatus(businessKey);
 

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/test-support/pom.xml
----------------------------------------------------------------------
diff --git a/test-support/pom.xml b/test-support/pom.xml
index fd9b606..ef892e1 100644
--- a/test-support/pom.xml
+++ b/test-support/pom.xml
@@ -17,7 +17,8 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <parent>
         <artifactId>provisionr-parent</artifactId>
         <groupId>org.apache.provisionr</groupId>

Reply via email to