diff --git a/tests/meta-db/sql/create.sql b/tests/meta-db/sql/create.sql
new file mode 100644
index 0000000000000000000000000000000000000000..2fa8f5a3461513bc8bd9159d38e2ccec02645201
--- /dev/null
+++ b/tests/meta-db/sql/create.sql
@@ -0,0 +1,44 @@
+CREATE SCHEMA IF NOT EXISTS meta;
+
+CREATE TABLE IF NOT EXISTS meta.meta_variables (
+  ID serial NOT NULL PRIMARY KEY,
+  source varchar(256) UNIQUE NOT NULL,
+  hierarchy json NOT NULL
+);
+INSERT INTO meta.meta_variables (source, hierarchy) VALUES (
+  'adni',
+  '
+  {
+    "code": "root",
+    "groups": [{
+        "code": "tg1",
+        "label": "Test Group 1",
+        "groups": [{
+            "code": "tg3",
+            "label": "Test Group 3",
+            "variables": [{
+                "code": "tv1",
+                "label": "Test Variable 1",
+                "type": "text"
+            }]
+        }]
+    }, {
+        "code": "tg2",
+        "label": "Test Group 2",
+        "groups": [{
+            "code": "tg4",
+            "label": "Test Group 4",
+            "variables": [{
+                "code": "tv2",
+                "label": "Test Variable 2",
+                "type": "integer"
+            }, {
+                "code": "tv3",
+                "label": "Test Variable 3",
+                "type": "real"
+            }]
+        }]
+    }]
+  }
+  '
+);
diff --git a/tests/meta-db/sql/ipv6_listen.sh b/tests/meta-db/sql/ipv6_listen.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a721d5893b115be7375dcf4e898a8f00c91642af
--- /dev/null
+++ b/tests/meta-db/sql/ipv6_listen.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# This script will be executed when Postgres starts
+echo "host all all fe80::/10 md5" >> /var/lib/postgresql/data/pg_hba.conf
diff --git a/tests/post-test-run.sh b/tests/post-test-run.sh
index f60a8df6722ea32f2930880709d5a815e8b2e9e1..d8c978cbc4e2c8bac62b281903c734aae3740aa4 100755
--- a/tests/post-test-run.sh
+++ b/tests/post-test-run.sh
@@ -1,7 +1,15 @@
 #!/usr/bin/env bash
 
+
+# Kill old containers
+
+docker kill backend-test
 docker kill portal-db-test
-docker rm -f portal-db-test
+docker kill science-db-test
 
-docker kill portal-backend-test
-docker rm -f portal-backend-test
+
+# Remove old containers
+
+docker rm -f backend-test
+docker rm -f portal-db-test
+docker rm -f science-db-test
diff --git a/tests/pre-test-run.sh b/tests/pre-test-run.sh
index b71c4bb82f71f995bac8ac4ec1f63a4c3e15bac1..4db26346be9378309685e02279b0b3fd4592134c 100755
--- a/tests/pre-test-run.sh
+++ b/tests/pre-test-run.sh
@@ -1,37 +1,82 @@
 #!/usr/bin/env bash
 
+
+# Kill old containers
+
+if [ $(docker ps | grep backend-test | wc -l) -gt 0 ]; then
+  docker kill backend-test
+fi
 if [ $(docker ps | grep portal-db-test | wc -l) -gt 0 ]; then
   docker kill portal-db-test
 fi
-if [ $(docker ps -a | grep portal-db-test | wc -l) -gt 0 ]; then
-  docker rm -f portal-db-test
+if [ $(docker ps | grep science-db-test | wc -l) -gt 0 ]; then
+  docker kill science-db-test
 fi
 
-if [ $(docker ps | grep portal-backend-test | wc -l) -gt 0 ]; then
-  docker kill portal-backend-test
+
+# Remove old containers
+
+if [ $(docker ps -a | grep backend-test | wc -l) -gt 0 ]; then
+  docker rm -f backend-test
+fi
+if [ $(docker ps -a | grep portal-db-test | wc -l) -gt 0 ]; then
+  docker rm -f portal-db-test
 fi
-if [ $(docker ps -a | grep portal-backend-test | wc -l) -gt 0 ]; then
-  docker rm -f portal-backend-test
+if [ $(docker ps -a | grep science-db-test | wc -l) -gt 0 ]; then
+  docker rm -f science-db-test
 fi
 
-docker run --name portal-db-test -p 5432:5432 -e POSTGRES_USER=postgres -d postgres:9.5.3
 
-echo "Waiting for DB to start..."
+# Run databases containers
+
+docker run --name science-db-test -p 65432:5432 -v /science-db/sql:/docker-entrypoint-initdb.d/ -e POSTGRES_USER=science -d postgres:9.5.3
+docker run --name portal-db-test -p 65433:5432 -v /meta-db/sql:/docker-entrypoint-initdb.d/ -e POSTGRES_USER=portal -d postgres:9.5.3
+
+
+# Get gateway IP
+
+GATEWAY_IP=$(docker inspect science-db-test | grep \"Gateway\":\ \" | sed 's/.*Gateway\":\ \"\([^-]*\)\",/\1/' | head -n 1)
+echo "Gateway IP: $GATEWAY_IP"
+
+
+# Wait for databases to be ready
+
+echo "Waiting for science-db to start..."
+until [ $(docker exec science-db-test psql -U postgres -c "\q" 2>&1 | wc -l) -eq 0 ]; do
+    printf '.'
+    sleep 1
+done
+echo ""
+
+echo "Waiting for portal-db to start..."
 until [ $(docker exec portal-db-test psql -U postgres -c "\q" 2>&1 | wc -l) -eq 0 ]; do
     printf '.'
     sleep 1
 done
+echo ""
 
-GATEWAY_IP=$(docker inspect portal-db-test | grep \"Gateway\":\ \" | sed 's/.*Gateway\":\ \"\([^-]*\)\",/\1/' | head -n 1)
 
-docker run --name portal-backend-test -p 8080:8080 \
+# Run backend container
+
+docker run --name backend-test -p 65434:8080 \
+-e "PORTAL_DB_URL=jdbc:postgresql://$GATEWAY_IP:65433/portal" \
+-e "PORTAL_DB_SERVER=$GATEWAY_IP:65433/portal" \
+-e "PORTAL_DB_USER=portal" \
+-e "META_DB_URL=jdbc:postgresql://$GATEWAY_IP:65433/portal" \
+-e "META_DB_SERVER=$GATEWAY_IP:65433/portal" \
+-e "META_DB_USER=portal" \
+-e "SCIENCE_DB_URL=jdbc:postgresql://$GATEWAY_IP:65432/science" \
+-e "SCIENCE_DB_SERVER=$GATEWAY_IP:65432/science" \
+-e "SCIENCE_DB_USER=science" \
+-e "CONTEXT_PATH=/services" \
 -e "AUTHENTICATION=0" \
--e "PORTAL_DB_URL=jdbc:postgresql://$GATEWAY_IP:5433/postgres" \
--e "META_DB_URL=jdbc:postgresql://$GATEWAY_IP:5432/postgres" \
--d hbpmip/portal-backend
+-d hbpmip/portal-backend:latest
+
+
+# Wait for backend to be ready
 
 echo "Waiting for backend to start..."
-until [ $(docker logs portal-backend-test | grep "Started MIPApplication" | wc -l) -eq 1 ]; do
+until [ $(docker logs backend-test | grep "Started MIPApplication" | wc -l) -eq 1 ]; do
     printf '.'
     sleep 1
 done
diff --git a/tests/science-db/sql/create.sql b/tests/science-db/sql/create.sql
new file mode 100644
index 0000000000000000000000000000000000000000..c41f732daf8a7861d9382d2ff1a5919f1e4ab08f
--- /dev/null
+++ b/tests/science-db/sql/create.sql
@@ -0,0 +1,17 @@
+SET datestyle to 'European';
+
+CREATE SCHEMA IF NOT EXISTS science;
+
+CREATE TABLE science.ADNI_MERGE
+(
+  tv1 char(256),
+  tv2 numeric,
+  tv3 numeric,
+
+  CONSTRAINT pk_adni_merge PRIMARY KEY (tv2)
+)
+WITH (
+  OIDS=FALSE
+);
+
+COPY science.ADNI_MERGE FROM '/docker-entrypoint-initdb.d/values.csv' CSV HEADER;
diff --git a/tests/science-db/sql/ipv6_listen.sh b/tests/science-db/sql/ipv6_listen.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a721d5893b115be7375dcf4e898a8f00c91642af
--- /dev/null
+++ b/tests/science-db/sql/ipv6_listen.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# This script will be executed when Postgres starts
+echo "host all all fe80::/10 md5" >> /var/lib/postgresql/data/pg_hba.conf
diff --git a/tests/science-db/sql/values.csv b/tests/science-db/sql/values.csv
new file mode 100644
index 0000000000000000000000000000000000000000..258f6116059ded8bc573020631715ec01ca0c69c
--- /dev/null
+++ b/tests/science-db/sql/values.csv
@@ -0,0 +1,5 @@
+"tv1","tv2","tv3"
+"val1",1,0.1
+"val2",2,0.2
+"val3",3,0.3
+"val4",4,0.4
diff --git a/tests/test-run.sh b/tests/test-run.sh
index 4c5265bcb03f31b907c79c972e6e71f6c6784ed3..1c5523b296a713f343e6d7412ed3ae4d4c387790 100755
--- a/tests/test-run.sh
+++ b/tests/test-run.sh
@@ -1,5 +1,8 @@
 #!/usr/bin/env bash
 
+
+# Get gateway IP
+
 GATEWAY_IP=$(docker inspect portal-db-test | grep \"Gateway\":\ \" | sed 's/.*Gateway\":\ \"\([^-]*\)\",/\1/' | head -n 1)
 
 # if [ "$(curl -s $GATEWAY_IP:8080/services/groups)" != "$groups" ]; then