tajo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hyun...@apache.org
Subject git commit: TAJO-257: Unit tests occassionally fail. (hyunsik)
Date Wed, 16 Oct 2013 11:45:54 GMT
Updated Branches:
  refs/heads/master 3f45f0cdd -> 202aa29b7


TAJO-257: Unit tests occassionally fail. (hyunsik)


Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/202aa29b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/202aa29b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/202aa29b

Branch: refs/heads/master
Commit: 202aa29b7e0dc807f2637cf4b6be71a277c0909f
Parents: 3f45f0c
Author: Hyunsik Choi <hyunsik@apache.org>
Authored: Wed Oct 16 20:13:09 2013 +0900
Committer: Hyunsik Choi <hyunsik@apache.org>
Committed: Wed Oct 16 20:13:09 2013 +0900

----------------------------------------------------------------------
 .../org/apache/tajo/util/CommonTestingUtil.java |   2 +
 .../java/org/apache/tajo/master/TajoMaster.java |  23 ++--
 .../master/querymaster/QueryInProgress.java     |   2 -
 .../tajo/master/querymaster/QueryMaster.java    |   1 -
 .../java/org/apache/tajo/worker/TajoWorker.java |  22 ++--
 .../tajo/worker/TajoWorkerClientService.java    |  14 +-
 .../org/apache/tajo/TajoTestingCluster.java     |  31 +++--
 .../org/apache/tajo/webapp/TestHttpServer.java  | 132 -------------------
 .../webapps/TestHttpServer/WEB-INF/web.xml      |  34 -----
 .../resources/webapps/TestHttpServer/index.html |  23 ----
 10 files changed, 55 insertions(+), 229 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-common/src/main/java/org/apache/tajo/util/CommonTestingUtil.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/util/CommonTestingUtil.java b/tajo-common/src/main/java/org/apache/tajo/util/CommonTestingUtil.java
index f045197..cd9d188 100644
--- a/tajo-common/src/main/java/org/apache/tajo/util/CommonTestingUtil.java
+++ b/tajo-common/src/main/java/org/apache/tajo/util/CommonTestingUtil.java
@@ -26,6 +26,8 @@ import java.io.IOException;
 import java.util.UUID;
 
 public class CommonTestingUtil {
+  public static final String TAJO_TEST = "tajo.test";
+
   /**
    *
    * @param dir a local directory to be created

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMaster.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMaster.java
b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMaster.java
index b303ad6..70ae58c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMaster.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/TajoMaster.java
@@ -50,6 +50,7 @@ import org.apache.tajo.master.rm.WorkerResourceManager;
 import org.apache.tajo.master.rm.YarnTajoResourceManager;
 import org.apache.tajo.storage.AbstractStorageManager;
 import org.apache.tajo.storage.StorageManagerFactory;
+import org.apache.tajo.util.CommonTestingUtil;
 import org.apache.tajo.util.NetUtils;
 import org.apache.tajo.webapp.QueryExecutorServlet;
 import org.apache.tajo.webapp.StaticHttpServer;
@@ -182,11 +183,13 @@ public class TajoMaster extends CompositeService {
   }
 
   private void initWebServer() throws Exception {
-    int httpPort = systemConf.getInt("tajo.master.http.port", 8080);
-    webServer = StaticHttpServer.getInstance(this ,"admin", null, httpPort ,
-        true, null, context.getConf(), null);
-    webServer.addServlet("queryServlet", "/query_exec", QueryExecutorServlet.class);
-    webServer.start();
+    if (!systemConf.get(CommonTestingUtil.TAJO_TEST, "FALSE").equalsIgnoreCase("TRUE")) {
+      int httpPort = systemConf.getInt("tajo.master.http.port", 8080);
+      webServer = StaticHttpServer.getInstance(this ,"admin", null, httpPort ,
+          true, null, context.getConf(), null);
+      webServer.addServlet("queryServlet", "/query_exec", QueryExecutorServlet.class);
+      webServer.start();
+    }
   }
 
   private void checkAndInitializeSystemDirectories() throws IOException {
@@ -426,10 +429,12 @@ public class TajoMaster extends CompositeService {
 
   @Override
   public void stop() {
-    try {
-      webServer.stop();
-    } catch (Exception e) {
-      LOG.error(e);
+    if (webServer != null) {
+      try {
+        webServer.stop();
+      } catch (Exception e) {
+        LOG.error(e);
+      }
     }
 
     super.stop();

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryInProgress.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryInProgress.java
b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryInProgress.java
index d603615..2c76ac8 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryInProgress.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryInProgress.java
@@ -100,13 +100,11 @@ public class QueryInProgress extends CompositeService {
 
     masterContext.getResourceManager().stopQueryMaster(queryId);
 
-    boolean queryMasterStopped = false;
     long startTime = System.currentTimeMillis();
     while(true) {
       try {
         if(masterContext.getResourceManager().isQueryMasterStopped(queryId)) {
           LOG.info(queryId + " QueryMaster stopped");
-          queryMasterStopped = true;
           break;
         }
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
index 94f0bc2..4690567 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryMaster.java
@@ -255,7 +255,6 @@ public class QueryMaster extends CompositeService implements EventHandler
{
     }
 
     public void stopQuery(QueryId queryId) {
-      LOG.error(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
" + queryId + "<<>>>><<<<<<>>>>");
       QueryMasterTask queryMasterTask;
       queryMasterTask = queryMasterTasks.remove(queryId);
       finishedQueryMasterTasks.put(queryId, queryMasterTask);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorker.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorker.java
b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorker.java
index 838811a..37b754a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorker.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorker.java
@@ -39,6 +39,7 @@ import org.apache.tajo.pullserver.TajoPullServerService;
 import org.apache.tajo.rpc.CallFuture2;
 import org.apache.tajo.rpc.ProtoAsyncRpcClient;
 import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos;
+import org.apache.tajo.util.CommonTestingUtil;
 import org.apache.tajo.util.NetUtils;
 import org.apache.tajo.util.TajoIdUtils;
 import org.apache.tajo.webapp.StaticHttpServer;
@@ -148,15 +149,18 @@ public class TajoWorker extends CompositeService {
       LOG.info("Tajo worker started: mode=" + daemonMode + ", clientPort=" + clientPort +
", managerPort="
           + managerPort);
 
-      try {
-        httpPort = tajoConf.getInt("tajo.worker.http.port", 28080);
-        webServer = StaticHttpServer.getInstance(this ,"worker", null, httpPort ,
-            true, null, tajoConf, null);
-        webServer.start();
-        httpPort = webServer.getPort();
-        LOG.info("Worker info server started:" + httpPort);
-      } catch (IOException e) {
-        LOG.error(e.getMessage(), e);
+      if (!tajoConf.get(CommonTestingUtil.TAJO_TEST, "FALSE").equalsIgnoreCase("TRUE")) {
+        try {
+          httpPort = tajoConf.getInt("tajo.worker.http.port", 28080);
+          webServer = StaticHttpServer.getInstance(this ,"worker", null, httpPort ,
+              true, null, tajoConf, null);
+          webServer.start();
+          httpPort = webServer.getPort();
+          LOG.info("Worker info server started:" + httpPort);
+          throw new IOException("AAA");
+        } catch (IOException e) {
+          LOG.error(e.getMessage(), e);
+        }
       }
       LOG.info("Tajo worker started: mode=" + daemonMode + ", clientPort=" + clientPort +
", managerPort="
           + managerPort);

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
index 2e73b2b..dc27f1a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/worker/TajoWorkerClientService.java
@@ -197,16 +197,12 @@ public class TajoWorkerClientService extends AbstractService {
             TajoIdProtos.QueryIdProto request) throws ServiceException {
       final QueryId queryId = new QueryId(request);
       LOG.info("Stop Query:" + queryId);
-//      Thread t = new Thread() {
-//        public void run() {
-//          try {
-//            Thread.sleep(1000);   //wait tile return to rpc response
-//          } catch (InterruptedException e) {
-//          }
+      Thread t = new Thread() {
+        public void run() {
           workerContext.getQueryMaster().getContext().stopQuery(queryId);
-//        }
-//      };
-//      t.start();
+        }
+      };
+      t.start();
       return BOOL_TRUE;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TajoTestingCluster.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TajoTestingCluster.java
b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TajoTestingCluster.java
index 2a300b4..b4ec3c0 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TajoTestingCluster.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TajoTestingCluster.java
@@ -42,6 +42,7 @@ import org.apache.tajo.conf.TajoConf.ConfVars;
 import org.apache.tajo.master.TajoMaster;
 import org.apache.tajo.master.rm.TajoWorkerResourceManager;
 import org.apache.tajo.master.rm.YarnTajoResourceManager;
+import org.apache.tajo.util.CommonTestingUtil;
 import org.apache.tajo.util.NetUtils;
 import org.apache.tajo.worker.TajoWorker;
 
@@ -80,22 +81,27 @@ public class TajoTestingCluster {
 	 */
 	public static final String DEFAULT_TEST_DIRECTORY = "target/test-data";
 
-	public TajoTestingCluster() {
+  public TajoTestingCluster() {
     this.conf = new TajoConf();
-    if (System.getProperty("tajo.resource.manager") != null) {
+    initPropertiesAndConfigs();
+	}
+
+  void initPropertiesAndConfigs() {
+    if (System.getProperty(ConfVars.RESOURCE_MANAGER_CLASS.varname) != null) {
       String testResourceManager = System.getProperty("tajo.resource.manager");
       Preconditions.checkState(
           testResourceManager.equals(TajoWorkerResourceManager.class.getCanonicalName())
||
-          testResourceManager.equals(YarnTajoResourceManager.class.getCanonicalName()),
+              testResourceManager.equals(YarnTajoResourceManager.class.getCanonicalName()),
           "tajo.resource.manager must be either " + TajoWorkerResourceManager.class.getCanonicalName()
+ " or " +
               YarnTajoResourceManager.class.getCanonicalName() +"."
       );
-      this.conf.set("tajo.resource.manager", System.getProperty("tajo.resource.manager"));
+      conf.set(ConfVars.RESOURCE_MANAGER_CLASS.varname, System.getProperty(ConfVars.RESOURCE_MANAGER_CLASS.varname));
     }
     this.standbyWorkerMode =
-        this.conf.get("tajo.resource.manager", TajoWorkerResourceManager.class.getCanonicalName())
+        conf.get(ConfVars.RESOURCE_MANAGER_CLASS.varname, TajoWorkerResourceManager.class.getCanonicalName())
             .indexOf(TajoWorkerResourceManager.class.getName()) >= 0;
-	}
+    conf.set(CommonTestingUtil.TAJO_TEST, "TRUE");
+  }
 
 	public TajoConf getConfiguration() {
 		return this.conf;
@@ -294,7 +300,7 @@ public class TajoTestingCluster {
 
   private void startTajoWorkers(int numSlaves) throws Exception {
     for(int i = 0; i < 1; i++) {
-      TajoWorker tajoWorker = new TajoWorker("all");
+      TajoWorker tajoWorker = new TajoWorker("worker_" + i);
 
       TajoConf workerConf  = new TajoConf(this.conf);
 
@@ -447,6 +453,13 @@ public class TajoTestingCluster {
     LOG.info("========================================");
     LOG.info("Minicluster is stopping");
     LOG.info("========================================");
+
+    try {
+      Thread.sleep(3000);
+    } catch (InterruptedException e) {
+      e.printStackTrace();
+    }
+
     shutdownMiniTajoCluster();
 
     if(this.catalogServer != null) {
@@ -467,7 +480,6 @@ public class TajoTestingCluster {
       this.dfsCluster.shutdown();
     }
 
-    /*
     if(this.clusterTestBuildDir != null && this.clusterTestBuildDir.exists()) {
       if(!ShutdownHookManager.get().isShutdownInProgress()) {
         //TODO clean test dir when ShutdownInProgress
@@ -476,8 +488,7 @@ public class TajoTestingCluster {
         localFS.close();
       }
       this.clusterTestBuildDir = null;
-    }*/
-
+    }
     LOG.info("Minicluster is down");
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/webapp/TestHttpServer.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/webapp/TestHttpServer.java
b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/webapp/TestHttpServer.java
deleted file mode 100644
index 2b48fd8..0000000
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/webapp/TestHttpServer.java
+++ /dev/null
@@ -1,132 +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.tajo.webapp;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mortbay.jetty.webapp.WebAppContext;
-import org.apache.tajo.conf.TajoConf;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.Random;
-
-import static org.junit.Assert.assertTrue;
-
-public class TestHttpServer {
-  private static HttpServer server;  
-  private final static Random rnd = new Random();
-  private final static String TEST_CODE;
-  
-  static {
-    TEST_CODE = "TestHttpServlet_" + rnd.nextInt();
-  }
-  
-  @BeforeClass
-  public static final void setUp() throws IOException {
-    TajoConf conf = new TajoConf();
-    server = new HttpServer("TestHttpServer", "localhost", 0, true, null,
-        conf, null);
-    server.addServlet("servlet", "/servlet", DummyServlet.class);
-    
-    WebAppContext context = new WebAppContext();    
-    context.setDescriptor("src/test/resources/webapps/TestHttpServer/WEB-INF/web.xml");
-    context.setResourceBase("src/test/resources/webapps/TestHttpServer/");
-    context.setContextPath("/dummy");
-    server.addContext(context, true);
-    server.start();
-  }
-  
-  @AfterClass
-  public static final void tearDown() throws Exception {
-    server.stop();
-  }
-
-  public static class DummyServlet extends HttpServlet {
-    private static final long serialVersionUID = 4366618372901494571L;
-
-    protected void doGet(HttpServletRequest request,
-        HttpServletResponse response) throws ServletException, IOException {
-      response.setContentType("text/html");
-      response.setStatus(HttpServletResponse.SC_OK);
-      response.getWriter().println(TEST_CODE);
-      response.getWriter().println("<br />");
-      response.getWriter().println(
-          "session=" + request.getSession(true).getId());
-    }
-  }
-
-  @Test
-  public final void testDefaultContext() throws IOException {
-    int port = server.getPort();
-    URL url = new URL("http://localhost:" + port+"/");
-
-    BufferedReader in = new BufferedReader(new InputStreamReader(
-        url.openStream()));
-    String line;
-    boolean found = false;
-    while ((line = in.readLine()) != null) {
-      if (line.equals("TestHttpServlet-120221"))
-        found = true;
-    }
-    assertTrue(found);    
-    in.close();
-  }
-  
-  @Test
-  public final void testAddContext() throws IOException, InterruptedException {
-    int port = server.getPort();
-    URL url = new URL("http://localhost:" + port+"/dummy/");
-
-    BufferedReader in = new BufferedReader(new InputStreamReader(
-        url.openStream()));
-    String line;
-    boolean found = false;
-    while ((line = in.readLine()) != null) {
-      if (line.equals("TestHttpServlet-120221"))
-        found = true;
-    }
-    assertTrue(found);
-    in.close();
-  }
-
-  @Test
-  public final void testAddServlet() throws IOException, InterruptedException {
-    int port = server.getPort();
-    URL url = new URL("http://localhost:" + port+"/servlet");
-
-    BufferedReader in = new BufferedReader(new InputStreamReader(
-        url.openStream()));
-    String line;
-    boolean found = false;
-    while ((line = in.readLine()) != null) {
-      if (line.equals(TEST_CODE))
-        found = true;
-    }    
-    assertTrue(found);   
-    in.close();
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/WEB-INF/web.xml
b/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/WEB-INF/web.xml
deleted file mode 100644
index 9eefd91..0000000
--- a/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/WEB-INF/web.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-  -->
-
-<web-app>
-  <display-name>TestHttpServer</display-name>
-
-  <!-- Declare the existence of a servlet. -->
-  <servlet>
-    <servlet-name>DummyServlet</servlet-name>
-    <servlet-class>org.apache.tajo.webapp.TestHttpServer$DummyServlet</servlet-class>
-  </servlet>
-
-  <!-- Map URLs to that servlet. -->
-  <servlet-mapping>
-    <servlet-name>DummyServlet</servlet-name>
-    <url-pattern>/dummy</url-pattern>
-  </servlet-mapping>
-</web-app>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/202aa29b/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/index.html
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/index.html
b/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/index.html
deleted file mode 100644
index fc79d65..0000000
--- a/tajo-core/tajo-core-backend/src/test/resources/webapps/TestHttpServer/index.html
+++ /dev/null
@@ -1,23 +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.
-  -->
-
-<html>
-<body>
-TestHttpServlet-120221
-</body>
-</html>


Mime
View raw message