Author: rmannibucau
Date: Sun Mar  2 11:22:34 2014
New Revision: 1573284

URL: http://svn.apache.org/r1573284
Log:
TOMEE-1136 adding a test to ensure stop doesnt destroy the context

Added:
    
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/TomEEUndeployTest.java

Added: 
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/TomEEUndeployTest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/TomEEUndeployTest.java?rev=1573284&view=auto
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/TomEEUndeployTest.java
 (added)
+++ 
tomee/tomee/trunk/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/TomEEUndeployTest.java
 Sun Mar  2 11:22:34 2014
@@ -0,0 +1,130 @@
+/**
+ * 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.tomee.embedded;
+
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.core.StandardHost;
+import org.apache.catalina.startup.HostConfig;
+import org.apache.openejb.assembler.DeployerEjb;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.util.NetworkUtil;
+import org.apache.tomee.loader.TomcatHelper;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+// this test should be done on a tomee remote
+// but easier to write asserts in embedded mode
+public class TomEEUndeployTest {
+    private static final String WORK_DIR = "target/embedded-undeploy";
+    private static final File APP = new File(WORK_DIR + "/my-app");
+
+    private Container container;
+    private int http;
+
+    @Test
+    public void normalUndeploy() throws Exception {
+        container.start();
+        assertEquals(0, webapps().length);
+        container.deploy(APP.getName(), APP);
+        assertEquals(1, webapps().length);
+        container.undeploy(APP.getName());
+        assertEquals(0, webapps().length);
+    }
+
+    @Test
+    public void ejbDeployer() throws Exception {
+        container.start();
+        assertEquals(0, webapps().length);
+        final DeployerEjb deployerEjb = new DeployerEjb();
+        deployerEjb.deploy(APP.getAbsolutePath());
+        assertEquals(1, webapps().length);
+        deployerEjb.undeploy(APP.getAbsolutePath());
+        assertEquals(0, webapps().length);
+    }
+
+    @Test
+    public void justAContextStop() throws Exception {
+        container.start();
+        assertEquals(0, webapps().length);
+        final StandardHost standardHost = 
StandardHost.class.cast(TomcatHelper.getServer().findService("Tomcat").getContainer().findChild("localhost"));
+        final HostConfig listener = new HostConfig(); // not done in embedded 
but that's the way autodeploy works in normal tomcat
+        standardHost.addLifecycleListener(listener);
+        createWebapp(new File(WORK_DIR, "tomee/webapps/my-webapp"));
+        listener.lifecycleEvent(new LifecycleEvent(standardHost, 
Lifecycle.START_EVENT, standardHost));
+        assertEquals(1, webapps().length);
+        webapps()[0].stop();
+        assertEquals(1, webapps().length);
+        webapps()[0].start();
+        assertEquals(1, webapps().length);
+        assertEquals("test", IO.slurp(new URL("http://localhost:"; + http + 
"/my-webapp/")));
+    }
+
+    @Test
+    public void tomcatLifecycle() throws Exception {
+        container.start();
+        assertEquals(0, webapps().length);
+        final StandardHost standardHost = 
StandardHost.class.cast(TomcatHelper.getServer().findService("Tomcat").getContainer().findChild("localhost"));
+        final HostConfig listener = new HostConfig(); // not done in embedded 
but that's the way autodeploy works in normal tomcat
+        standardHost.addLifecycleListener(listener);
+        createWebapp(new File(WORK_DIR, "tomee/webapps/my-webapp"));
+        listener.lifecycleEvent(new LifecycleEvent(standardHost, 
Lifecycle.START_EVENT, standardHost));
+        assertEquals(1, webapps().length);
+    }
+
+    private static org.apache.catalina.Container[] webapps() {
+        return 
TomcatHelper.getServer().findService("Tomcat").getContainer().findChild("localhost").findChildren();
+    }
+
+    @BeforeClass
+    public static void createDirs() throws IOException {
+        createWebapp(APP);
+    }
+
+    private static void createWebapp(final File app) throws IOException {
+        Files.mkdirs(app);
+        IO.copy(new ByteArrayInputStream("test".getBytes()), new File(app, 
"index.html"));
+        assertTrue(app.exists());
+    }
+
+    @Before
+    public void start() throws Exception {
+        final Configuration configuration = new Configuration();
+        configuration.setHttpPort(NetworkUtil.getNextAvailablePort());
+        configuration.setDir(WORK_DIR + "/tomee");
+        http = configuration.getHttpPort();
+
+        container = new Container();
+        container.setup(configuration);
+    }
+
+    @After
+    public void stop() throws Exception {
+        container.stop();
+    }
+}


Reply via email to