You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/08/15 12:01:07 UTC
[12/23] git commit: WICKET-5452 Make Wicket-Atmosphere testable -
AtmosphereTester
WICKET-5452 Make Wicket-Atmosphere testable - AtmosphereTester
Make it possible to write to the underlying http response
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/beeb0001
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/beeb0001
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/beeb0001
Branch: refs/heads/5674-jquery-atmo-webjar
Commit: beeb0001ac71001c7fddaf519109e73a28649457
Parents: 2524554
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Aug 13 15:04:59 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Aug 15 09:45:50 2014 +0200
----------------------------------------------------------------------
.../atmosphere/tester/AtmosphereTester.java | 7 ++-
.../atmosphere/tester/TesterAsyncSupport.java | 4 +-
.../atmosphere/tester/TesterBroadcaster.java | 26 +++++++++
.../tester/TesterBroadcasterFactory.java | 32 ++++++++++++
.../atmosphere/tester/TesterEventBus.java | 55 +++++++++++---------
.../wicket/atmosphere/AtmosphereTest.java | 8 +--
6 files changed, 98 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java
index a0b3e27..c5b1cb3 100644
--- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/AtmosphereTester.java
@@ -26,7 +26,6 @@ import org.atmosphere.cpr.AtmosphereResourceImpl;
import org.atmosphere.cpr.AtmosphereResponse;
import org.atmosphere.cpr.HeaderConfig;
import org.atmosphere.handler.AtmosphereHandlerAdapter;
-import org.atmosphere.util.SimpleBroadcaster;
/**
*
@@ -45,13 +44,13 @@ public class AtmosphereTester
@Override
public void onRequest()
{
- SimpleBroadcaster broadcaster = eventBus.getBroadcaster();
+ TesterBroadcaster broadcaster = eventBus.getBroadcaster();
AtmosphereResource atmosphereResource = new AtmosphereResourceImpl();
AtmosphereRequest atmosphereRequest = AtmosphereRequest.wrap(wicketTester.getRequest());
AtmosphereResponse atmosphereResponse = AtmosphereResponse.wrap(wicketTester.getResponse());
TesterAsyncSupport asyncSupport = new TesterAsyncSupport();
- atmosphereResource.initialize(eventBus.config, broadcaster, atmosphereRequest, atmosphereResponse,
+ atmosphereResource.initialize(broadcaster.getApplicationConfig(), broadcaster, atmosphereRequest, atmosphereResponse,
asyncSupport, new AtmosphereHandlerAdapter());
atmosphereResource.setBroadcaster(broadcaster);
@@ -67,7 +66,7 @@ public class AtmosphereTester
page.add(atmosphereBehavior);
wicketTester.startPage(page);
- wicketTester.getRequest().setHeader(HeaderConfig.X_ATMOSPHERE_TRANSPORT, AtmosphereResource.TRANSPORT.WEBSOCKET.name());
+ wicketTester.getRequest().setHeader(HeaderConfig.X_ATMOSPHERE_TRANSPORT, AtmosphereResource.TRANSPORT.LONG_POLLING.name());
wicketTester.executeBehavior(atmosphereBehavior);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterAsyncSupport.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterAsyncSupport.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterAsyncSupport.java
index 60a3cc0..18bb39c 100644
--- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterAsyncSupport.java
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterAsyncSupport.java
@@ -30,7 +30,7 @@ import org.atmosphere.cpr.AtmosphereResponse;
/**
*
*/
-public class TesterAsyncSupport<E extends AtmosphereResource> implements AsyncSupport<E>
+class TesterAsyncSupport<E extends AtmosphereResource> implements AsyncSupport<E>
{
@Override
public String getContainerName()
@@ -41,7 +41,6 @@ public class TesterAsyncSupport<E extends AtmosphereResource> implements AsyncSu
@Override
public void init(ServletConfig sc) throws ServletException
{
-
}
@Override
@@ -53,7 +52,6 @@ public class TesterAsyncSupport<E extends AtmosphereResource> implements AsyncSu
@Override
public void action(E actionEvent)
{
- System.err.println("TesterEventSupport#action(): " + actionEvent);
}
@Override
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcaster.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcaster.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcaster.java
new file mode 100644
index 0000000..ead9f3c
--- /dev/null
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcaster.java
@@ -0,0 +1,26 @@
+package org.apache.wicket.atmosphere.tester;
+
+import org.atmosphere.cpr.AtmosphereConfig;
+import org.atmosphere.cpr.AtmosphereResource;
+import org.atmosphere.cpr.AtmosphereResponse;
+import org.atmosphere.cpr.Entry;
+import org.atmosphere.util.SimpleBroadcaster;
+
+/**
+ *
+ */
+class TesterBroadcaster extends SimpleBroadcaster
+{
+ public AtmosphereConfig getApplicationConfig()
+ {
+ return config;
+ }
+
+ @Override
+ protected void executeBlockingWrite(AtmosphereResource resource, Entry entry)
+ {
+ AtmosphereResponse response = resource.getResponse();
+ String message = entry.message.toString();
+ response.write(message);
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcasterFactory.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcasterFactory.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcasterFactory.java
new file mode 100644
index 0000000..d1b5008
--- /dev/null
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterBroadcasterFactory.java
@@ -0,0 +1,32 @@
+package org.apache.wicket.atmosphere.tester;
+
+import org.atmosphere.cpr.AtmosphereConfig;
+import org.atmosphere.cpr.Broadcaster;
+import org.atmosphere.cpr.BroadcasterLifeCyclePolicy;
+import org.atmosphere.cpr.DefaultBroadcasterFactory;
+import org.atmosphere.util.SimpleBroadcaster;
+
+/**
+*
+*/
+class TesterBroadcasterFactory extends DefaultBroadcasterFactory
+{
+ private final TesterBroadcaster singleBroadcaster;
+
+ TesterBroadcasterFactory(AtmosphereConfig c, TesterBroadcaster broadcaster)
+ {
+ super(SimpleBroadcaster.class, BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY.NEVER.name(), c);
+
+ this.singleBroadcaster = broadcaster;
+
+ // expose myself as BroadcasterFactory.getDefault();
+ factory = this;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Broadcaster> T lookup(Class<T> c, Object id, boolean createIfNull, boolean unique)
+ {
+ return (T) singleBroadcaster;
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java
index 8a94f04..be88777 100644
--- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/tester/TesterEventBus.java
@@ -16,46 +16,53 @@
*/
package org.apache.wicket.atmosphere.tester;
-import org.apache.wicket.application.IComponentOnBeforeRenderListener;
+import java.util.concurrent.Executors;
+
import org.apache.wicket.atmosphere.EventBus;
import org.apache.wicket.protocol.http.WebApplication;
import org.atmosphere.cpr.AtmosphereConfig;
import org.atmosphere.cpr.AtmosphereFramework;
-import org.atmosphere.cpr.BroadcasterLifeCyclePolicy;
-import org.atmosphere.cpr.DefaultBroadcasterFactory;
-import org.atmosphere.util.SimpleBroadcaster;
+import org.atmosphere.cpr.BroadcasterConfig;
+import org.atmosphere.util.VoidExecutorService;
/**
*
*/
-public class TesterEventBus extends EventBus
+class TesterEventBus extends EventBus
{
- AtmosphereFramework framework = new AtmosphereFramework();
- AtmosphereConfig config = new AtmosphereConfig(framework);
-
public TesterEventBus(WebApplication application)
{
- super(application, new SimpleBroadcaster());
-
- framework.setBroadcasterFactory(new TesterBroadcasterFactory(config));
-
- getBroadcaster().initialize("wicket-atmosphere-tester", config);
+ super(application, createBroadcaster());
}
- @Override
- public SimpleBroadcaster getBroadcaster()
+ private static TesterBroadcaster createBroadcaster()
{
- return (SimpleBroadcaster) super.getBroadcaster();
+ TesterBroadcaster broadcaster = new TesterBroadcaster();
+
+ AtmosphereFramework framework = new AtmosphereFramework();
+ AtmosphereConfig config = new AtmosphereConfig(framework);
+
+ TesterBroadcasterFactory broadcasterFactory = new TesterBroadcasterFactory(config, broadcaster);
+ framework.setBroadcasterFactory(broadcasterFactory);
+
+ broadcaster.initialize("wicket-atmosphere-tester", config);
+
+ VoidExecutorService sameThreadExecutorService = new VoidExecutorService();
+ BroadcasterConfig broadcasterConfig = new BroadcasterConfig(
+ sameThreadExecutorService,
+ sameThreadExecutorService,
+ Executors.newSingleThreadScheduledExecutor(),
+ config, "tester-broadcaster-config");
+ broadcaster.setBroadcasterConfig(broadcasterConfig);
+ broadcasterConfig.setAsyncWriteService(sameThreadExecutorService);
+ broadcasterConfig.setExecutorService(sameThreadExecutorService);
+
+ return broadcaster;
}
- private static class TesterBroadcasterFactory extends DefaultBroadcasterFactory
+ @Override
+ public TesterBroadcaster getBroadcaster()
{
- protected TesterBroadcasterFactory(AtmosphereConfig c)
- {
- super(SimpleBroadcaster.class, BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY.NEVER.name(), c);
-
- // expose myself as BroadcasterFactory.getDefault();
- factory = this;
- }
+ return (TesterBroadcaster) super.getBroadcaster();
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/beeb0001/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java b/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java
index 9f86cdf..368367d 100644
--- a/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java
+++ b/wicket-experimental/wicket-atmosphere/src/test/java/org/apache/wicket/atmosphere/AtmosphereTest.java
@@ -33,6 +33,8 @@ public class AtmosphereTest extends Assert
@Test
public void atmospherePush()
{
+ final String updateTimeIsExecuted = "updateTime is executed!";
+
WicketTester tester = new WicketTester();
HomePage page = new HomePage(new PageParameters())
{
@@ -41,8 +43,7 @@ public class AtmosphereTest extends Assert
{
super.updateTime(target, event);
- System.err.println("updateTime");
- target.appendJavaScript("updateTime is executed");
+ target.appendJavaScript(updateTimeIsExecuted);
}
@Subscribe(contextAwareFilter = ReceiverFilter.class)
@@ -59,7 +60,8 @@ public class AtmosphereTest extends Assert
Date payload = new Date();
waTester.post(payload);
- System.err.println("Ajax response:\n" + tester.getLastResponseAsString());
+// System.err.println("Ajax response:\n" + tester.getLastResponseAsString());
+ tester.assertContains(updateTimeIsExecuted);
tester.destroy();
}