diff --git a/wizard-server-test/pom.xml b/wizard-server-test/pom.xml
index 0251b28..64bfb86 100644
--- a/wizard-server-test/pom.xml
+++ b/wizard-server-test/pom.xml
@@ -29,6 +29,20 @@ This code is available under the Apache License, version 2: http://www.apache.or
${junit.version}
+
+ com.github.kstyrc
+ embedded-redis
+ 0.6
+
+
+
+
+ ru.yandex.qatools.embed
+ postgresql-embedded
+ 2.10
+
+
+
org.cobbzilla
restex
diff --git a/wizard-server-test/src/main/java/org/cobbzilla/wizardtest/resources/ApiModelTestBase.java b/wizard-server-test/src/main/java/org/cobbzilla/wizardtest/resources/ApiModelTestBase.java
index eae9e8c..fe03417 100644
--- a/wizard-server-test/src/main/java/org/cobbzilla/wizardtest/resources/ApiModelTestBase.java
+++ b/wizard-server-test/src/main/java/org/cobbzilla/wizardtest/resources/ApiModelTestBase.java
@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.collection.SingletonList;
import org.cobbzilla.util.io.FileUtil;
import org.cobbzilla.util.jdbc.UncheckedSqlException;
+import org.cobbzilla.util.network.PortPicker;
import org.cobbzilla.util.system.Sleep;
import org.cobbzilla.wizard.client.ApiClientBase;
import org.cobbzilla.wizard.client.script.ApiRunner;
@@ -20,6 +21,7 @@ import org.cobbzilla.wizard.server.config.HasDatabaseConfiguration;
import org.cobbzilla.wizard.server.config.PgRestServerConfiguration;
import org.cobbzilla.wizard.server.config.RestServerConfiguration;
import org.junit.Before;
+import redis.embedded.RedisServer;
import java.io.File;
import java.io.IOException;
@@ -29,12 +31,14 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import static java.lang.System.identityHashCode;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
import static org.cobbzilla.util.daemon.ZillaRuntime.*;
import static org.cobbzilla.util.io.FileUtil.*;
+import static org.cobbzilla.util.network.PortPicker.pickOrDie;
import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate;
import static org.cobbzilla.util.system.CommandShell.execScript;
import static org.cobbzilla.wizard.model.entityconfig.ModelSetup.modelHash;
@@ -73,6 +77,27 @@ public abstract class ApiModelTestBase server) {
+ if (enableEmbeddedRedis()) {
+ if (redisPort == null) {
+ redisPort = pickOrDie();
+ try {
+ redisServer = new RedisServer(redisPort);
+ redisServer.start();
+ } catch (Exception e) {
+ die("beforeStart: error creating/starting RedisServer on port " + redisPort + ": " + shortError(e), e);
+ }
+ }
+ }
+ super.beforeStart(server);
+ }
+
@Override public void onStart(RestServer server) {
super.onStart(server);
try {
@@ -82,6 +107,12 @@ public abstract class ApiModelTestBase server) {
+ if (redisServer != null) {
+ redisServer.stop();
+ }
+ }
+
public boolean doTruncateDb() { return true; }
public static final String SETUP_LOCK = ".lock";