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