You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2014/04/01 06:02:34 UTC

git commit: https://issues.apache.org/jira/browse/AIRAVATA-1055

Repository: airavata
Updated Branches:
  refs/heads/master c7a9c8e97 -> 74556fe42


https://issues.apache.org/jira/browse/AIRAVATA-1055


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/74556fe4
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/74556fe4
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/74556fe4

Branch: refs/heads/master
Commit: 74556fe42e01b120c6da2b7494cc7ba1da8b5a7d
Parents: c7a9c8e
Author: Saminda Wijeratne <sa...@gmail.com>
Authored: Mon Mar 31 21:02:15 2014 -0700
Committer: Saminda Wijeratne <sa...@gmail.com>
Committed: Mon Mar 31 21:02:15 2014 -0700

----------------------------------------------------------------------
 .../api/client/AiravataClientFactory.java       |   6 +-
 modules/integration-tests/pom.xml               | 198 ++++++++++++++-----
 .../airavata/integration/SimpleEchoTest.java    | 158 ---------------
 .../SingleAppIntegrationTestBase.java           | 174 ++++++++++++++++
 pom.xml                                         |   5 +
 5 files changed, 334 insertions(+), 207 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/74556fe4/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/client/AiravataClientFactory.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/client/AiravataClientFactory.java b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/client/AiravataClientFactory.java
index af9df9f..ec5b45d 100644
--- a/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/client/AiravataClientFactory.java
+++ b/airavata-api/airavata-api-stubs/src/main/java/org/apache/airavata/api/client/AiravataClientFactory.java
@@ -27,9 +27,13 @@ import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;
 import org.apache.thrift.transport.TTransportException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class AiravataClientFactory {
 
+    private final static Logger logger = LoggerFactory.getLogger(AiravataClientFactory.class);
+
     public static Airavata.Client createAiravataClient(String serverHost, int serverPort){
         try {
             TTransport transport = new TSocket(serverHost, serverPort);
@@ -37,7 +41,7 @@ public class AiravataClientFactory {
             TProtocol protocol = new TBinaryProtocol(transport);
             return new Airavata.Client(protocol);
         } catch (TTransportException e) {
-            e.printStackTrace();
+            logger.error("Unable to connect to the server at "+serverHost+":"+serverPort);
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/74556fe4/modules/integration-tests/pom.xml
----------------------------------------------------------------------
diff --git a/modules/integration-tests/pom.xml b/modules/integration-tests/pom.xml
index 3e7e91d..90e64a7 100644
--- a/modules/integration-tests/pom.xml
+++ b/modules/integration-tests/pom.xml
@@ -24,52 +24,14 @@
 
     <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <version>2.5</version>
-                <configuration>
-                    <failIfNoTests>false</failIfNoTests>
-                    <systemPropertyVariables>
-                        <test.server.port>${test.running.port}</test.server.port>
-                        <test.server.url>localhost</test.server.url>
-                        <log4j.configuration>file:${basedir}/src/test/resources/log4j.properties</log4j.configuration>
-                        <property>
-                            <name>log4j.configuration</name>
-                            <value>file:${project.build.directory}/test-classes/log4j.properties</value>
-                        </property>
-                        <myproxy.user>${user}</myproxy.user>
-                        <myproxy.password>${pwd}</myproxy.password>
-                        <trusted.cert.location>${cert}</trusted.cert.location>
-                    </systemPropertyVariables>
+            <!-- unpack the server distribution-->
 
-                    <includes>
-                        <include>**/*IT.java</include>
-                    </includes>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>integration-test</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>integration-test</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>verify</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>verify</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <!--plugin>
+            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <version>2.8</version>
                 <executions>
-                    <execution>
+                    <!--execution>
                         <id>unpack-dependencies</id>
                         <phase>compile</phase>
                         <goals>
@@ -85,7 +47,7 @@
                                 </artifactItem>
                             </artifactItems>
                         </configuration>
-                    </execution>
+                    </execution -->
                     <execution>
                         <id>unpack</id>
                         <phase>compile</phase>
@@ -99,14 +61,15 @@
                                     <artifactId>apache-airavata-server</artifactId>
                                     <version>${project.version}</version>
                                     <type>zip</type>
-                                    <classifier>war</classifier>
+                                    <classifier>bin</classifier>
                                 </artifactItem>
                             </artifactItems>
-                            <includes>**/*.war</includes>
-                            <outputDirectory>${tomcat.work.dir}/webapps/</outputDirectory>
+                            <!--includes>**/*.war</includes-->
+                            <outputDirectory>${project.build.directory}</outputDirectory>
                         </configuration>
                     </execution>
-                    <execution>
+
+                    <!-- execution>
                         <id>unpack-artifacts</id>
                         <phase>compile</phase>
                         <goals>
@@ -123,14 +86,131 @@
                             </artifactItems>
                             <outputDirectory>${tomcat.extract.dir}</outputDirectory>
                         </configuration>
+                    </execution -->
+                </executions>
+            </plugin>
+
+            <!-- Start and stop the server before and after the integration tests -->
+            <!--plugin>
+                <artifactId>exec-maven-plugin</artifactId>
+                <groupId>org.codehaus.mojo</groupId>
+                <executions>
+                    <execution>
+                        <id>start-third-parties</id>
+                        <phase>pre-integration-test</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>${project.build.directory}/apache-airavata-server-0.12-SNAPSHOT/bin/airavata-server.sh</executable>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>stop-third-parties</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>${project.build.directory}/apache-airavata-server-0.12-SNAPSHOT/bin/airavata-server.sh stop</executable>
+                        </configuration>
                     </execution>
                 </executions>
-            </plugin-->
+            </plugin -->
+
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.6</version>
+                <executions>
+                    <execution>
+                        <id>start-airavata-server</id>
+                        <phase>pre-integration-test</phase>
+                        <configuration>
+                            <target>
+                                <exec executable="./${airavata.executable}"
+                                      dir="${airavata.server.extractedLocation}"
+                                      spawn="${airavata.server.start.spawn}">
+
+                                </exec>
+
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>stop-airavata-server</id>
+                        <phase>post-integration-test</phase>
+                        <configuration>
+                            <target>
+                                <exec executable="./${airavata.executable}"
+                                      dir="${airavata.server.extractedLocation}"
+                                      spawn="${airavata.server.stop.spawn}">
+                                    <arg value="stop" />
+                                    <arg value="--force" />
+                                </exec>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <version>2.5</version>
+                <configuration>
+                    <failIfNoTests>false</failIfNoTests>
+                    <systemPropertyVariables>
+                        <test.server.port>${test.running.port}</test.server.port>
+                        <test.server.url>localhost</test.server.url>
+                        <log4j.configuration>file:${basedir}/src/test/resources/log4j.properties</log4j.configuration>
+                        <property>
+                            <name>log4j.configuration</name>
+                            <value>file:${project.build.directory}/test-classes/log4j.properties</value>
+                        </property>
+                        <myproxy.user>${user}</myproxy.user>
+                        <myproxy.password>${pwd}</myproxy.password>
+                        <trusted.cert.location>${cert}</trusted.cert.location>
+                    </systemPropertyVariables>
+
+                    <!--excludes>
+                        <exclude>**/*IT.java</exclude>
+                    </excludes -->
+                    <includes>
+                        <!--include>**/*IT.java</include -->
+                        <include>**/SimpleEchoIT.java</include>
+                    </includes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                           <goal>integration-test</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>verify</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+
+            <!--plugin>
+                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>2.16</version>
-            </plugin>
+            </plugin -->
             <!--plugin>
                 <groupId>org.codehaus.cargo</groupId>
                 <artifactId>cargo-maven2-plugin</artifactId>
@@ -218,6 +298,19 @@
         </dependency>
         <dependency>
             <groupId>org.apache.airavata</groupId>
+            <artifactId>apache-airavata-server</artifactId>
+            <type>pom</type>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-simple</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-jpa-registry</artifactId>
             <version>${project.version}</version>
             <exclusions>
@@ -308,6 +401,7 @@
         </dependency>
     </dependencies>
 
+
     <properties>
         <jersey.version>1.13</jersey.version>
         <user></user>
@@ -325,5 +419,13 @@
         <local.tomcat.distribution>
             ${settings.localRepository}/org/apache/airavata/integration/tomcat/apache-tomcat/${tomcat.version}/apache-tomcat-${tomcat.version}.zip
         </local.tomcat.distribution>
+
+
+        <airavata.executable>airavata-server.sh</airavata.executable>
+        <airavata.server.name>apache-airavata-server</airavata.server.name>
+        <airavata.server.start.spawn>true</airavata.server.start.spawn>
+        <airavata.server.stop.spawn>false</airavata.server.stop.spawn>
+        <airavata.server.extractedLocation>${project.build.directory}/${airavata.server.name}-${project.version}/bin</airavata.server.extractedLocation>
+
     </properties>
 </project>

http://git-wip-us.apache.org/repos/asf/airavata/blob/74556fe4/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoTest.java
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoTest.java b/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoTest.java
deleted file mode 100644
index 8a46120..0000000
--- a/modules/integration-tests/src/test/java/org/apache/airavata/integration/SimpleEchoTest.java
+++ /dev/null
@@ -1,158 +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.apache.airavata.integration;
-
-import org.apache.airavata.api.Airavata;
-import org.apache.airavata.api.client.AiravataClientFactory;
-import org.apache.airavata.api.error.AiravataClientException;
-import org.apache.airavata.api.error.AiravataSystemException;
-import org.apache.airavata.api.error.InvalidRequestException;
-import org.apache.airavata.client.AiravataAPIFactory;
-import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
-import org.apache.airavata.client.tools.DocumentCreator;
-import org.apache.airavata.model.util.ExperimentModelUtil;
-import org.apache.airavata.model.workspace.experiment.*;
-import org.apache.airavata.schemas.gfac.DataType;
-import org.apache.airavata.server.ServerMain;
-import org.apache.thrift.TException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class SimpleEchoTest extends BaseCaseIT {
-    public static final String THRIFT_SERVER_HOST = "localhost";
-    public static final int THRIFT_SERVER_PORT = 8930;
-    private final static Logger logger = LoggerFactory.getLogger(SimpleEchoTest.class);
-    private static final String DEFAULT_USER = "defauly.registry.user";
-    private static final String DEFAULT_GATEWAY = "default.registry.gateway";
-
-    public SimpleEchoTest() throws Exception {
-        //super();
-    }
-    public AiravataAPI getAiravataAPI() throws AiravataAPIInvocationException {
-        if (airavataAPI == null){
-            airavataAPI = AiravataAPIFactory.getAPI("default", "admin");
-        }
-        return airavataAPI;
-    }
-
-    @BeforeTest
-    public void setUp() throws Exception {
-        new Thread() {
-            public void run() {
-                try {
-                    ServerMain.main(new String[]{});
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }.start();
-        Thread.sleep(10000);
-        this.airavataAPI = getAiravataAPI();
-        this.client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
-
-    }
-
-    @Test
-    public void testSimpleLocalhostEchoService() throws Exception {
-        log.info("Running job in localhost...");
-        DocumentCreator documentCreator = new DocumentCreator(airavataAPI);
-        documentCreator.createLocalHostDocs();
-
-        List<DataObjectType> exInputs = new ArrayList<DataObjectType>();
-        DataObjectType input = new DataObjectType();
-        input.setKey("echo_input");
-        input.setType(DataType.STRING.toString());
-        input.setValue("echo_output=Hello World");
-        exInputs.add(input);
-
-        List<DataObjectType> exOut = new ArrayList<DataObjectType>();
-        DataObjectType output = new DataObjectType();
-        output.setKey("echo_output");
-        output.setType(DataType.STRING.toString());
-        output.setValue("");
-        exOut.add(output);
-
-        Experiment simpleExperiment =
-                ExperimentModelUtil.createSimpleExperiment("project1", "admin", "echoExperiment", "SimpleEcho0", "SimpleEcho0", exInputs);
-        simpleExperiment.setExperimentOutputs(exOut);
-
-        ComputationalResourceScheduling scheduling = ExperimentModelUtil.createComputationResourceScheduling("localhost", 1, 1, 1, "normal", 0, 0, 1, "sds128");
-        scheduling.setResourceHostId("localhost");
-        UserConfigurationData userConfigurationData = new UserConfigurationData();
-        userConfigurationData.setAiravataAutoSchedule(false);
-        userConfigurationData.setOverrideManualScheduledParams(false);
-        userConfigurationData.setComputationalResourceScheduling(scheduling);
-        simpleExperiment.setUserConfigurationData(userConfigurationData);
-
-
-        final String expId = createExperiment(simpleExperiment);
-        System.out.println("Experiment Id returned : " + expId);
-
-        log.info("Experiment Id returned : " + expId);
-
-        launchExperiment(expId);
-
-        System.out.println("Launched successfully");
-
-        Thread monitor = (new Thread() {
-            public void run() {
-                Map<String, JobStatus> jobStatuses = null;
-                while (true) {
-                    try {
-                        jobStatuses = client.getJobStatuses(expId);
-                        Set<String> strings = jobStatuses.keySet();
-                        for (String key : strings) {
-                            JobStatus jobStatus = jobStatuses.get(key);
-                            if (jobStatus == null) {
-                                return;
-                            } else {
-                                if (JobState.COMPLETE.equals(jobStatus.getJobState())) {
-                                    log.info("Job completed Job ID: " + key);
-                                    return;
-                                } else {
-                                    log.info("Job ID:" + key + "  Job Status : " + jobStatuses.get(key).getJobState().toString());
-                                }
-                            }
-                        }
-                        Thread.sleep(5000);
-                    } catch (Exception e) {
-                        log.error("Thread interrupted", e.getMessage());
-                    }
-                }
-            }
-        });
-        monitor.start();
-        try {
-            monitor.join();
-        } catch (InterruptedException e) {
-            log.error("Thread interrupted..", e.getMessage());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/74556fe4/modules/integration-tests/src/test/java/org/apache/airavata/integration/SingleAppIntegrationTestBase.java
----------------------------------------------------------------------
diff --git a/modules/integration-tests/src/test/java/org/apache/airavata/integration/SingleAppIntegrationTestBase.java b/modules/integration-tests/src/test/java/org/apache/airavata/integration/SingleAppIntegrationTestBase.java
new file mode 100644
index 0000000..64a4c3a
--- /dev/null
+++ b/modules/integration-tests/src/test/java/org/apache/airavata/integration/SingleAppIntegrationTestBase.java
@@ -0,0 +1,174 @@
+/*
+ *
+ * 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.apache.airavata.integration;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.airavata.api.error.AiravataClientException;
+import org.apache.airavata.api.error.AiravataSystemException;
+import org.apache.airavata.api.error.ExperimentNotFoundException;
+import org.apache.airavata.api.error.InvalidRequestException;
+import org.apache.airavata.client.AiravataAPIFactory;
+import org.apache.airavata.client.api.AiravataAPI;
+import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+import org.apache.airavata.model.workspace.experiment.Experiment;
+import org.apache.airavata.model.workspace.experiment.JobState;
+import org.apache.airavata.model.workspace.experiment.JobStatus;
+import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+/**
+ * this class contains the common utils across the single application integration tests
+ */
+public class SingleAppIntegrationTestBase {
+
+    private final static Logger log = LoggerFactory.getLogger(SingleAppIntegrationTestBase.class);
+    private static String THRIFT_SERVER_HOST;
+    private static int THRIFT_SERVER_PORT;
+    protected AiravataAPI airavataAPI;
+    protected Airavata.Client client;
+    private final int TRIES = 5;
+    private final int TIME_OUT = 10000;
+
+    //initializes the server
+    protected void init() {
+
+        Properties clientProperties = new Properties();
+        try {
+            clientProperties.load(getClass().getClassLoader().getResourceAsStream("airavata-client.properties"));
+            THRIFT_SERVER_HOST = clientProperties.getProperty("thrift.server.host");
+            THRIFT_SERVER_PORT = Integer.parseInt(clientProperties.getProperty("thrift.server.port"));
+
+            //check the server startup + initialize the thrift client
+            initClient();
+
+            //getting the Airavata API ( to add the descriptors
+            this.airavataAPI = getAiravataAPI();
+        } catch (IOException e) {
+            log.error("Error loading client-properties ..." + e.getMessage());
+        } catch (AiravataAPIInvocationException e) {
+            log.error("Error initializing the Airavata API ... " + e.getMessage());
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+
+    protected AiravataAPI getAiravataAPI() throws AiravataAPIInvocationException {
+        if (airavataAPI == null) {
+            airavataAPI = AiravataAPIFactory.getAPI("default", "admin");
+        }
+        return airavataAPI;
+    }
+
+    /*
+    * Check if the thrift server has started.
+    * If so, initialize the client
+    * */
+    protected void initClient() throws Exception {
+        int tries = 0;
+
+        while (true) {
+
+            if (tries == TRIES) {
+                log("Server not responding. Cannot continue with integration tests ...");
+                throw new Exception("Server not responding !");
+            }
+
+            log("Checking if the server has started, try - " + tries);
+
+            try {
+                this.client = AiravataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+            } catch (Exception e) {
+
+            }
+            if (this.client == null) {
+                log.info("Waiting till server initializes ........");
+                Thread.sleep(TIME_OUT);
+            } else {
+                break;
+            }
+
+            ++tries;
+        }
+
+    }
+
+    protected String createExperiment(Experiment experiment) throws AiravataSystemException, InvalidRequestException, AiravataClientException, TException {
+        return getClient().createExperiment(experiment);
+    }
+
+    protected void launchExperiment(String expId) throws ExperimentNotFoundException, AiravataSystemException, InvalidRequestException, AiravataClientException, TException {
+        getClient().launchExperiment(expId, "testToken");
+    }
+
+    protected Airavata.Client getClient() {
+        return client;
+    }
+
+    //monitoring the job
+    protected void monitorJob(final String expId) {
+        Thread monitor = (new Thread() {
+            public void run() {
+                Map<String, JobStatus> jobStatuses = null;
+                while (true) {
+                    try {
+                        jobStatuses = client.getJobStatuses(expId);
+                        Set<String> strings = jobStatuses.keySet();
+                        for (String key : strings) {
+                            JobStatus jobStatus = jobStatuses.get(key);
+                            if (jobStatus == null) {
+                                return;
+                            } else {
+                                if (JobState.COMPLETE.equals(jobStatus.getJobState())) {
+                                    log.info("Job completed Job ID: " + key);
+                                    return;
+                                } else {
+                                    log.info("Job ID:" + key + "  Job Status : " + jobStatuses.get(key).getJobState().toString());
+                                }
+                            }
+                        }
+                        Thread.sleep(5000);
+                    } catch (Exception e) {
+                        log.error("Thread interrupted", e.getMessage());
+                    }
+                }
+            }
+        });
+        monitor.start();
+        try {
+            monitor.join();
+        } catch (InterruptedException e) {
+            log.error("Thread interrupted..", e.getMessage());
+        }
+    }
+
+    public void log(String message) {
+        log.info(message);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/74556fe4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c444035..91ae87a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -445,6 +445,11 @@
                             <failIfNoTests>false</failIfNoTests>
                             <skipTests>${skipTests}</skipTests>
                             <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
+                            <!-- making sure that the sure-fire plugin doesn't run the integration tests-->
+                            <!-- Integration tests are run using the fail-safe plugin in the module pom-->
+                            <excludes>
+                                <exclude>**/IT.java</exclude>
+                            </excludes>
                         </configuration>
                     </plugin>
                 </plugins>