[jboss-svn-commits] JBoss Common SVN: r4548 - in arquillian/trunk: containers/osgi-embedded and 21 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 24 04:50:20 EDT 2010


Author: thomas.diesler at jboss.com
Date: 2010-06-24 04:50:17 -0400 (Thu, 24 Jun 2010)
New Revision: 4548

Added:
   arquillian/trunk/protocols/jmx/
   arquillian/trunk/protocols/jmx/pom.xml
   arquillian/trunk/protocols/jmx/src/
   arquillian/trunk/protocols/jmx/src/main/
   arquillian/trunk/protocols/jmx/src/main/java/
   arquillian/trunk/protocols/jmx/src/main/java/org/
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunner.java
   arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunnerMBean.java
   arquillian/trunk/protocols/jmx/src/test/
   arquillian/trunk/protocols/jmx/src/test/java/
   arquillian/trunk/protocols/jmx/src/test/java/org/
   arquillian/trunk/protocols/jmx/src/test/java/org/jboss/
   arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/
   arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/
   arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/DummyTestCase.java
   arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/JMXTestRunnerTestCase.java
   arquillian/trunk/protocols/jmx/src/test/resources/
   arquillian/trunk/protocols/jmx/src/test/resources/META-INF/
   arquillian/trunk/protocols/jmx/src/test/resources/META-INF/services/
   arquillian/trunk/protocols/jmx/src/test/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
Modified:
   arquillian/trunk/.gitignore
   arquillian/trunk/containers/osgi-embedded/pom.xml
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkContainer.java
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkTestCase.java
   arquillian/trunk/protocols/pom.xml
Log:
osgi: Add jmx protocoll - not functional

Modified: arquillian/trunk/.gitignore
===================================================================
--- arquillian/trunk/.gitignore	2010-06-24 08:47:58 UTC (rev 4547)
+++ arquillian/trunk/.gitignore	2010-06-24 08:50:17 UTC (rev 4548)
@@ -51,6 +51,8 @@
 packagers/javaee/.project
 packagers/javaee/.settings/
 packagers/javaee/target
+protocols/jmx/.classpath
+protocols/jmx/target
 protocols/local/.classpath
 protocols/local/target
 packagers/osgi/target/

Modified: arquillian/trunk/containers/osgi-embedded/pom.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded/pom.xml	2010-06-24 08:47:58 UTC (rev 4547)
+++ arquillian/trunk/containers/osgi-embedded/pom.xml	2010-06-24 08:50:17 UTC (rev 4548)
@@ -38,7 +38,7 @@
     </dependency>
     <dependency>
       <groupId>org.jboss.arquillian.protocol</groupId>
-      <artifactId>arquillian-protocol-local</artifactId>
+      <artifactId>arquillian-protocol-jmx</artifactId>
       <version>${project.version}</version>
     </dependency>
 

Modified: arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkContainer.java
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkContainer.java	2010-06-24 08:47:58 UTC (rev 4547)
+++ arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkContainer.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -17,7 +17,7 @@
 package org.jboss.arquillian.osgi;
 
 import org.jboss.arquillian.packager.osgi.BundleArchive;
-import org.jboss.arquillian.protocol.local.LocalMethodExecutor;
+import org.jboss.arquillian.protocol.jmx.JMXMethodExecutor;
 import org.jboss.arquillian.spi.Configuration;
 import org.jboss.arquillian.spi.ContainerMethodExecutor;
 import org.jboss.arquillian.spi.Context;
@@ -107,7 +107,7 @@
       {
          throw new DeploymentException("Cannot deploy: " + archive, ex);
       }
-      return new LocalMethodExecutor();
+      return new JMXMethodExecutor();
    }
 
    @Override

Modified: arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkTestCase.java
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkTestCase.java	2010-06-24 08:47:58 UTC (rev 4547)
+++ arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedFrameworkTestCase.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -45,6 +45,11 @@
 @RunWith(Arquillian.class)
 public class OSGiEmbeddedFrameworkTestCase
 {
+   public OSGiEmbeddedFrameworkTestCase()
+   {
+      System.out.println("new OSGiEmbeddedFrameworkTestCase");
+   }
+
    @Deployment
    public static JavaArchive createdeployment()
    {

Added: arquillian/trunk/protocols/jmx/pom.xml
===================================================================
--- arquillian/trunk/protocols/jmx/pom.xml	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/pom.xml	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+
+  <!-- Parent -->
+  <parent>
+    <groupId>org.jboss.arquillian</groupId>
+    <artifactId>arquillian-build</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <relativePath>../../build/pom.xml</relativePath>
+  </parent>
+
+  <!-- Model Version -->
+  <modelVersion>4.0.0</modelVersion>
+
+  <!-- Artifact Configuration -->
+  <groupId>org.jboss.arquillian.protocol</groupId>
+  <artifactId>arquillian-protocol-jmx</artifactId>
+  <name>Arquillian Protocol Local</name>
+  <description>Protocol handler for communicating whithin the same Java VM</description>
+
+
+  <!-- Properties -->
+  <properties>
+
+    <!-- Versioning -->
+
+  </properties>
+
+  <!-- Dependencies -->
+  <dependencies>
+
+    <!-- org.jboss.arquillian -->
+    <dependency>
+      <groupId>org.jboss.arquillian</groupId>
+      <artifactId>arquillian-spi</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.arquillian</groupId>
+      <artifactId>arquillian-junit</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+</project>
+

Added: arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXMethodExecutor.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.arquillian.protocol.jmx;
+
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
+import org.jboss.arquillian.spi.TestMethodExecutor;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.TestResult.Status;
+
+/**
+ * JMXMethodExecutor
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class JMXMethodExecutor implements ContainerMethodExecutor
+{
+   @Override
+   public TestResult invoke(TestMethodExecutor testMethodExecutor)
+   {
+      TestResult result = new TestResult();
+      try 
+      {
+         testMethodExecutor.invoke();
+         result.setStatus(Status.PASSED);
+      }
+      catch (final Throwable e) 
+      {
+         /*
+          *  TODO: the internal state TestResult is FAILED with Exception set, but it might have passed
+          *  due to the TestFrameworks ExpectedExceptions. We need to know this information to set the correct state.
+          */
+
+         result.setStatus(Status.FAILED);
+         result.setThrowable(e);
+      }
+      result.setEnd(System.currentTimeMillis());
+      return result;
+   }
+}
\ No newline at end of file

Added: arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunner.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunner.java	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunner.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.arquillian.protocol.jmx;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectOutputStream;
+
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.TestResult.Status;
+import org.jboss.arquillian.spi.TestRunner;
+import org.jboss.arquillian.spi.util.TestRunners;
+
+/**
+ * An MBean to run test methods in container.
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class JMXTestRunner implements JMXTestRunnerMBean
+{
+   @Override
+   public TestResult runTestMethodLocal(String className, String methodName) 
+   {
+      return runTestMethodInternal(className, methodName);
+   }
+
+   @Override
+   public InputStream runTestMethodRemote(String className, String methodName)
+   {
+      TestResult result = runTestMethodInternal(className, methodName);
+      
+      // Marshall the TestResult
+      try
+      {
+         ByteArrayOutputStream baos = new ByteArrayOutputStream();
+         ObjectOutputStream oos = new ObjectOutputStream(baos);
+         oos.writeObject(result);
+         oos.close();
+
+         return new ByteArrayInputStream(baos.toByteArray());
+      }
+      catch (IOException ex)
+      {
+         throw new IllegalStateException("Cannot marshall response", ex);
+      }
+   }
+
+   private TestResult runTestMethodInternal(String className, String methodName)
+   {
+      try 
+      {
+         Class<?> testClass = Thread.currentThread().getContextClassLoader().loadClass(className);
+         
+         TestRunner runner = TestRunners.getTestRunner();
+         
+         TestResult testResult = runner.execute(testClass, methodName);
+         return testResult;
+      } 
+      catch(Throwable th) 
+      {
+         return new TestResult(Status.FAILED, th);
+      }
+   }
+}

Added: arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunnerMBean.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunnerMBean.java	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/main/java/org/jboss/arquillian/protocol/jmx/JMXTestRunnerMBean.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.arquillian.protocol.jmx;
+
+import java.io.InputStream;
+
+import org.jboss.arquillian.spi.TestResult;
+
+/**
+ * An MBean to run test methods in container.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public interface JMXTestRunnerMBean
+{
+   /**
+    * Runs a test method on the given test class
+    *
+    * @param className the test class name
+    * @param methodName the test method name
+    * @return the input stream to read the {@link TestResult} from
+    */
+   InputStream runTestMethodRemote(String className, String methodName);
+   
+   /**
+    * Runs a test method on the given test class
+    *
+    * @param className the test class name
+    * @param methodName the test method name
+    * @return the {@link TestResult} 
+    */
+   TestResult runTestMethodLocal(String className, String methodName);
+}

Added: arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/DummyTestCase.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/DummyTestCase.java	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/DummyTestCase.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,27 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.arquillian.jmx;
+
+import org.junit.Test;
+
+public class DummyTestCase
+{
+   @Test
+   public void testMethod() throws Exception
+   {
+   }
+}

Added: arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/JMXTestRunnerTestCase.java
===================================================================
--- arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/JMXTestRunnerTestCase.java	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/test/java/org/jboss/arquillian/jmx/JMXTestRunnerTestCase.java	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.arquillian.jmx;
+
+import static org.junit.Assert.*;
+
+import org.jboss.arquillian.protocol.jmx.JMXTestRunner;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.TestResult.Status;
+import org.junit.Test;
+
+
+/**
+ * Test the {@link JMXTestRunner}
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class JMXTestRunnerTestCase
+{
+   @Test
+   public void testFrameworkInjection() throws Throwable
+   {
+      JMXTestRunner testRunner = new JMXTestRunner();
+      TestResult result = testRunner.runTestMethodLocal(DummyTestCase.class.getName(), "testMethod");
+      assertNotNull("TestResult not null", result);
+      assertNotNull("Status not null", result.getStatus());
+      if (result.getStatus() == Status.FAILED)
+         throw result.getThrowable();
+   }
+}

Added: arquillian/trunk/protocols/jmx/src/test/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
===================================================================
--- arquillian/trunk/protocols/jmx/src/test/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner	                        (rev 0)
+++ arquillian/trunk/protocols/jmx/src/test/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner	2010-06-24 08:50:17 UTC (rev 4548)
@@ -0,0 +1 @@
+org.jboss.arquillian.junit.JUnitTestRunner
\ No newline at end of file

Modified: arquillian/trunk/protocols/pom.xml
===================================================================
--- arquillian/trunk/protocols/pom.xml	2010-06-24 08:47:58 UTC (rev 4547)
+++ arquillian/trunk/protocols/pom.xml	2010-06-24 08:50:17 UTC (rev 4548)
@@ -29,6 +29,7 @@
     <module>servlet-ee5</module>
     <module>servlet-ee6</module>
     <module>local</module>
+    <module>jmx</module>
 
   </modules>
 



More information about the jboss-svn-commits mailing list