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 2017/04/12 21:28:30 UTC
[05/10] wicket git commit: add store page retrieval tests on close
and distant requests back
add store page retrieval tests on close and distant requests back
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2bae2cba
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2bae2cba
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2bae2cba
Branch: refs/heads/master
Commit: 2bae2cbae378d9732ca3549ab77019d08a134302
Parents: accf187
Author: Manuel Barzi <ma...@Manuels-MacBook-Pro.local>
Authored: Sun Apr 2 15:07:59 2017 +0200
Committer: Manuel Barzi <ma...@Manuels-MacBook-Pro.local>
Committed: Sun Apr 2 15:07:59 2017 +0200
----------------------------------------------------------------------
.../pageStore/AsynchronousPageStoreTest.java | 113 ++++++++++++++++---
1 file changed, 95 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/2bae2cba/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java b/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
index 2a0acf9..d437d30 100644
--- a/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/pageStore/AsynchronousPageStoreTest.java
@@ -2,6 +2,10 @@ package org.apache.wicket.pageStore;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -21,6 +25,10 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.RandomUtils;
import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.pageStore.DefaultPageStore;
+import org.apache.wicket.pageStore.DiskDataStore;
+import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.pageStore.IPageStore;
import org.apache.wicket.serialize.ISerializer;
import org.apache.wicket.serialize.java.DeflatedJavaSerializer;
import org.apache.wicket.util.file.File;
@@ -128,13 +136,81 @@ public class AsynchronousPageStoreTest
public String toString()
{
- return "DummyPage[pageId = " + pageId + ", writeMillis = " + writeMillis +
- ", readMillis = " + readMillis + ", sessionId = " + sessionId + ", hashCode = " +
- hashCode() + "]";
+ return "DummyPage[pageId = " + pageId + ", writeMillis = " + writeMillis
+ + ", readMillis = " + readMillis + ", sessionId = " + sessionId + ", hashCode = "
+ + hashCode() + "]";
}
}
/**
+ * Store returns the same page instance from queue when there is a close request for it back
+ * again.
+ *
+ * @throws InterruptedException
+ */
+ @Test
+ public void storeReturnsSameInstanceOnClosePageRequest() throws InterruptedException
+ {
+
+ ISerializer serializer = new DeflatedJavaSerializer("applicationKey");
+ // ISerializer serializer = new DummySerializer();
+
+ IDataStore dataStore = new DiskDataStore("applicationName", new File("./target"),
+ Bytes.bytes(10000l));
+
+ // IPageStore pageStore = new DummyPageStore(new File("target/store"));
+ IPageStore pageStore = spy(new DefaultPageStore(serializer, dataStore, 0));
+
+ IPageStore asyncPageStore = new AsynchronousPageStore(pageStore, 100);
+
+ int pageId = 0;
+ String sessionId = "sessionId";
+
+ DummyPage page = new DummyPage(pageId, 1000, 1000, sessionId);
+ asyncPageStore.storePage(sessionId, page);
+
+ Thread.sleep(500);
+
+ asyncPageStore.getPage(sessionId, pageId);
+
+ verify(pageStore, never()).getPage(sessionId, pageId);
+ }
+
+ /**
+ * Store returns the restored page instance from wrapped store when there is a distant request
+ * for it back again.
+ *
+ * @throws InterruptedException
+ */
+ @Test
+ public void storeReturnsRestoredInstanceOnDistantPageRequest() throws InterruptedException
+ {
+
+ ISerializer serializer = new DeflatedJavaSerializer("applicationKey");
+ // ISerializer serializer = new DummySerializer();
+
+ IDataStore dataStore = new DiskDataStore("applicationName", new File("./target"),
+ Bytes.bytes(10000l));
+
+ // IPageStore pageStore = new DummyPageStore(new File("target/store"));
+ IPageStore pageStore = spy(new DefaultPageStore(serializer, dataStore, 0));
+
+ IPageStore asyncPageStore = new AsynchronousPageStore(pageStore, 100);
+
+ int pageId = 0;
+ String sessionId = "sessionId";
+
+ DummyPage page = new DummyPage(pageId, 1000, 1000, sessionId);
+ asyncPageStore.storePage(sessionId, page);
+
+ Thread.sleep(1500);
+
+ asyncPageStore.getPage(sessionId, pageId);
+
+ verify(pageStore, times(1)).getPage(sessionId, pageId);
+ }
+
+ /**
* Store works fully asynchronous when number of pages handled never exceeds the
* asynchronous-storage capacity.
*
@@ -164,9 +240,8 @@ public class AsynchronousPageStoreTest
}
/**
- * Store behaves synchronous from when number of pages handled exceeds the given
- * asynchronous-storage capacity. It works asynchronous until the number of pages reaches the
- * limit (capacity).
+ * Store behaves sync from when number of pages handled exceeds the given asynchronous-storage
+ * capacity. It works asynchronous until the number of pages reaches the limit (capacity).
*
* @throws InterruptedException
*/
@@ -216,8 +291,9 @@ public class AsynchronousPageStoreTest
public String toString()
{
- return "Metrics[storedPage = " + storedPage + ", storingMillis = " + storingMillis +
- ", restoredPage = " + restoredPage + ", restoringMillis = " + restoringMillis + "]";
+ return "Metrics[storedPage = " + storedPage + ", storingMillis = " + storingMillis
+ + ", restoredPage = " + restoredPage + ", restoringMillis = " + restoringMillis
+ + "]";
}
}
@@ -229,14 +305,15 @@ public class AsynchronousPageStoreTest
final CountDownLatch lock = new CountDownLatch(pages * sessions);
- ISerializer serializer = new DeflatedJavaSerializer("applicationKey");
// ISerializer serializer = new DummySerializer();
+ ISerializer serializer = new DeflatedJavaSerializer("applicationKey");
+
IDataStore dataStore = new DiskDataStore("applicationName", new File("./target"),
Bytes.bytes(10000l));
+
+ // IPageStore pageStore = new DummyPageStore(new File("target/store")) {
IPageStore pageStore = new DefaultPageStore(serializer, dataStore, 0)
{
- // IPageStore pageStore = new DummyPageStore(new
- // File("target/store")) {
@Override
public void storePage(String sessionId, IManageablePage page)
@@ -254,23 +331,23 @@ public class AsynchronousPageStoreTest
for (int pageId = 1; pageId <= pages; pageId++)
{
- for (int sessionId = 1; sessionId <= sessions; sessionId++)
+ for (int i = 1; i <= sessions; i++)
{
- String session = String.valueOf(sessionId);
+ String sessionId = String.valueOf(i);
Metrics metrics = new Metrics();
stopwatch.reset();
DummyPage page = new DummyPage(pageId, around(writeMillis), around(readMillis),
- session);
+ sessionId);
stopwatch.start();
- asyncPageStore.storePage(session, page);
+ asyncPageStore.storePage(sessionId, page);
metrics.storedPage = page;
metrics.storingMillis = stopwatch.elapsed(TimeUnit.MILLISECONDS);
stopwatch.reset();
stopwatch.start();
metrics.restoredPage = DummyPage.class
- .cast(asyncPageStore.getPage(session, pageId));
+ .cast(asyncPageStore.getPage(sessionId, pageId));
metrics.restoringMillis = stopwatch.elapsed(TimeUnit.MILLISECONDS);
results.add(metrics);
@@ -497,8 +574,8 @@ public class AsynchronousPageStoreTest
@Override
public boolean canBeAsynchronous()
{
- return true;
+ return false;
}
}
-}
+}
\ No newline at end of file