mirror of https://github.com/apache/jclouds.git
Issue 2: added sample that uses jclouds api
git-svn-id: http://jclouds.googlecode.com/svn/trunk@55 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
parent
c9b8f4c2e9
commit
e44c46348b
|
@ -23,66 +23,80 @@
|
|||
*/
|
||||
package org.jclouds.samples.googleappengine.functest;
|
||||
|
||||
import com.google.appengine.tools.KickStart;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.testng.annotations.AfterTest;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Parameters;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.Properties;
|
||||
|
||||
@Test(groups = "integration", enabled = false, sequential = true, testName = "functionalTests")
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.testng.annotations.AfterTest;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Parameters;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.appengine.tools.KickStart;
|
||||
|
||||
@Test(groups = "integration", enabled = true, sequential = true, testName = "functionalTests")
|
||||
public class GoogleAppEngineTest {
|
||||
|
||||
Thread server;
|
||||
URL url;
|
||||
|
||||
@BeforeTest
|
||||
@Parameters({"warfile", "devappserver.address", "devappserver.port"})
|
||||
public void startDevAppServer(final String warfile, final String address, final String port) throws Exception {
|
||||
url = new URL(String.format("http://%1s:%2s", address, port));
|
||||
Properties props = new Properties();
|
||||
props.put("jclouds.http.address", address);
|
||||
props.put("jclouds.http.port", port + "");
|
||||
props.put("jclouds.http.secure", "false");
|
||||
props.store(new FileOutputStream(String.format("%1s/WEB-INF/jclouds.properties", warfile)), "test");
|
||||
this.server = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
KickStart.main(new String[]{
|
||||
"com.google.appengine.tools.development.DevAppServerMain",
|
||||
"--disable_update_check",
|
||||
"-a", address,
|
||||
"-p", port,
|
||||
warfile});
|
||||
@Parameters( { "warfile", "devappserver.address", "devappserver.port" })
|
||||
public void startDevAppServer(final String warfile, final String address,
|
||||
final String port) throws Exception {
|
||||
url = new URL(String.format("http://%1s:%2s", address, port));
|
||||
Properties props = new Properties();
|
||||
props.put("jclouds.http.address", address);
|
||||
props.put("jclouds.http.port", port + "");
|
||||
props.put("jclouds.http.secure", "false");
|
||||
props.store(new FileOutputStream(String.format(
|
||||
"%1s/WEB-INF/jclouds.properties", warfile)), "test");
|
||||
this.server = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
KickStart
|
||||
.main(new String[] {
|
||||
"com.google.appengine.tools.development.DevAppServerMain",
|
||||
"--disable_update_check", "-a", address, "-p",
|
||||
port, warfile });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
server.start();
|
||||
Thread.sleep(7 * 1000);
|
||||
});
|
||||
server.start();
|
||||
Thread.sleep(7 * 1000);
|
||||
}
|
||||
|
||||
@AfterTest
|
||||
public void stopDevAppServer() throws Exception {
|
||||
server.stop();
|
||||
server.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldPass() throws InterruptedException, IOException {
|
||||
InputStream i = url.openStream();
|
||||
String string = IOUtils.toString(i);
|
||||
assert string.indexOf("Hello World!") >= 0 : string;
|
||||
InputStream i = url.openStream();
|
||||
String string = IOUtils.toString(i);
|
||||
assert string.indexOf("Hello World!") >= 0 : string;
|
||||
}
|
||||
|
||||
@Test(invocationCount = 50, enabled = false, threadPoolSize = 10)
|
||||
public void testGuiceJCloudsServed() throws InterruptedException, IOException {
|
||||
Thread.sleep(10000);
|
||||
URL gurl = new URL(url, "/guice/fetch?uri=/");
|
||||
InputStream i = gurl.openStream();
|
||||
String string = IOUtils.toString(i);
|
||||
assert string.indexOf("Hello World!") >= 0 : string;
|
||||
@Test(invocationCount = 50, enabled = true, threadPoolSize = 10)
|
||||
public void testGuiceUrlServed() throws InterruptedException, IOException {
|
||||
Thread.sleep(10000);
|
||||
URL gurl = new URL(url, "/guice/fetch.url?uri=" + url.toExternalForm());
|
||||
InputStream i = gurl.openStream();
|
||||
String string = IOUtils.toString(i);
|
||||
assert string.indexOf("Hello World!") >= 0 : string;
|
||||
}
|
||||
|
||||
@Test(invocationCount = 50, enabled = true, threadPoolSize = 10)
|
||||
public void testGuiceJCloudsServed() throws InterruptedException,
|
||||
IOException {
|
||||
Thread.sleep(10000);
|
||||
URL gurl = new URL(url, "/guice/fetch.jclouds?uri=/");
|
||||
InputStream i = gurl.openStream();
|
||||
String string = IOUtils.toString(i);
|
||||
assert string.indexOf("Hello World!") >= 0 : string;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Adrian Cole <adriancole@jclouds.org>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.samples.googleappengine;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.jclouds.http.HttpFutureCommandClient;
|
||||
import org.jclouds.http.commands.CommandFactory;
|
||||
import org.jclouds.http.commands.GetString;
|
||||
|
||||
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.InputStream;
|
||||
import java.io.Writer;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.AbstractExecutorService;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* // TODO: Adrian: Document this!
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Singleton
|
||||
public class GetServlet extends HttpServlet {
|
||||
@Inject
|
||||
HttpFutureCommandClient client;
|
||||
@Inject
|
||||
CommandFactory factory;
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
|
||||
URL url = new URL(httpServletRequest.getParameter("uri"));
|
||||
Writer writer = httpServletResponse.getWriter();
|
||||
InputStream in = null;
|
||||
try {
|
||||
in = url.openStream();
|
||||
writer.write(IOUtils.toString(in));
|
||||
} catch (Exception e) {
|
||||
throw new ServletException(e);
|
||||
} finally {
|
||||
IOUtils.closeQuietly(in);
|
||||
}
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
|
||||
}
|
|
@ -36,13 +36,21 @@ import org.apache.commons.io.IOUtils;
|
|||
import org.jclouds.http.commands.config.HttpCommandsModule;
|
||||
import org.jclouds.http.config.JavaUrlHttpFutureCommandClientModule;
|
||||
import org.jclouds.lifecycle.Closer;
|
||||
import org.jclouds.samples.googleappengine.GetServlet;
|
||||
import org.jclouds.samples.googleappengine.JCloudsServlet;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Date;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.ConsoleHandler;
|
||||
import java.util.logging.Formatter;
|
||||
import java.util.logging.Handler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogRecord;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class GuiceServletConfig extends GuiceServletContextListener {
|
||||
@Inject
|
||||
|
@ -50,7 +58,30 @@ public class GuiceServletConfig extends GuiceServletContextListener {
|
|||
|
||||
ServletContext context;
|
||||
|
||||
private static final Handler HANDLER = new ConsoleHandler() {
|
||||
{
|
||||
setLevel(Level.ALL);
|
||||
setFormatter(new Formatter() {
|
||||
|
||||
@Override
|
||||
public String format(LogRecord record) {
|
||||
return String.format("[%tT %-7s] [%-7s] [%s]: %s %s\n",
|
||||
new Date(record.getMillis()), record.getLevel(),
|
||||
Thread.currentThread().getName(), record
|
||||
.getLoggerName(), record.getMessage(),
|
||||
record.getThrown() == null ? "" : record
|
||||
.getThrown());
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
static {
|
||||
Logger guiceLogger = Logger.getLogger("org.jclouds");
|
||||
guiceLogger.addHandler(HANDLER);
|
||||
guiceLogger.setLevel(Level.ALL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void contextInitialized(ServletContextEvent servletContextEvent) {
|
||||
this.context = servletContextEvent.getServletContext();
|
||||
|
@ -84,7 +115,8 @@ public class GuiceServletConfig extends GuiceServletContextListener {
|
|||
, new ServletModule() {
|
||||
@Override
|
||||
protected void configureServlets() {
|
||||
serve("/*").with(JCloudsServlet.class);
|
||||
serve("*.jclouds").with(JCloudsServlet.class);
|
||||
serve("*.url").with(GetServlet.class);
|
||||
requestInjection(this);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue