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();
+ }
+}