Repository: tomee
Updated Branches:
  refs/heads/master 5830c209a -> c7bebb585


Revert "Simplify Test"

With the removal of the boiler-plate servlet, test is ot executed
against the correct context and does not test what it was intended
to test.


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

Branch: refs/heads/master
Commit: caebffd56a477e6954d4f64e1524eacda35ee9a6
Parents: bfaefb3
Author: Svetlin Zarev <[email protected]>
Authored: Thu Jul 20 09:00:14 2017 +0300
Committer: Svetlin Zarev <[email protected]>
Committed: Thu Jul 20 09:00:14 2017 +0300

----------------------------------------------------------------------
 .../tests/naming/IvmContextServlet.java         | 59 ++++++++++++++++++++
 .../arquillian/tests/naming/IvmContextTest.java | 58 ++++++++++++++++---
 .../arquillian/tests/naming/NamingBean.java     | 31 +++-------
 3 files changed, 118 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/caebffd5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextServlet.java
----------------------------------------------------------------------
diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextServlet.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextServlet.java
new file mode 100644
index 0000000..f6bfd2a
--- /dev/null
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextServlet.java
@@ -0,0 +1,59 @@
+/*
+ * 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.openejb.arquillian.tests.naming;
+
+
+import javax.ejb.EJB;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class IvmContextServlet extends HttpServlet {
+    @EJB
+    NamingBean namingBean;
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
+        final PrintWriter writer = resp.getWriter();
+        final String testToExecute = req.getParameter("test");
+
+        try {
+            final Method method = 
this.getClass().getDeclaredMethod(testToExecute, PrintWriter.class);
+            method.invoke(this, writer);
+            writer.println(testToExecute + "=true");
+        } catch (Exception ex) {
+            final Throwable rootCause = ex instanceof 
InvocationTargetException ? ex.getCause() : ex;
+            writer.println(testToExecute + "=false");
+            rootCause.printStackTrace(writer);
+        }
+    }
+
+    public void testListContextTree(PrintWriter printWriter) throws 
NamingException {
+        namingBean.verifyListContext(printWriter);
+    }
+
+    public void testContextListBindings(PrintWriter printWriter) throws 
NamingException {
+        namingBean.verifyContextListBindings(printWriter);
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/caebffd5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextTest.java
----------------------------------------------------------------------
diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextTest.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextTest.java
index 43da010..a8571ba 100644
--- 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextTest.java
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/IvmContextTest.java
@@ -21,13 +21,22 @@ import org.apache.openejb.arquillian.tests.Runner;
 import org.apache.ziplock.JarLocation;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Descriptors;
+import org.jboss.shrinkwrap.descriptor.api.webapp30.WebAppDescriptor;
+import org.jboss.shrinkwrap.descriptor.api.webcommon30.WebAppVersionType;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import javax.ejb.EJB;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import static org.junit.Assert.assertNotNull;
@@ -37,31 +46,64 @@ import static org.junit.Assert.assertTrue;
 public class IvmContextTest {
     private static final Logger logger = 
Logger.getLogger(IvmContextTest.class.getName());
     private static final String TEST_NAME = 
IvmContextTest.class.getSimpleName();
+    private static final String SERVLET_NAME = "TestServlet";
     private static final String RESOURCE_EJB_JAR_XML = "ejb-jar.xml";
     private static final String CONTENT_LOCATION_EJB_JAR_XML = 
"org/apache/openejb/arquillian/tests/naming/list-context-ejbjar.xml";
 
-    @EJB
-    private NamingBean namingBean;
+    @ArquillianResource
+    private URL url;
 
     @Deployment(testable = false)
     public static WebArchive createDeployment() {
+        WebAppDescriptor descriptor = 
Descriptors.create(WebAppDescriptor.class)
+                .version(WebAppVersionType._3_0)
+                .createServlet()
+                .servletName(SERVLET_NAME)
+                .servletClass(IvmContextServlet.class.getName()).up()
+                .createServletMapping()
+                .servletName(SERVLET_NAME)
+                .urlPattern("/" + TEST_NAME).up();
+
         WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME + 
".war")
                 .addClass(IvmContextTest.class)
+                .addClass(IvmContextServlet.class)
                 .addClass(NamingBean.class)
                 .addClass(Runner.class)
                 .addAsLibraries(JarLocation.jarLocation(Test.class))
-                .addAsWebInfResource(new 
ClassLoaderAsset(CONTENT_LOCATION_EJB_JAR_XML), RESOURCE_EJB_JAR_XML);
+                .addAsWebInfResource(new 
ClassLoaderAsset(CONTENT_LOCATION_EJB_JAR_XML), RESOURCE_EJB_JAR_XML)
+                .setWebXML(new StringAsset(descriptor.exportAsString()));
+
         return archive;
     }
 
+    private void validateTest(String testName) throws IOException {
+        final String expectedOutput = testName + "=true";
+
+        try (InputStream is = new URL(url.toExternalForm() + TEST_NAME + 
"?test=" + testName).openStream()) {
+            final ByteArrayOutputStream os = new ByteArrayOutputStream();
+
+            int bytesRead;
+            byte[] buffer = new byte[8192];
+            while ((bytesRead = is.read(buffer)) > -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+
+            final String output = new String(os.toByteArray(), "UTF-8");
+            logger.log(Level.FINE, output);
+
+            assertNotNull("Response shouldn't be null", output);
+            assertTrue("Output should contain: " + expectedOutput
+                    + "\nActual output:\n" + output, 
output.contains(expectedOutput));
+        }
+    }
 
     @Test
-    public void testListContextTree() throws Exception {
-        namingBean.verifyContextList();
+    public void testListContextTree() throws IOException, InterruptedException 
{
+        validateTest("testListContextTree");
     }
 
     @Test
-    public void testContextListBindings() throws Exception {
-        namingBean.verifyContextListBindings();
+    public void testContextListBindings() throws IOException, 
InterruptedException {
+        validateTest("testContextListBindings");
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/caebffd5/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/NamingBean.java
----------------------------------------------------------------------
diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/NamingBean.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/NamingBean.java
index 5d169ec..a9f96dc 100644
--- 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/NamingBean.java
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/naming/NamingBean.java
@@ -22,10 +22,7 @@ import 
org.apache.openejb.core.ivm.naming.SystemComponentReference;
 import javax.ejb.LocalBean;
 import javax.ejb.Stateless;
 import javax.naming.*;
-import java.io.ByteArrayOutputStream;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -36,42 +33,31 @@ public class NamingBean {
         NamingEnumeration<? extends NameClassPair> execute(Context context, 
String address) throws NamingException;
     }
 
-    public void verifyContextList() throws NamingException {
-        verifyContextListInternal(new ListOperation() {
+    public void verifyListContext(PrintWriter logSink) throws NamingException {
+        verifyContextListOperation(new ListOperation() {
             @Override
             public NamingEnumeration<NameClassPair> execute(Context context, 
String address) throws NamingException {
                 return context.list(address);
             }
-        });
+        }, logSink);
     }
 
-    public void verifyContextListBindings() throws NamingException {
-        verifyContextListInternal(new ListOperation() {
+    public void verifyContextListBindings(PrintWriter logSink) throws 
NamingException {
+        verifyContextListOperation(new ListOperation() {
             @Override
             public NamingEnumeration<Binding> execute(Context context, String 
address) throws NamingException {
                 return context.listBindings(address);
             }
-        });
+        }, logSink);
     }
 
-    private void verifyContextListInternal(ListOperation listOperation) throws 
NamingException {
-        final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        final PrintWriter logSink = new PrintWriter(buffer);
-
+    private void verifyContextListOperation(ListOperation listOperation, 
PrintWriter logSink) throws NamingException {
         final InitialContext ctx = new InitialContext();
         final boolean hasErrors = listContext(ctx, "", listOperation, logSink);
         logSink.flush();
 
         if (hasErrors) {
-            throw new IllegalStateException("Failed to lookup some of the 
listed entries:\n" + getPrintedJndiTree(buffer));
-        }
-    }
-
-    private String getPrintedJndiTree(ByteArrayOutputStream buffer) {
-        try {
-            return buffer.toString(StandardCharsets.UTF_8.name());
-        } catch (UnsupportedEncodingException e) {
-            return null; //should never happen
+            throw new IllegalStateException("Failed to lookup some of the 
listed entries.");
         }
     }
 
@@ -132,4 +118,5 @@ public class NamingBean {
 
         return hasErrors;
     }
+
 }

Reply via email to