From 00ff47b7267e683356212cf44450c25a81ff0995 Mon Sep 17 00:00:00 2001
From: Ludovic Claude <ludovic.claude54@gmail.com>
Date: Wed, 25 Oct 2017 19:52:58 +0200
Subject: [PATCH] Tests: moving to Docker compose

---
 captain.yml                                   |    4 +-
 .../eu/hbp/mip/controllers/VariablesApi.java  |    4 +-
 test.sh                                       |   31 -
 tests/docker-compose.yml                      |  118 +
 tests/features-db/sql/create.sql              |   15 -
 tests/features-db/sql/ipv6_listen.sh          |    3 -
 tests/features-db/sql/values.csv              | 2000 -----------------
 tests/meta-db/sql/create.sql                  |   46 -
 tests/meta-db/sql/ipv6_listen.sh              |    3 -
 tests/post-test-run.sh                        |   33 -
 tests/pre-test-run.sh                         |  110 -
 tests/test.sh                                 |   76 +
 12 files changed, 197 insertions(+), 2246 deletions(-)
 delete mode 100755 test.sh
 create mode 100644 tests/docker-compose.yml
 delete mode 100644 tests/features-db/sql/create.sql
 delete mode 100644 tests/features-db/sql/ipv6_listen.sh
 delete mode 100644 tests/features-db/sql/values.csv
 delete mode 100644 tests/meta-db/sql/create.sql
 delete mode 100755 tests/meta-db/sql/ipv6_listen.sh
 delete mode 100755 tests/post-test-run.sh
 delete mode 100755 tests/pre-test-run.sh
 create mode 100755 tests/test.sh

diff --git a/captain.yml b/captain.yml
index bc8842887..df758b1cd 100644
--- a/captain.yml
+++ b/captain.yml
@@ -6,6 +6,4 @@ target_image:
   post:
     - echo "Finished building portal-backend image"
   test:
-    - ./tests/pre-test-run.sh
-    - ./tests/test-run.sh
-    - ./tests/post-test-run.sh
+    - ./tests/test.sh
diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
index b52344c7a..8664d5986 100644
--- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
@@ -125,7 +125,7 @@ public class VariablesApi {
         LOGGER.info("Get groups and variables hierarchy");
 
         String sqlQuery = String.format(
-                "SELECT * FROM meta_variables where target_table='%s'", featuresMainTable.toUpperCase());
+                "SELECT * FROM meta_variables where upper(target_table)='%s'", featuresMainTable.toUpperCase());
         SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
         data.next();
         String json = ((PGobject) data.getObject("hierarchy")).getValue();
@@ -138,7 +138,7 @@ public class VariablesApi {
 
     private List<String> loadVariables() {
         String sqlQuery = String.format(
-                "SELECT * FROM meta_variables where target_table='%s'", featuresMainTable.toUpperCase());
+                "SELECT * FROM meta_variables where upper(target_table)='%s'", featuresMainTable.toUpperCase());
         SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
         data.next();
         String json = ((PGobject) data.getObject("hierarchy")).getValue();
diff --git a/test.sh b/test.sh
deleted file mode 100755
index 2b45b6434..000000000
--- a/test.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-get_script_dir () {
-     SOURCE="${BASH_SOURCE[0]}"
-
-     while [ -h "$SOURCE" ]; do
-          DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
-          SOURCE="$( readlink "$SOURCE" )"
-          [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
-     done
-     cd -P "$( dirname "$SOURCE" )"
-     pwd
-}
-
-export WORKSPACE=$(get_script_dir)
-
-if pgrep -lf sshuttle > /dev/null ; then
-  echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work"
-  exit 1
-fi
-
-if [[ $NO_SUDO || -n "$CIRCLECI" ]]; then
-  CAPTAIN="captain"
-elif groups $USER | grep &>/dev/null '\bdocker\b'; then
-  CAPTAIN="captain"
-else
-  CAPTAIN="sudo captain"
-fi
-
-$CAPTAIN test
diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml
new file mode 100644
index 000000000..bc81b52df
--- /dev/null
+++ b/tests/docker-compose.yml
@@ -0,0 +1,118 @@
+version: '2'
+services:
+
+  # Expose the database to the host
+  db:
+    image: postgres:9.6.5-alpine
+    ports:
+      - "5432:5432"
+    hostname: db
+    networks:
+      - portal-bridge
+    environment:
+      POSTGRES_PASSWORD: test
+
+  wait_dbs:
+    image: "waisbrot/wait"
+    restart: "no"
+    networks:
+      - portal-bridge
+    environment:
+      - TARGETS=db:5432
+
+  create_dbs:
+    image: "hbpmip/create-databases:1.0.0"
+    restart: "no"
+    networks:
+      - portal-bridge
+    environment:
+      DB_HOST: db
+      DB_PORT: 5432
+      DB_ADMIN_USER: postgres
+      DB_ADMIN_PASSWORD: test
+      DB1: meta
+      USER1: meta
+      PASSWORD1: metapwd
+      DB2: features
+      USER2: features
+      PASSWORD2: featurespwd
+      DB3: portal
+      USER3: portal
+      PASSWORD3: portalpwd
+    depends_on:
+      - db
+
+  meta_db_setup:
+    image: "hbpmip/sample-meta-db-setup:0.2.0"
+    container_name: "meta-db-setup"
+    restart: "no"
+    networks:
+      - portal-bridge
+    environment:
+      FLYWAY_DBMS: postgresql
+      FLYWAY_HOST: db
+      FLYWAY_PORT: 5432
+      FLYWAY_DATABASE_NAME: meta
+      FLYWAY_USER: postgres
+      FLYWAY_PASSWORD: test
+    depends_on:
+      - db
+
+  sample_db_setup:
+    image: "hbpmip/sample-data-db-setup:0.3.2"
+    container_name: "data-db-setup"
+    restart: "no"
+    networks:
+      - portal-bridge
+    environment:
+      FLYWAY_DBMS: postgresql
+      FLYWAY_HOST: db
+      FLYWAY_PORT: 5432
+      FLYWAY_DATABASE_NAME: features
+      FLYWAY_USER: postgres
+      FLYWAY_PASSWORD: test
+    depends_on:
+      - db
+
+  # Use latest version as this is the image under test
+  portal_backend:
+    image: "hbpmip/portal-backend"
+    container_name: "backend-test"
+    restart: "no"
+    ports:
+      - "65440:8080"
+    networks:
+      - portal-bridge
+    environment:
+      PORTAL_DB_URL: jdbc:postgresql://db:5432/portal
+      PORTAL_DB_SERVER: db:5432
+      PORTAL_DB_USER: portal
+      PORTAL_DB_PASSWORD: portalpwd
+      META_DB_URL: jdbc:postgresql://db:5432/meta
+      META_DB_SERVER: db:5432
+      META_DB_USER: meta
+      META_DB_PASSWORD: metapwd
+      FEATURES_DB_URL: jdbc:postgresql://db:5432/features
+      FEATURES_DB_SERVER: db:5432
+      FEATURES_DB_USER: features
+      FEATURES_DB_PASSWORD: featurespwd
+      FEATURES_DB_MAIN_TABLE: sample_data
+      CONTEXT_PATH: /services
+      AUTHENTICATION: 0
+    depends_on:
+      - db
+
+  wait_portal_backend:
+    image: "waisbrot/wait"
+    restart: "no"
+    networks:
+      - portal-bridge
+    environment:
+      - TARGETS=portal_backend:8080
+    depends_on:
+      - portal_backend
+
+networks:
+  portal-bridge:
+    external:
+      name: portal-bridge
diff --git a/tests/features-db/sql/create.sql b/tests/features-db/sql/create.sql
deleted file mode 100644
index 8bcd548a4..000000000
--- a/tests/features-db/sql/create.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-SET datestyle to 'European';
-
-CREATE TABLE IF NOT EXISTS FEATURES
-(
-  tv1 char(256),
-  tv2 numeric,
-  tv3 numeric,
-
-  CONSTRAINT pk_features PRIMARY KEY (tv2)
-)
-WITH (
-  OIDS=FALSE
-);
-
-COPY FEATURES FROM '/docker-entrypoint-initdb.d/values.csv' CSV HEADER;
diff --git a/tests/features-db/sql/ipv6_listen.sh b/tests/features-db/sql/ipv6_listen.sh
deleted file mode 100644
index a721d5893..000000000
--- a/tests/features-db/sql/ipv6_listen.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/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/features-db/sql/values.csv b/tests/features-db/sql/values.csv
deleted file mode 100644
index 380ca91e8..000000000
--- a/tests/features-db/sql/values.csv
+++ /dev/null
@@ -1,2000 +0,0 @@
-tv1,tv2,tv3
-val1,1,0.1
-val2,2,0.2
-val3,3,0.3
-val4,4,0.4
-val5,5,0.5
-val6,6,0.6
-val7,7,0.7
-val8,8,0.8
-val9,9,0.9
-val10,10,1
-val11,11,1.1
-val12,12,1.2
-val13,13,1.3
-val14,14,1.4
-val15,15,1.5
-val16,16,1.6
-val17,17,1.7
-val18,18,1.8
-val19,19,1.9
-val20,20,2
-val21,21,2.1
-val22,22,2.2
-val23,23,2.3
-val24,24,2.4
-val25,25,2.5
-val26,26,2.6
-val27,27,2.7
-val28,28,2.8
-val29,29,2.9
-val30,30,3
-val31,31,3.1
-val32,32,3.2
-val33,33,3.3
-val34,34,3.4
-val35,35,3.5
-val36,36,3.6
-val37,37,3.7
-val38,38,3.8
-val39,39,3.9
-val40,40,4
-val41,41,4.1
-val42,42,4.2
-val43,43,4.3
-val44,44,4.4
-val45,45,4.5
-val46,46,4.6
-val47,47,4.7
-val48,48,4.8
-val49,49,4.9
-val50,50,5
-val51,51,5.1
-val52,52,5.2
-val53,53,5.3
-val54,54,5.4
-val55,55,5.5
-val56,56,5.6
-val57,57,5.7
-val58,58,5.8
-val59,59,5.9
-val60,60,6
-val61,61,6.1
-val62,62,6.2
-val63,63,6.3
-val64,64,6.4
-val65,65,6.5
-val66,66,6.6
-val67,67,6.7
-val68,68,6.8
-val69,69,6.9
-val70,70,7
-val71,71,7.1
-val72,72,7.2
-val73,73,7.3
-val74,74,7.4
-val75,75,7.5
-val76,76,7.6
-val77,77,7.7
-val78,78,7.8
-val79,79,7.9
-val80,80,8
-val81,81,8.1
-val82,82,8.2
-val83,83,8.3
-val84,84,8.4
-val85,85,8.5
-val86,86,8.6
-val87,87,8.7
-val88,88,8.8
-val89,89,8.9
-val90,90,9
-val91,91,9.1
-val92,92,9.2
-val93,93,9.3
-val94,94,9.4
-val95,95,9.5
-val96,96,9.6
-val97,97,9.7
-val98,98,9.8
-val99,99,9.9
-val100,100,10
-val101,101,10.1
-val102,102,10.2
-val103,103,10.3
-val104,104,10.4
-val105,105,10.5
-val106,106,10.6
-val107,107,10.7
-val108,108,10.8
-val109,109,10.9
-val110,110,11
-val111,111,11.1
-val112,112,11.2
-val113,113,11.3
-val114,114,11.4
-val115,115,11.5
-val116,116,11.6
-val117,117,11.7
-val118,118,11.8
-val119,119,11.9
-val120,120,12
-val121,121,12.1
-val122,122,12.2
-val123,123,12.3
-val124,124,12.4
-val125,125,12.5
-val126,126,12.6
-val127,127,12.7
-val128,128,12.8
-val129,129,12.9
-val130,130,13
-val131,131,13.1
-val132,132,13.2
-val133,133,13.3
-val134,134,13.4
-val135,135,13.5
-val136,136,13.6
-val137,137,13.7
-val138,138,13.8
-val139,139,13.9
-val140,140,14
-val141,141,14.1
-val142,142,14.2
-val143,143,14.3
-val144,144,14.4
-val145,145,14.5
-val146,146,14.6
-val147,147,14.7
-val148,148,14.8
-val149,149,14.9
-val150,150,15
-val151,151,15.1
-val152,152,15.2
-val153,153,15.3
-val154,154,15.4
-val155,155,15.5
-val156,156,15.6
-val157,157,15.7
-val158,158,15.8
-val159,159,15.9
-val160,160,16
-val161,161,16.1
-val162,162,16.2
-val163,163,16.3
-val164,164,16.4
-val165,165,16.5
-val166,166,16.6
-val167,167,16.7
-val168,168,16.8
-val169,169,16.9
-val170,170,17
-val171,171,17.1
-val172,172,17.2
-val173,173,17.3
-val174,174,17.4
-val175,175,17.5
-val176,176,17.6
-val177,177,17.7
-val178,178,17.8
-val179,179,17.9
-val180,180,18
-val181,181,18.1
-val182,182,18.2
-val183,183,18.3
-val184,184,18.4
-val185,185,18.5
-val186,186,18.6
-val187,187,18.7
-val188,188,18.8
-val189,189,18.9
-val190,190,19
-val191,191,19.1
-val192,192,19.2
-val193,193,19.3
-val194,194,19.4
-val195,195,19.5
-val196,196,19.6
-val197,197,19.7
-val198,198,19.8
-val199,199,19.9
-val200,200,20
-val201,201,20.1
-val202,202,20.2
-val203,203,20.3
-val204,204,20.4
-val205,205,20.5
-val206,206,20.6
-val207,207,20.7
-val208,208,20.8
-val209,209,20.9
-val210,210,21
-val211,211,21.1
-val212,212,21.2
-val213,213,21.3
-val214,214,21.4
-val215,215,21.5
-val216,216,21.6
-val217,217,21.7
-val218,218,21.8
-val219,219,21.9
-val220,220,22
-val221,221,22.1
-val222,222,22.2
-val223,223,22.3
-val224,224,22.4
-val225,225,22.5
-val226,226,22.6
-val227,227,22.7
-val228,228,22.8
-val229,229,22.9
-val230,230,23
-val231,231,23.1
-val232,232,23.2
-val233,233,23.3
-val234,234,23.4
-val235,235,23.5
-val236,236,23.6
-val237,237,23.7
-val238,238,23.8
-val239,239,23.9
-val240,240,24
-val241,241,24.1
-val242,242,24.2
-val243,243,24.3
-val244,244,24.4
-val245,245,24.5
-val246,246,24.6
-val247,247,24.7
-val248,248,24.8
-val249,249,24.9
-val250,250,25
-val251,251,25.1
-val252,252,25.2
-val253,253,25.3
-val254,254,25.4
-val255,255,25.5
-val256,256,25.6
-val257,257,25.7
-val258,258,25.8
-val259,259,25.9
-val260,260,26
-val261,261,26.1
-val262,262,26.2
-val263,263,26.3
-val264,264,26.4
-val265,265,26.5
-val266,266,26.6
-val267,267,26.7
-val268,268,26.8
-val269,269,26.9
-val270,270,27
-val271,271,27.1
-val272,272,27.2
-val273,273,27.3
-val274,274,27.4
-val275,275,27.5
-val276,276,27.6
-val277,277,27.7
-val278,278,27.8
-val279,279,27.9
-val280,280,28
-val281,281,28.1
-val282,282,28.2
-val283,283,28.3
-val284,284,28.4
-val285,285,28.5
-val286,286,28.6
-val287,287,28.7
-val288,288,28.8
-val289,289,28.9
-val290,290,29
-val291,291,29.1
-val292,292,29.2
-val293,293,29.3
-val294,294,29.4
-val295,295,29.5
-val296,296,29.6
-val297,297,29.7
-val298,298,29.8
-val299,299,29.9
-val300,300,30
-val301,301,30.1
-val302,302,30.2
-val303,303,30.3
-val304,304,30.4
-val305,305,30.5
-val306,306,30.6
-val307,307,30.7
-val308,308,30.8
-val309,309,30.9
-val310,310,31
-val311,311,31.1
-val312,312,31.2
-val313,313,31.3
-val314,314,31.4
-val315,315,31.5
-val316,316,31.6
-val317,317,31.7
-val318,318,31.8
-val319,319,31.9
-val320,320,32
-val321,321,32.1
-val322,322,32.2
-val323,323,32.3
-val324,324,32.4
-val325,325,32.5
-val326,326,32.6
-val327,327,32.7
-val328,328,32.8
-val329,329,32.9
-val330,330,33
-val331,331,33.1
-val332,332,33.2
-val333,333,33.3
-val334,334,33.4
-val335,335,33.5
-val336,336,33.6
-val337,337,33.7
-val338,338,33.8
-val339,339,33.9
-val340,340,34
-val341,341,34.1
-val342,342,34.2
-val343,343,34.3
-val344,344,34.4
-val345,345,34.5
-val346,346,34.6
-val347,347,34.7
-val348,348,34.8
-val349,349,34.9
-val350,350,35
-val351,351,35.1
-val352,352,35.2
-val353,353,35.3
-val354,354,35.4
-val355,355,35.5
-val356,356,35.6
-val357,357,35.7
-val358,358,35.8
-val359,359,35.9
-val360,360,36
-val361,361,36.1
-val362,362,36.2
-val363,363,36.3
-val364,364,36.4
-val365,365,36.5
-val366,366,36.6
-val367,367,36.7
-val368,368,36.8
-val369,369,36.9
-val370,370,37
-val371,371,37.1
-val372,372,37.2
-val373,373,37.3
-val374,374,37.4
-val375,375,37.5
-val376,376,37.6
-val377,377,37.7
-val378,378,37.8
-val379,379,37.9
-val380,380,38
-val381,381,38.1
-val382,382,38.2
-val383,383,38.3
-val384,384,38.4
-val385,385,38.5
-val386,386,38.6
-val387,387,38.7
-val388,388,38.8
-val389,389,38.9
-val390,390,39
-val391,391,39.1
-val392,392,39.2
-val393,393,39.3
-val394,394,39.4
-val395,395,39.5
-val396,396,39.6
-val397,397,39.7
-val398,398,39.8
-val399,399,39.9
-val400,400,40
-val401,401,40.1
-val402,402,40.2
-val403,403,40.3
-val404,404,40.4
-val405,405,40.5
-val406,406,40.6
-val407,407,40.7
-val408,408,40.8
-val409,409,40.9
-val410,410,41
-val411,411,41.1
-val412,412,41.2
-val413,413,41.3
-val414,414,41.4
-val415,415,41.5
-val416,416,41.6
-val417,417,41.7
-val418,418,41.8
-val419,419,41.9
-val420,420,42
-val421,421,42.1
-val422,422,42.2
-val423,423,42.3
-val424,424,42.4
-val425,425,42.5
-val426,426,42.6
-val427,427,42.7
-val428,428,42.8
-val429,429,42.9
-val430,430,43
-val431,431,43.1
-val432,432,43.2
-val433,433,43.3
-val434,434,43.4
-val435,435,43.5
-val436,436,43.6
-val437,437,43.7
-val438,438,43.8
-val439,439,43.9
-val440,440,44
-val441,441,44.1
-val442,442,44.2
-val443,443,44.3
-val444,444,44.4
-val445,445,44.5
-val446,446,44.6
-val447,447,44.7
-val448,448,44.8
-val449,449,44.9
-val450,450,45
-val451,451,45.1
-val452,452,45.2
-val453,453,45.3
-val454,454,45.4
-val455,455,45.5
-val456,456,45.6
-val457,457,45.7
-val458,458,45.8
-val459,459,45.9
-val460,460,46
-val461,461,46.1
-val462,462,46.2
-val463,463,46.3
-val464,464,46.4
-val465,465,46.5
-val466,466,46.6
-val467,467,46.7
-val468,468,46.8
-val469,469,46.9
-val470,470,47
-val471,471,47.1
-val472,472,47.2
-val473,473,47.3
-val474,474,47.4
-val475,475,47.5
-val476,476,47.6
-val477,477,47.7
-val478,478,47.8
-val479,479,47.9
-val480,480,48
-val481,481,48.1
-val482,482,48.2
-val483,483,48.3
-val484,484,48.4
-val485,485,48.5
-val486,486,48.6
-val487,487,48.7
-val488,488,48.8
-val489,489,48.9
-val490,490,49
-val491,491,49.1
-val492,492,49.2
-val493,493,49.3
-val494,494,49.4
-val495,495,49.5
-val496,496,49.6
-val497,497,49.7
-val498,498,49.8
-val499,499,49.9
-val500,500,50
-val501,501,50.1
-val502,502,50.2
-val503,503,50.3
-val504,504,50.4
-val505,505,50.5
-val506,506,50.6
-val507,507,50.7
-val508,508,50.8
-val509,509,50.9
-val510,510,51
-val511,511,51.1
-val512,512,51.2
-val513,513,51.3
-val514,514,51.4
-val515,515,51.5
-val516,516,51.6
-val517,517,51.7
-val518,518,51.8
-val519,519,51.9
-val520,520,52
-val521,521,52.1
-val522,522,52.2
-val523,523,52.3
-val524,524,52.4
-val525,525,52.5
-val526,526,52.6
-val527,527,52.7
-val528,528,52.8
-val529,529,52.9
-val530,530,53
-val531,531,53.1
-val532,532,53.2
-val533,533,53.3
-val534,534,53.4
-val535,535,53.5
-val536,536,53.6
-val537,537,53.7
-val538,538,53.8
-val539,539,53.9
-val540,540,54
-val541,541,54.1
-val542,542,54.2
-val543,543,54.3
-val544,544,54.4
-val545,545,54.5
-val546,546,54.6
-val547,547,54.7
-val548,548,54.8
-val549,549,54.9
-val550,550,55
-val551,551,55.1
-val552,552,55.2
-val553,553,55.3
-val554,554,55.4
-val555,555,55.5
-val556,556,55.6
-val557,557,55.7
-val558,558,55.8
-val559,559,55.9
-val560,560,56
-val561,561,56.1
-val562,562,56.2
-val563,563,56.3
-val564,564,56.4
-val565,565,56.5
-val566,566,56.6
-val567,567,56.7
-val568,568,56.8
-val569,569,56.9
-val570,570,57
-val571,571,57.1
-val572,572,57.2
-val573,573,57.3
-val574,574,57.4
-val575,575,57.5
-val576,576,57.6
-val577,577,57.7
-val578,578,57.8
-val579,579,57.9
-val580,580,58
-val581,581,58.1
-val582,582,58.2
-val583,583,58.3
-val584,584,58.4
-val585,585,58.5
-val586,586,58.6
-val587,587,58.7
-val588,588,58.8
-val589,589,58.9
-val590,590,59
-val591,591,59.1
-val592,592,59.2
-val593,593,59.3
-val594,594,59.4
-val595,595,59.5
-val596,596,59.6
-val597,597,59.7
-val598,598,59.8
-val599,599,59.9
-val600,600,60
-val601,601,60.1
-val602,602,60.2
-val603,603,60.3
-val604,604,60.4
-val605,605,60.5
-val606,606,60.6
-val607,607,60.7
-val608,608,60.8
-val609,609,60.9
-val610,610,61
-val611,611,61.1
-val612,612,61.2
-val613,613,61.3
-val614,614,61.4
-val615,615,61.5
-val616,616,61.6
-val617,617,61.7
-val618,618,61.8
-val619,619,61.9
-val620,620,62
-val621,621,62.1
-val622,622,62.2
-val623,623,62.3
-val624,624,62.4
-val625,625,62.5
-val626,626,62.6
-val627,627,62.7
-val628,628,62.8
-val629,629,62.9
-val630,630,63
-val631,631,63.1
-val632,632,63.2
-val633,633,63.3
-val634,634,63.4
-val635,635,63.5
-val636,636,63.6
-val637,637,63.7
-val638,638,63.8
-val639,639,63.9
-val640,640,64
-val641,641,64.1
-val642,642,64.2
-val643,643,64.3
-val644,644,64.4
-val645,645,64.5
-val646,646,64.6
-val647,647,64.7
-val648,648,64.8
-val649,649,64.9
-val650,650,65
-val651,651,65.1
-val652,652,65.2
-val653,653,65.3
-val654,654,65.4
-val655,655,65.5
-val656,656,65.6
-val657,657,65.7
-val658,658,65.8
-val659,659,65.9
-val660,660,66
-val661,661,66.1
-val662,662,66.2
-val663,663,66.3
-val664,664,66.4
-val665,665,66.5
-val666,666,66.6
-val667,667,66.7
-val668,668,66.8
-val669,669,66.9
-val670,670,67
-val671,671,67.1
-val672,672,67.2
-val673,673,67.3
-val674,674,67.4
-val675,675,67.5
-val676,676,67.6
-val677,677,67.7
-val678,678,67.8
-val679,679,67.9
-val680,680,68
-val681,681,68.1
-val682,682,68.2
-val683,683,68.3
-val684,684,68.4
-val685,685,68.5
-val686,686,68.6
-val687,687,68.7
-val688,688,68.8
-val689,689,68.9
-val690,690,69
-val691,691,69.1
-val692,692,69.2
-val693,693,69.3
-val694,694,69.4
-val695,695,69.5
-val696,696,69.6
-val697,697,69.7
-val698,698,69.8
-val699,699,69.9
-val700,700,70
-val701,701,70.1
-val702,702,70.2
-val703,703,70.3
-val704,704,70.4
-val705,705,70.5
-val706,706,70.6
-val707,707,70.7
-val708,708,70.8
-val709,709,70.9
-val710,710,71
-val711,711,71.1
-val712,712,71.2
-val713,713,71.3
-val714,714,71.4
-val715,715,71.5
-val716,716,71.6
-val717,717,71.7
-val718,718,71.8
-val719,719,71.9
-val720,720,72
-val721,721,72.1
-val722,722,72.2
-val723,723,72.3
-val724,724,72.4
-val725,725,72.5
-val726,726,72.6
-val727,727,72.7
-val728,728,72.8
-val729,729,72.9
-val730,730,73
-val731,731,73.1
-val732,732,73.2
-val733,733,73.3
-val734,734,73.4
-val735,735,73.5
-val736,736,73.6
-val737,737,73.7
-val738,738,73.8
-val739,739,73.9
-val740,740,74
-val741,741,74.1
-val742,742,74.2
-val743,743,74.3
-val744,744,74.4
-val745,745,74.5
-val746,746,74.6
-val747,747,74.7
-val748,748,74.8
-val749,749,74.9
-val750,750,75
-val751,751,75.1
-val752,752,75.2
-val753,753,75.3
-val754,754,75.4
-val755,755,75.5
-val756,756,75.6
-val757,757,75.7
-val758,758,75.8
-val759,759,75.9
-val760,760,76
-val761,761,76.1
-val762,762,76.2
-val763,763,76.3
-val764,764,76.4
-val765,765,76.5
-val766,766,76.6
-val767,767,76.7
-val768,768,76.8
-val769,769,76.9
-val770,770,77
-val771,771,77.1
-val772,772,77.2
-val773,773,77.3
-val774,774,77.4
-val775,775,77.5
-val776,776,77.6
-val777,777,77.7
-val778,778,77.8
-val779,779,77.9
-val780,780,78
-val781,781,78.1
-val782,782,78.2
-val783,783,78.3
-val784,784,78.4
-val785,785,78.5
-val786,786,78.6
-val787,787,78.7
-val788,788,78.8
-val789,789,78.9
-val790,790,79
-val791,791,79.1
-val792,792,79.2
-val793,793,79.3
-val794,794,79.4
-val795,795,79.5
-val796,796,79.6
-val797,797,79.7
-val798,798,79.8
-val799,799,79.9
-val800,800,80
-val801,801,80.1
-val802,802,80.2
-val803,803,80.3
-val804,804,80.4
-val805,805,80.5
-val806,806,80.6
-val807,807,80.7
-val808,808,80.8
-val809,809,80.9
-val810,810,81
-val811,811,81.1
-val812,812,81.2
-val813,813,81.3
-val814,814,81.4
-val815,815,81.5
-val816,816,81.6
-val817,817,81.7
-val818,818,81.8
-val819,819,81.9
-val820,820,82
-val821,821,82.1
-val822,822,82.2
-val823,823,82.3
-val824,824,82.4
-val825,825,82.5
-val826,826,82.6
-val827,827,82.7
-val828,828,82.8
-val829,829,82.9
-val830,830,83
-val831,831,83.1
-val832,832,83.2
-val833,833,83.3
-val834,834,83.4
-val835,835,83.5
-val836,836,83.6
-val837,837,83.7
-val838,838,83.8
-val839,839,83.9
-val840,840,84
-val841,841,84.1
-val842,842,84.2
-val843,843,84.3
-val844,844,84.4
-val845,845,84.5
-val846,846,84.6
-val847,847,84.7
-val848,848,84.8
-val849,849,84.9
-val850,850,85
-val851,851,85.1
-val852,852,85.2
-val853,853,85.3
-val854,854,85.4
-val855,855,85.5
-val856,856,85.6
-val857,857,85.7
-val858,858,85.8
-val859,859,85.9
-val860,860,86
-val861,861,86.1
-val862,862,86.2
-val863,863,86.3
-val864,864,86.4
-val865,865,86.5
-val866,866,86.6
-val867,867,86.7
-val868,868,86.8
-val869,869,86.9
-val870,870,87
-val871,871,87.1
-val872,872,87.2
-val873,873,87.3
-val874,874,87.4
-val875,875,87.5
-val876,876,87.6
-val877,877,87.7
-val878,878,87.8
-val879,879,87.9
-val880,880,88
-val881,881,88.1
-val882,882,88.2
-val883,883,88.3
-val884,884,88.4
-val885,885,88.5
-val886,886,88.6
-val887,887,88.7
-val888,888,88.8
-val889,889,88.9
-val890,890,89
-val891,891,89.1
-val892,892,89.2
-val893,893,89.3
-val894,894,89.4
-val895,895,89.5
-val896,896,89.6
-val897,897,89.7
-val898,898,89.8
-val899,899,89.9
-val900,900,90
-val901,901,90.1
-val902,902,90.2
-val903,903,90.3
-val904,904,90.4
-val905,905,90.5
-val906,906,90.6
-val907,907,90.7
-val908,908,90.8
-val909,909,90.9
-val910,910,91
-val911,911,91.1
-val912,912,91.2
-val913,913,91.3
-val914,914,91.4
-val915,915,91.5
-val916,916,91.6
-val917,917,91.7
-val918,918,91.8
-val919,919,91.9
-val920,920,92
-val921,921,92.1
-val922,922,92.2
-val923,923,92.3
-val924,924,92.4
-val925,925,92.5
-val926,926,92.6
-val927,927,92.7
-val928,928,92.8
-val929,929,92.9
-val930,930,93
-val931,931,93.1
-val932,932,93.2
-val933,933,93.3
-val934,934,93.4
-val935,935,93.5
-val936,936,93.6
-val937,937,93.7
-val938,938,93.8
-val939,939,93.9
-val940,940,94
-val941,941,94.1
-val942,942,94.2
-val943,943,94.3
-val944,944,94.4
-val945,945,94.5
-val946,946,94.6
-val947,947,94.7
-val948,948,94.8
-val949,949,94.9
-val950,950,95
-val951,951,95.1
-val952,952,95.2
-val953,953,95.3
-val954,954,95.4
-val955,955,95.5
-val956,956,95.6
-val957,957,95.7
-val958,958,95.8
-val959,959,95.9
-val960,960,96
-val961,961,96.1
-val962,962,96.2
-val963,963,96.3
-val964,964,96.4
-val965,965,96.5
-val966,966,96.6
-val967,967,96.7
-val968,968,96.8
-val969,969,96.9
-val970,970,97
-val971,971,97.1
-val972,972,97.2
-val973,973,97.3
-val974,974,97.4
-val975,975,97.5
-val976,976,97.6
-val977,977,97.7
-val978,978,97.8
-val979,979,97.9
-val980,980,98
-val981,981,98.1
-val982,982,98.2
-val983,983,98.3
-val984,984,98.4
-val985,985,98.5
-val986,986,98.6
-val987,987,98.7
-val988,988,98.8
-val989,989,98.9
-val990,990,99
-val991,991,99.1
-val992,992,99.2
-val993,993,99.3
-val994,994,99.4
-val995,995,99.5
-val996,996,99.6
-val997,997,99.7
-val998,998,99.8
-val999,999,99.9
-val1000,1000,100
-val1001,1001,100.1
-val1002,1002,100.2
-val1003,1003,100.3
-val1004,1004,100.4
-val1005,1005,100.5
-val1006,1006,100.6
-val1007,1007,100.7
-val1008,1008,100.8
-val1009,1009,100.9
-val1010,1010,101
-val1011,1011,101.1
-val1012,1012,101.2
-val1013,1013,101.3
-val1014,1014,101.4
-val1015,1015,101.5
-val1016,1016,101.6
-val1017,1017,101.7
-val1018,1018,101.8
-val1019,1019,101.9
-val1020,1020,102
-val1021,1021,102.1
-val1022,1022,102.2
-val1023,1023,102.3
-val1024,1024,102.4
-val1025,1025,102.5
-val1026,1026,102.6
-val1027,1027,102.7
-val1028,1028,102.8
-val1029,1029,102.9
-val1030,1030,103
-val1031,1031,103.1
-val1032,1032,103.2
-val1033,1033,103.3
-val1034,1034,103.4
-val1035,1035,103.5
-val1036,1036,103.6
-val1037,1037,103.7
-val1038,1038,103.8
-val1039,1039,103.9
-val1040,1040,104
-val1041,1041,104.1
-val1042,1042,104.2
-val1043,1043,104.3
-val1044,1044,104.4
-val1045,1045,104.5
-val1046,1046,104.6
-val1047,1047,104.7
-val1048,1048,104.8
-val1049,1049,104.9
-val1050,1050,105
-val1051,1051,105.1
-val1052,1052,105.2
-val1053,1053,105.3
-val1054,1054,105.4
-val1055,1055,105.5
-val1056,1056,105.6
-val1057,1057,105.7
-val1058,1058,105.8
-val1059,1059,105.9
-val1060,1060,106
-val1061,1061,106.1
-val1062,1062,106.2
-val1063,1063,106.3
-val1064,1064,106.4
-val1065,1065,106.5
-val1066,1066,106.6
-val1067,1067,106.7
-val1068,1068,106.8
-val1069,1069,106.9
-val1070,1070,107
-val1071,1071,107.1
-val1072,1072,107.2
-val1073,1073,107.3
-val1074,1074,107.4
-val1075,1075,107.5
-val1076,1076,107.6
-val1077,1077,107.7
-val1078,1078,107.8
-val1079,1079,107.9
-val1080,1080,108
-val1081,1081,108.1
-val1082,1082,108.2
-val1083,1083,108.3
-val1084,1084,108.4
-val1085,1085,108.5
-val1086,1086,108.6
-val1087,1087,108.7
-val1088,1088,108.8
-val1089,1089,108.9
-val1090,1090,109
-val1091,1091,109.1
-val1092,1092,109.2
-val1093,1093,109.3
-val1094,1094,109.4
-val1095,1095,109.5
-val1096,1096,109.6
-val1097,1097,109.7
-val1098,1098,109.8
-val1099,1099,109.9
-val1100,1100,110
-val1101,1101,110.1
-val1102,1102,110.2
-val1103,1103,110.3
-val1104,1104,110.4
-val1105,1105,110.5
-val1106,1106,110.6
-val1107,1107,110.7
-val1108,1108,110.8
-val1109,1109,110.9
-val1110,1110,111
-val1111,1111,111.1
-val1112,1112,111.2
-val1113,1113,111.3
-val1114,1114,111.4
-val1115,1115,111.5
-val1116,1116,111.6
-val1117,1117,111.7
-val1118,1118,111.8
-val1119,1119,111.9
-val1120,1120,112
-val1121,1121,112.1
-val1122,1122,112.2
-val1123,1123,112.3
-val1124,1124,112.4
-val1125,1125,112.5
-val1126,1126,112.6
-val1127,1127,112.7
-val1128,1128,112.8
-val1129,1129,112.9
-val1130,1130,113
-val1131,1131,113.1
-val1132,1132,113.2
-val1133,1133,113.3
-val1134,1134,113.4
-val1135,1135,113.5
-val1136,1136,113.6
-val1137,1137,113.7
-val1138,1138,113.8
-val1139,1139,113.9
-val1140,1140,114
-val1141,1141,114.1
-val1142,1142,114.2
-val1143,1143,114.3
-val1144,1144,114.4
-val1145,1145,114.5
-val1146,1146,114.6
-val1147,1147,114.7
-val1148,1148,114.8
-val1149,1149,114.9
-val1150,1150,115
-val1151,1151,115.1
-val1152,1152,115.2
-val1153,1153,115.3
-val1154,1154,115.4
-val1155,1155,115.5
-val1156,1156,115.6
-val1157,1157,115.7
-val1158,1158,115.8
-val1159,1159,115.9
-val1160,1160,116
-val1161,1161,116.1
-val1162,1162,116.2
-val1163,1163,116.3
-val1164,1164,116.4
-val1165,1165,116.5
-val1166,1166,116.6
-val1167,1167,116.7
-val1168,1168,116.8
-val1169,1169,116.9
-val1170,1170,117
-val1171,1171,117.1
-val1172,1172,117.2
-val1173,1173,117.3
-val1174,1174,117.4
-val1175,1175,117.5
-val1176,1176,117.6
-val1177,1177,117.7
-val1178,1178,117.8
-val1179,1179,117.9
-val1180,1180,118
-val1181,1181,118.1
-val1182,1182,118.2
-val1183,1183,118.3
-val1184,1184,118.4
-val1185,1185,118.5
-val1186,1186,118.6
-val1187,1187,118.7
-val1188,1188,118.8
-val1189,1189,118.9
-val1190,1190,119
-val1191,1191,119.1
-val1192,1192,119.2
-val1193,1193,119.3
-val1194,1194,119.4
-val1195,1195,119.5
-val1196,1196,119.6
-val1197,1197,119.7
-val1198,1198,119.8
-val1199,1199,119.9
-val1200,1200,120
-val1201,1201,120.1
-val1202,1202,120.2
-val1203,1203,120.3
-val1204,1204,120.4
-val1205,1205,120.5
-val1206,1206,120.6
-val1207,1207,120.7
-val1208,1208,120.8
-val1209,1209,120.9
-val1210,1210,121
-val1211,1211,121.1
-val1212,1212,121.2
-val1213,1213,121.3
-val1214,1214,121.4
-val1215,1215,121.5
-val1216,1216,121.6
-val1217,1217,121.7
-val1218,1218,121.8
-val1219,1219,121.9
-val1220,1220,122
-val1221,1221,122.1
-val1222,1222,122.2
-val1223,1223,122.3
-val1224,1224,122.4
-val1225,1225,122.5
-val1226,1226,122.6
-val1227,1227,122.7
-val1228,1228,122.8
-val1229,1229,122.9
-val1230,1230,123
-val1231,1231,123.1
-val1232,1232,123.2
-val1233,1233,123.3
-val1234,1234,123.4
-val1235,1235,123.5
-val1236,1236,123.6
-val1237,1237,123.7
-val1238,1238,123.8
-val1239,1239,123.9
-val1240,1240,124
-val1241,1241,124.1
-val1242,1242,124.2
-val1243,1243,124.3
-val1244,1244,124.4
-val1245,1245,124.5
-val1246,1246,124.6
-val1247,1247,124.7
-val1248,1248,124.8
-val1249,1249,124.9
-val1250,1250,125
-val1251,1251,125.1
-val1252,1252,125.2
-val1253,1253,125.3
-val1254,1254,125.4
-val1255,1255,125.5
-val1256,1256,125.6
-val1257,1257,125.7
-val1258,1258,125.8
-val1259,1259,125.9
-val1260,1260,126
-val1261,1261,126.1
-val1262,1262,126.2
-val1263,1263,126.3
-val1264,1264,126.4
-val1265,1265,126.5
-val1266,1266,126.6
-val1267,1267,126.7
-val1268,1268,126.8
-val1269,1269,126.9
-val1270,1270,127
-val1271,1271,127.1
-val1272,1272,127.2
-val1273,1273,127.3
-val1274,1274,127.4
-val1275,1275,127.5
-val1276,1276,127.6
-val1277,1277,127.7
-val1278,1278,127.8
-val1279,1279,127.9
-val1280,1280,128
-val1281,1281,128.1
-val1282,1282,128.2
-val1283,1283,128.3
-val1284,1284,128.4
-val1285,1285,128.5
-val1286,1286,128.6
-val1287,1287,128.7
-val1288,1288,128.8
-val1289,1289,128.9
-val1290,1290,129
-val1291,1291,129.1
-val1292,1292,129.2
-val1293,1293,129.3
-val1294,1294,129.4
-val1295,1295,129.5
-val1296,1296,129.6
-val1297,1297,129.7
-val1298,1298,129.8
-val1299,1299,129.9
-val1300,1300,130
-val1301,1301,130.1
-val1302,1302,130.2
-val1303,1303,130.3
-val1304,1304,130.4
-val1305,1305,130.5
-val1306,1306,130.6
-val1307,1307,130.7
-val1308,1308,130.8
-val1309,1309,130.9
-val1310,1310,131
-val1311,1311,131.1
-val1312,1312,131.2
-val1313,1313,131.3
-val1314,1314,131.4
-val1315,1315,131.5
-val1316,1316,131.6
-val1317,1317,131.7
-val1318,1318,131.8
-val1319,1319,131.9
-val1320,1320,132
-val1321,1321,132.1
-val1322,1322,132.2
-val1323,1323,132.3
-val1324,1324,132.4
-val1325,1325,132.5
-val1326,1326,132.6
-val1327,1327,132.7
-val1328,1328,132.8
-val1329,1329,132.9
-val1330,1330,133
-val1331,1331,133.1
-val1332,1332,133.2
-val1333,1333,133.3
-val1334,1334,133.4
-val1335,1335,133.5
-val1336,1336,133.6
-val1337,1337,133.7
-val1338,1338,133.8
-val1339,1339,133.9
-val1340,1340,134
-val1341,1341,134.1
-val1342,1342,134.2
-val1343,1343,134.3
-val1344,1344,134.4
-val1345,1345,134.5
-val1346,1346,134.6
-val1347,1347,134.7
-val1348,1348,134.8
-val1349,1349,134.9
-val1350,1350,135
-val1351,1351,135.1
-val1352,1352,135.2
-val1353,1353,135.3
-val1354,1354,135.4
-val1355,1355,135.5
-val1356,1356,135.6
-val1357,1357,135.7
-val1358,1358,135.8
-val1359,1359,135.9
-val1360,1360,136
-val1361,1361,136.1
-val1362,1362,136.2
-val1363,1363,136.3
-val1364,1364,136.4
-val1365,1365,136.5
-val1366,1366,136.6
-val1367,1367,136.7
-val1368,1368,136.8
-val1369,1369,136.9
-val1370,1370,137
-val1371,1371,137.1
-val1372,1372,137.2
-val1373,1373,137.3
-val1374,1374,137.4
-val1375,1375,137.5
-val1376,1376,137.6
-val1377,1377,137.7
-val1378,1378,137.8
-val1379,1379,137.9
-val1380,1380,138
-val1381,1381,138.1
-val1382,1382,138.2
-val1383,1383,138.3
-val1384,1384,138.4
-val1385,1385,138.5
-val1386,1386,138.6
-val1387,1387,138.7
-val1388,1388,138.8
-val1389,1389,138.9
-val1390,1390,139
-val1391,1391,139.1
-val1392,1392,139.2
-val1393,1393,139.3
-val1394,1394,139.4
-val1395,1395,139.5
-val1396,1396,139.6
-val1397,1397,139.7
-val1398,1398,139.8
-val1399,1399,139.9
-val1400,1400,140
-val1401,1401,140.1
-val1402,1402,140.2
-val1403,1403,140.3
-val1404,1404,140.4
-val1405,1405,140.5
-val1406,1406,140.6
-val1407,1407,140.7
-val1408,1408,140.8
-val1409,1409,140.9
-val1410,1410,141
-val1411,1411,141.1
-val1412,1412,141.2
-val1413,1413,141.3
-val1414,1414,141.4
-val1415,1415,141.5
-val1416,1416,141.6
-val1417,1417,141.7
-val1418,1418,141.8
-val1419,1419,141.9
-val1420,1420,142
-val1421,1421,142.1
-val1422,1422,142.2
-val1423,1423,142.3
-val1424,1424,142.4
-val1425,1425,142.5
-val1426,1426,142.6
-val1427,1427,142.7
-val1428,1428,142.8
-val1429,1429,142.9
-val1430,1430,143
-val1431,1431,143.1
-val1432,1432,143.2
-val1433,1433,143.3
-val1434,1434,143.4
-val1435,1435,143.5
-val1436,1436,143.6
-val1437,1437,143.7
-val1438,1438,143.8
-val1439,1439,143.9
-val1440,1440,144
-val1441,1441,144.1
-val1442,1442,144.2
-val1443,1443,144.3
-val1444,1444,144.4
-val1445,1445,144.5
-val1446,1446,144.6
-val1447,1447,144.7
-val1448,1448,144.8
-val1449,1449,144.9
-val1450,1450,145
-val1451,1451,145.1
-val1452,1452,145.2
-val1453,1453,145.3
-val1454,1454,145.4
-val1455,1455,145.5
-val1456,1456,145.6
-val1457,1457,145.7
-val1458,1458,145.8
-val1459,1459,145.9
-val1460,1460,146
-val1461,1461,146.1
-val1462,1462,146.2
-val1463,1463,146.3
-val1464,1464,146.4
-val1465,1465,146.5
-val1466,1466,146.6
-val1467,1467,146.7
-val1468,1468,146.8
-val1469,1469,146.9
-val1470,1470,147
-val1471,1471,147.1
-val1472,1472,147.2
-val1473,1473,147.3
-val1474,1474,147.4
-val1475,1475,147.5
-val1476,1476,147.6
-val1477,1477,147.7
-val1478,1478,147.8
-val1479,1479,147.9
-val1480,1480,148
-val1481,1481,148.1
-val1482,1482,148.2
-val1483,1483,148.3
-val1484,1484,148.4
-val1485,1485,148.5
-val1486,1486,148.6
-val1487,1487,148.7
-val1488,1488,148.8
-val1489,1489,148.9
-val1490,1490,149
-val1491,1491,149.1
-val1492,1492,149.2
-val1493,1493,149.3
-val1494,1494,149.4
-val1495,1495,149.5
-val1496,1496,149.6
-val1497,1497,149.7
-val1498,1498,149.8
-val1499,1499,149.9
-val1500,1500,150
-val1501,1501,150.1
-val1502,1502,150.2
-val1503,1503,150.3
-val1504,1504,150.4
-val1505,1505,150.5
-val1506,1506,150.6
-val1507,1507,150.7
-val1508,1508,150.8
-val1509,1509,150.9
-val1510,1510,151
-val1511,1511,151.1
-val1512,1512,151.2
-val1513,1513,151.3
-val1514,1514,151.4
-val1515,1515,151.5
-val1516,1516,151.6
-val1517,1517,151.7
-val1518,1518,151.8
-val1519,1519,151.9
-val1520,1520,152
-val1521,1521,152.1
-val1522,1522,152.2
-val1523,1523,152.3
-val1524,1524,152.4
-val1525,1525,152.5
-val1526,1526,152.6
-val1527,1527,152.7
-val1528,1528,152.8
-val1529,1529,152.9
-val1530,1530,153
-val1531,1531,153.1
-val1532,1532,153.2
-val1533,1533,153.3
-val1534,1534,153.4
-val1535,1535,153.5
-val1536,1536,153.6
-val1537,1537,153.7
-val1538,1538,153.8
-val1539,1539,153.9
-val1540,1540,154
-val1541,1541,154.1
-val1542,1542,154.2
-val1543,1543,154.3
-val1544,1544,154.4
-val1545,1545,154.5
-val1546,1546,154.6
-val1547,1547,154.7
-val1548,1548,154.8
-val1549,1549,154.9
-val1550,1550,155
-val1551,1551,155.1
-val1552,1552,155.2
-val1553,1553,155.3
-val1554,1554,155.4
-val1555,1555,155.5
-val1556,1556,155.6
-val1557,1557,155.7
-val1558,1558,155.8
-val1559,1559,155.9
-val1560,1560,156
-val1561,1561,156.1
-val1562,1562,156.2
-val1563,1563,156.3
-val1564,1564,156.4
-val1565,1565,156.5
-val1566,1566,156.6
-val1567,1567,156.7
-val1568,1568,156.8
-val1569,1569,156.9
-val1570,1570,157
-val1571,1571,157.1
-val1572,1572,157.2
-val1573,1573,157.3
-val1574,1574,157.4
-val1575,1575,157.5
-val1576,1576,157.6
-val1577,1577,157.7
-val1578,1578,157.8
-val1579,1579,157.9
-val1580,1580,158
-val1581,1581,158.1
-val1582,1582,158.2
-val1583,1583,158.3
-val1584,1584,158.4
-val1585,1585,158.5
-val1586,1586,158.6
-val1587,1587,158.7
-val1588,1588,158.8
-val1589,1589,158.9
-val1590,1590,159
-val1591,1591,159.1
-val1592,1592,159.2
-val1593,1593,159.3
-val1594,1594,159.4
-val1595,1595,159.5
-val1596,1596,159.6
-val1597,1597,159.7
-val1598,1598,159.8
-val1599,1599,159.9
-val1600,1600,160
-val1601,1601,160.1
-val1602,1602,160.2
-val1603,1603,160.3
-val1604,1604,160.4
-val1605,1605,160.5
-val1606,1606,160.6
-val1607,1607,160.7
-val1608,1608,160.8
-val1609,1609,160.9
-val1610,1610,161
-val1611,1611,161.1
-val1612,1612,161.2
-val1613,1613,161.3
-val1614,1614,161.4
-val1615,1615,161.5
-val1616,1616,161.6
-val1617,1617,161.7
-val1618,1618,161.8
-val1619,1619,161.9
-val1620,1620,162
-val1621,1621,162.1
-val1622,1622,162.2
-val1623,1623,162.3
-val1624,1624,162.4
-val1625,1625,162.5
-val1626,1626,162.6
-val1627,1627,162.7
-val1628,1628,162.8
-val1629,1629,162.9
-val1630,1630,163
-val1631,1631,163.1
-val1632,1632,163.2
-val1633,1633,163.3
-val1634,1634,163.4
-val1635,1635,163.5
-val1636,1636,163.6
-val1637,1637,163.7
-val1638,1638,163.8
-val1639,1639,163.9
-val1640,1640,164
-val1641,1641,164.1
-val1642,1642,164.2
-val1643,1643,164.3
-val1644,1644,164.4
-val1645,1645,164.5
-val1646,1646,164.6
-val1647,1647,164.7
-val1648,1648,164.8
-val1649,1649,164.9
-val1650,1650,165
-val1651,1651,165.1
-val1652,1652,165.2
-val1653,1653,165.3
-val1654,1654,165.4
-val1655,1655,165.5
-val1656,1656,165.6
-val1657,1657,165.7
-val1658,1658,165.8
-val1659,1659,165.9
-val1660,1660,166
-val1661,1661,166.1
-val1662,1662,166.2
-val1663,1663,166.3
-val1664,1664,166.4
-val1665,1665,166.5
-val1666,1666,166.6
-val1667,1667,166.7
-val1668,1668,166.8
-val1669,1669,166.9
-val1670,1670,167
-val1671,1671,167.1
-val1672,1672,167.2
-val1673,1673,167.3
-val1674,1674,167.4
-val1675,1675,167.5
-val1676,1676,167.6
-val1677,1677,167.7
-val1678,1678,167.8
-val1679,1679,167.9
-val1680,1680,168
-val1681,1681,168.1
-val1682,1682,168.2
-val1683,1683,168.3
-val1684,1684,168.4
-val1685,1685,168.5
-val1686,1686,168.6
-val1687,1687,168.7
-val1688,1688,168.8
-val1689,1689,168.9
-val1690,1690,169
-val1691,1691,169.1
-val1692,1692,169.2
-val1693,1693,169.3
-val1694,1694,169.4
-val1695,1695,169.5
-val1696,1696,169.6
-val1697,1697,169.7
-val1698,1698,169.8
-val1699,1699,169.9
-val1700,1700,170
-val1701,1701,170.1
-val1702,1702,170.2
-val1703,1703,170.3
-val1704,1704,170.4
-val1705,1705,170.5
-val1706,1706,170.6
-val1707,1707,170.7
-val1708,1708,170.8
-val1709,1709,170.9
-val1710,1710,171
-val1711,1711,171.1
-val1712,1712,171.2
-val1713,1713,171.3
-val1714,1714,171.4
-val1715,1715,171.5
-val1716,1716,171.6
-val1717,1717,171.7
-val1718,1718,171.8
-val1719,1719,171.9
-val1720,1720,172
-val1721,1721,172.1
-val1722,1722,172.2
-val1723,1723,172.3
-val1724,1724,172.4
-val1725,1725,172.5
-val1726,1726,172.6
-val1727,1727,172.7
-val1728,1728,172.8
-val1729,1729,172.9
-val1730,1730,173
-val1731,1731,173.1
-val1732,1732,173.2
-val1733,1733,173.3
-val1734,1734,173.4
-val1735,1735,173.5
-val1736,1736,173.6
-val1737,1737,173.7
-val1738,1738,173.8
-val1739,1739,173.9
-val1740,1740,174
-val1741,1741,174.1
-val1742,1742,174.2
-val1743,1743,174.3
-val1744,1744,174.4
-val1745,1745,174.5
-val1746,1746,174.6
-val1747,1747,174.7
-val1748,1748,174.8
-val1749,1749,174.9
-val1750,1750,175
-val1751,1751,175.1
-val1752,1752,175.2
-val1753,1753,175.3
-val1754,1754,175.4
-val1755,1755,175.5
-val1756,1756,175.6
-val1757,1757,175.7
-val1758,1758,175.8
-val1759,1759,175.9
-val1760,1760,176
-val1761,1761,176.1
-val1762,1762,176.2
-val1763,1763,176.3
-val1764,1764,176.4
-val1765,1765,176.5
-val1766,1766,176.6
-val1767,1767,176.7
-val1768,1768,176.8
-val1769,1769,176.9
-val1770,1770,177
-val1771,1771,177.1
-val1772,1772,177.2
-val1773,1773,177.3
-val1774,1774,177.4
-val1775,1775,177.5
-val1776,1776,177.6
-val1777,1777,177.7
-val1778,1778,177.8
-val1779,1779,177.9
-val1780,1780,178
-val1781,1781,178.1
-val1782,1782,178.2
-val1783,1783,178.3
-val1784,1784,178.4
-val1785,1785,178.5
-val1786,1786,178.6
-val1787,1787,178.7
-val1788,1788,178.8
-val1789,1789,178.9
-val1790,1790,179
-val1791,1791,179.1
-val1792,1792,179.2
-val1793,1793,179.3
-val1794,1794,179.4
-val1795,1795,179.5
-val1796,1796,179.6
-val1797,1797,179.7
-val1798,1798,179.8
-val1799,1799,179.9
-val1800,1800,180
-val1801,1801,180.1
-val1802,1802,180.2
-val1803,1803,180.3
-val1804,1804,180.4
-val1805,1805,180.5
-val1806,1806,180.6
-val1807,1807,180.7
-val1808,1808,180.8
-val1809,1809,180.9
-val1810,1810,181
-val1811,1811,181.1
-val1812,1812,181.2
-val1813,1813,181.3
-val1814,1814,181.4
-val1815,1815,181.5
-val1816,1816,181.6
-val1817,1817,181.7
-val1818,1818,181.8
-val1819,1819,181.9
-val1820,1820,182
-val1821,1821,182.1
-val1822,1822,182.2
-val1823,1823,182.3
-val1824,1824,182.4
-val1825,1825,182.5
-val1826,1826,182.6
-val1827,1827,182.7
-val1828,1828,182.8
-val1829,1829,182.9
-val1830,1830,183
-val1831,1831,183.1
-val1832,1832,183.2
-val1833,1833,183.3
-val1834,1834,183.4
-val1835,1835,183.5
-val1836,1836,183.6
-val1837,1837,183.7
-val1838,1838,183.8
-val1839,1839,183.9
-val1840,1840,184
-val1841,1841,184.1
-val1842,1842,184.2
-val1843,1843,184.3
-val1844,1844,184.4
-val1845,1845,184.5
-val1846,1846,184.6
-val1847,1847,184.7
-val1848,1848,184.8
-val1849,1849,184.9
-val1850,1850,185
-val1851,1851,185.1
-val1852,1852,185.2
-val1853,1853,185.3
-val1854,1854,185.4
-val1855,1855,185.5
-val1856,1856,185.6
-val1857,1857,185.7
-val1858,1858,185.8
-val1859,1859,185.9
-val1860,1860,186
-val1861,1861,186.1
-val1862,1862,186.2
-val1863,1863,186.3
-val1864,1864,186.4
-val1865,1865,186.5
-val1866,1866,186.6
-val1867,1867,186.7
-val1868,1868,186.8
-val1869,1869,186.9
-val1870,1870,187
-val1871,1871,187.1
-val1872,1872,187.2
-val1873,1873,187.3
-val1874,1874,187.4
-val1875,1875,187.5
-val1876,1876,187.6
-val1877,1877,187.7
-val1878,1878,187.8
-val1879,1879,187.9
-val1880,1880,188
-val1881,1881,188.1
-val1882,1882,188.2
-val1883,1883,188.3
-val1884,1884,188.4
-val1885,1885,188.5
-val1886,1886,188.6
-val1887,1887,188.7
-val1888,1888,188.8
-val1889,1889,188.9
-val1890,1890,189
-val1891,1891,189.1
-val1892,1892,189.2
-val1893,1893,189.3
-val1894,1894,189.4
-val1895,1895,189.5
-val1896,1896,189.6
-val1897,1897,189.7
-val1898,1898,189.8
-val1899,1899,189.9
-val1900,1900,190
-val1901,1901,190.1
-val1902,1902,190.2
-val1903,1903,190.3
-val1904,1904,190.4
-val1905,1905,190.5
-val1906,1906,190.6
-val1907,1907,190.7
-val1908,1908,190.8
-val1909,1909,190.9
-val1910,1910,191
-val1911,1911,191.1
-val1912,1912,191.2
-val1913,1913,191.3
-val1914,1914,191.4
-val1915,1915,191.5
-val1916,1916,191.6
-val1917,1917,191.7
-val1918,1918,191.8
-val1919,1919,191.9
-val1920,1920,192
-val1921,1921,192.1
-val1922,1922,192.2
-val1923,1923,192.3
-val1924,1924,192.4
-val1925,1925,192.5
-val1926,1926,192.6
-val1927,1927,192.7
-val1928,1928,192.8
-val1929,1929,192.9
-val1930,1930,193
-val1931,1931,193.1
-val1932,1932,193.2
-val1933,1933,193.3
-val1934,1934,193.4
-val1935,1935,193.5
-val1936,1936,193.6
-val1937,1937,193.7
-val1938,1938,193.8
-val1939,1939,193.9
-val1940,1940,194
-val1941,1941,194.1
-val1942,1942,194.2
-val1943,1943,194.3
-val1944,1944,194.4
-val1945,1945,194.5
-val1946,1946,194.6
-val1947,1947,194.7
-val1948,1948,194.8
-val1949,1949,194.9
-val1950,1950,195
-val1951,1951,195.1
-val1952,1952,195.2
-val1953,1953,195.3
-val1954,1954,195.4
-val1955,1955,195.5
-val1956,1956,195.6
-val1957,1957,195.7
-val1958,1958,195.8
-val1959,1959,195.9
-val1960,1960,196
-val1961,1961,196.1
-val1962,1962,196.2
-val1963,1963,196.3
-val1964,1964,196.4
-val1965,1965,196.5
-val1966,1966,196.6
-val1967,1967,196.7
-val1968,1968,196.8
-val1969,1969,196.9
-val1970,1970,197
-val1971,1971,197.1
-val1972,1972,197.2
-val1973,1973,197.3
-val1974,1974,197.4
-val1975,1975,197.5
-val1976,1976,197.6
-val1977,1977,197.7
-val1978,1978,197.8
-val1979,1979,197.9
-val1980,1980,198
-val1981,1981,198.1
-val1982,1982,198.2
-val1983,1983,198.3
-val1984,1984,198.4
-val1985,1985,198.5
-val1986,1986,198.6
-val1987,1987,198.7
-val1988,1988,198.8
-val1989,1989,198.9
-val1990,1990,199
-val1991,1991,199.1
-val1992,1992,199.2
-val1993,1993,199.3
-val1994,1994,199.4
-val1995,1995,199.5
-val1996,1996,199.6
-val1997,1997,199.7
-val1998,1998,199.8
-val1999,1999,199.9
diff --git a/tests/meta-db/sql/create.sql b/tests/meta-db/sql/create.sql
deleted file mode 100644
index f15950968..000000000
--- a/tests/meta-db/sql/create.sql
+++ /dev/null
@@ -1,46 +0,0 @@
-SET datestyle to 'European';
-
-CREATE TABLE IF NOT EXISTS meta_variables (
-  ID serial NOT NULL PRIMARY KEY,
-  source varchar(256) UNIQUE NOT NULL,
-  hierarchy json NOT NULL,
-  target_table varchar(256) UNIQUE NOT NULL
-);
-INSERT INTO meta_variables (source, hierarchy, target_table) VALUES (
-  'features',
-  '
-  {
-    "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"
-            }]
-        }]
-    }]
-  }
-  ',
-  'FEATURES'
-);
diff --git a/tests/meta-db/sql/ipv6_listen.sh b/tests/meta-db/sql/ipv6_listen.sh
deleted file mode 100755
index a721d5893..000000000
--- a/tests/meta-db/sql/ipv6_listen.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/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
deleted file mode 100755
index cd30147d6..000000000
--- a/tests/post-test-run.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/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 | grep features-db-test | wc -l) -gt 0 ]; then
-  docker kill features-db-test
-fi
-if [ $(docker ps | grep meta-db-test | wc -l) -gt 0 ]; then
-  docker kill meta-db-test
-fi
-
-
-# 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 features-db-test | wc -l) -gt 0 ]; then
-  docker rm -f features-db-test
-fi
-if [ $(docker ps -a | grep meta-db-test | wc -l) -gt 0 ]; then
-  docker rm -f meta-db-test
-fi
diff --git a/tests/pre-test-run.sh b/tests/pre-test-run.sh
deleted file mode 100755
index f14b8d789..000000000
--- a/tests/pre-test-run.sh
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env bash
-
-
-# Kill old containers
-
-echo "Killing 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 | grep features-db-test | wc -l) -gt 0 ]; then
-  docker kill features-db-test
-fi
-
-
-# Remove old containers
-
-echo "Removing 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 features-db-test | wc -l) -gt 0 ]; then
-  docker rm -f features-db-test
-fi
-
-
-# Run databases containers
-
-echo "Running databases containers..."
-docker run --name features-db-test -p 65432:5432 -v $(pwd)/tests/features-db/sql:/docker-entrypoint-initdb.d/ -e POSTGRES_USER=postgres -d postgres:9.6.5-alpine
-docker run --name meta-db-test -p 65433:5432 -v $(pwd)/tests/meta-db/sql:/docker-entrypoint-initdb.d/ -e POSTGRES_USER=postgres -d postgres:9.6.5-alpine
-docker run --name portal-db-test -p 65434:5432 -e POSTGRES_USER=postgres -d postgres:9.6.5-alpine
-
-
-# Get gateway IP
-
-echo "Searching gateway IP..."
-GATEWAY_IP=$(docker inspect features-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 features-db to start..."
-if [ "$CIRCLECI" = true ] ; then
-  sleep 10
-else
-  until [ $(docker exec features-db-test psql -U postgres -c "\q" 2>&1 | wc -l) -eq 0 ]; do
-      printf '.'
-      sleep 1
-  done
-fi
-echo ""
-
-echo "Waiting for meta-db to start..."
-if [ "$CIRCLECI" = true ] ; then
-  sleep 10
-else
-until [ $(docker exec meta-db-test psql -U postgres -c "\q" 2>&1 | wc -l) -eq 0 ]; do
-    printf '.'
-    sleep 1
-done
-fi
-echo ""
-
-echo "Waiting for portal-db to start..."
-if [ "$CIRCLECI" = true ] ; then
-  sleep 10
-else
-until [ $(docker exec portal-db-test psql -U postgres -c "\q" 2>&1 | wc -l) -eq 0 ]; do
-    printf '.'
-    sleep 1
-done
-fi
-echo ""
-
-
-# Run backend container
-
-echo "Running backend container..."
-docker run --name backend-test -p 65440:8080 \
--e "PORTAL_DB_URL=jdbc:postgresql://$GATEWAY_IP:65434/postgres" \
--e "PORTAL_DB_SERVER=$GATEWAY_IP:65434/postgres" \
--e "PORTAL_DB_USER=postgres" \
--e "META_DB_URL=jdbc:postgresql://$GATEWAY_IP:65433/postgres" \
--e "META_DB_SERVER=$GATEWAY_IP:65433/postgres" \
--e "META_DB_USER=postgres" \
--e "FEATURES_DB_URL=jdbc:postgresql://$GATEWAY_IP:65432/postgres" \
--e "FEATURES_DB_SERVER=$GATEWAY_IP:65432/postgres" \
--e "FEATURES_DB_USER=postgres" \
--e "CONTEXT_PATH=/services" \
--e "AUTHENTICATION=0" \
--d hbpmip/portal-backend:latest
-
-
-# Wait for backend to be ready
-
-echo "Waiting for backend to start..."
-until [ $(docker logs backend-test | grep "Started MIPApplication" | wc -l) -eq 1 ]; do
-    printf '.'
-    sleep 1
-done
-
-
-echo "DONE"
diff --git a/tests/test.sh b/tests/test.sh
new file mode 100755
index 000000000..0306a6168
--- /dev/null
+++ b/tests/test.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+set -e
+
+get_script_dir () {
+     SOURCE="${BASH_SOURCE[0]}"
+
+     while [ -h "$SOURCE" ]; do
+          DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+          SOURCE="$( readlink "$SOURCE" )"
+          [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
+     done
+     cd -P "$( dirname "$SOURCE" )"
+     pwd
+}
+
+cd "$(get_script_dir)"
+
+if pgrep -lf sshuttle > /dev/null ; then
+  echo "sshuttle detected. Please close this program as it messes with networking and prevents builds inside Docker to work"
+  exit 1
+fi
+
+if [[ $NO_SUDO || -n "$CIRCLECI" ]]; then
+  DOCKER="docker"
+  DOCKER_COMPOSE="docker-compose"
+elif groups $USER | grep &>/dev/null '\bdocker\b'; then
+  DOCKER="docker"
+  DOCKER_COMPOSE="docker-compose"
+else
+  DOCKER="sudo docker"
+  DOCKER_COMPOSE="sudo docker-compose"
+fi
+
+function _cleanup() {
+  local error_code="$?"
+  echo "Stopping the containers..."
+  $DOCKER_COMPOSE stop | true
+  $DOCKER_COMPOSE down | true
+  $DOCKER_COMPOSE rm -f > /dev/null 2> /dev/null | true
+  exit $error_code
+}
+trap _cleanup EXIT INT TERM
+
+if [ $($DOCKER network ls | grep -c 'portal-bridge') -lt 1 ]; then
+  echo "Create portal-bridge network..."
+  $DOCKER network create portal-bridge
+else
+  echo "Found portal-bridge network !"
+fi
+
+$DOCKER_COMPOSE up -d --remove-orphans db
+$DOCKER_COMPOSE run wait_dbs
+$DOCKER_COMPOSE run create_dbs
+
+echo "Migrate metadata database..."
+$DOCKER_COMPOSE run meta_db_setup
+
+echo "Migrate features database..."
+$DOCKER_COMPOSE run sample_db_setup
+
+echo
+echo "Start Portal Backend"
+$DOCKER_COMPOSE up -d portal_backend
+
+echo
+echo "Wait for Portal Backend to start..."
+$DOCKER_COMPOSE run wait_portal_backend
+
+echo
+echo "Test idempotence"
+#$DOCKER_COMPOSE run data_db_setup
+#$DOCKER_COMPOSE run data_db_check
+
+# Cleanup
+#_cleanup
-- 
GitLab