From d9001a4a519b42a70111cbdb47293ba873878326 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Janis=20Daniel=20Da=CC=88hne?=
 <janis.daehne2@student.uni-halle.de>
Date: Sun, 1 Mar 2020 15:26:02 +0100
Subject: [PATCH] - updated readme (request object) to be up-to-date with the
 yapex client server   - moved table schema up   - removed deleted settings
 maxLines... now the request object specifies max protocol string length -
 removed old (outdated) backupDb files - added new backupDb files - changed
 old name syndrom to yapex

---
 backupDb/0_plangs_linux.sql                   |  58 --
 backupDb/0_plangs_mac.sql                     |  46 --
 backupDb/1_transactions_mac.sql               |  37 --
 backupDb/2_config_mac.sql                     |  55 --
 .../{2_config_server.sql => config_linux.sql} |  14 +-
 .../{0_plangs_server.sql => plangs_linux.sql} |  10 +-
 backupDb/traceLog_linux.sql                   |  58 ++
 ...ions_server.sql => transactions_linux.sql} |   6 +-
 backupDb/yapexTestDb_server.sql               | 137 +++++
 config_example.json                           |   4 +-
 readme.md                                     | 515 +++++++++---------
 11 files changed, 478 insertions(+), 462 deletions(-)
 delete mode 100644 backupDb/0_plangs_linux.sql
 delete mode 100644 backupDb/0_plangs_mac.sql
 delete mode 100644 backupDb/1_transactions_mac.sql
 delete mode 100644 backupDb/2_config_mac.sql
 rename backupDb/{2_config_server.sql => config_linux.sql} (77%)
 rename backupDb/{0_plangs_server.sql => plangs_linux.sql} (76%)
 create mode 100644 backupDb/traceLog_linux.sql
 rename backupDb/{1_transactions_server.sql => transactions_linux.sql} (89%)
 create mode 100644 backupDb/yapexTestDb_server.sql

diff --git a/backupDb/0_plangs_linux.sql b/backupDb/0_plangs_linux.sql
deleted file mode 100644
index 5e26189..0000000
--- a/backupDb/0_plangs_linux.sql
+++ /dev/null
@@ -1,58 +0,0 @@
--- phpMyAdmin SQL Dump
--- version 4.2.12deb2+deb8u2
--- http://www.phpmyadmin.net
---
--- Host: localhost
--- Erstellungszeit: 09. Jan 2017 um 00:42
--- Server Version: 5.5.53-0+deb8u1
--- PHP-Version: 5.6.27-0+deb8u1
-
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
-
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-
---
--- Datenbank: `syndromtestdb`
---
-
--- --------------------------------------------------------
-
---
--- Tabellenstruktur für Tabelle `plangs`
---
-
-CREATE TABLE IF NOT EXISTS `plangs` (
-  `internalName` varchar(100) NOT NULL,
-  `compile` text NOT NULL,
-  `exec` text NOT NULL,
-  `hardTimeoutInMs` int(11) NOT NULL,
-  `hardMemoryLimitInKb` int(11) NOT NULL,
-  `hardDiskSpaceLimitInKb` int(11) NOT NULL,
-  `extensions` text NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---
--- Daten für Tabelle `plangs`
---
-
-INSERT INTO `plangs` (`internalName`, `compile`, `exec`, `hardTimeoutInMs`, `hardMemoryLimitInKb`, `hardDiskSpaceLimitInKb`, `extensions`) VALUES
-('java', '\\"javac\\" \\"-encoding\\" \\"UTF8\\" \\"#5\\"', '\\"java\\" \\"-Dfile.encoding=UTF8\\" \\"-cp\\" \\"#1\\" \\"#2\\"', 1500, 2000, 2000, '["java"]');
-
---
--- Indizes der exportierten Tabellen
---
-
---
--- Indizes für die Tabelle `plangs`
---
-ALTER TABLE `plangs`
- ADD PRIMARY KEY (`internalName`);
-
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/backupDb/0_plangs_mac.sql b/backupDb/0_plangs_mac.sql
deleted file mode 100644
index dd5b22c..0000000
--- a/backupDb/0_plangs_mac.sql
+++ /dev/null
@@ -1,46 +0,0 @@
--- phpMyAdmin SQL Dump
--- version 4.8.3
--- https://www.phpmyadmin.net/
---
--- Host: localhost:8889
--- Erstellungszeit: 08. Mai 2019 um 16:37
--- Server-Version: 5.7.23
--- PHP-Version: 7.2.10
-
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
-
---
--- Datenbank: `syndromtestdb`
---
-
--- --------------------------------------------------------
-
---
--- Tabellenstruktur für Tabelle `plangs`
---
-
-CREATE TABLE `plangs` (
-  `internalName` varchar(100) NOT NULL,
-  `compile` text NOT NULL,
-  `exec` text NOT NULL,
-  `extensions` text NOT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---
--- Daten für Tabelle `plangs`
---
-
-INSERT INTO `plangs` (`internalName`, `compile`, `exec`, `extensions`) VALUES
-('java', '\\\"javac\\\" \\\"-encoding\\\" \\\"UTF8\\\" \\\"#5\\\"', '\\\"java\\\" \\\"-Dfile.encoding=UTF8\\\" \\\"-cp\\\" \\\"#1\\\" \\\"#2\\\"', '[\"java\"]'),
-('python', '\\\"python\\\" \\\"-m\\\" \\\"py_compile\\\" \\\"#5\\\"', '\\\"python\\\" \\\"#5\\\"', '[\"py\"]');
-
---
--- Indizes der exportierten Tabellen
---
-
---
--- Indizes für die Tabelle `plangs`
---
-ALTER TABLE `plangs`
-  ADD PRIMARY KEY (`internalName`);
diff --git a/backupDb/1_transactions_mac.sql b/backupDb/1_transactions_mac.sql
deleted file mode 100644
index e9ed549..0000000
--- a/backupDb/1_transactions_mac.sql
+++ /dev/null
@@ -1,37 +0,0 @@
--- phpMyAdmin SQL Dump
--- version 4.8.3
--- https://www.phpmyadmin.net/
---
--- Host: localhost:8889
--- Erstellungszeit: 08. Mai 2019 um 16:37
--- Server-Version: 5.7.23
--- PHP-Version: 7.2.10
-
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
-
---
--- Datenbank: `syndromtestdb`
---
-
--- --------------------------------------------------------
-
---
--- Tabellenstruktur für Tabelle `transactions`
---
-
-CREATE TABLE `transactions` (
-  `id` varchar(50) NOT NULL,
-  `rootDirName` varchar(50) NOT NULL,
-  `testType` text
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---
--- Indizes der exportierten Tabellen
---
-
---
--- Indizes für die Tabelle `transactions`
---
-ALTER TABLE `transactions`
-  ADD PRIMARY KEY (`id`);
diff --git a/backupDb/2_config_mac.sql b/backupDb/2_config_mac.sql
deleted file mode 100644
index e12f0b7..0000000
--- a/backupDb/2_config_mac.sql
+++ /dev/null
@@ -1,55 +0,0 @@
--- phpMyAdmin SQL Dump
--- version 4.8.3
--- https://www.phpmyadmin.net/
---
--- Host: localhost:8889
--- Erstellungszeit: 08. Mai 2019 um 16:37
--- Server-Version: 5.7.23
--- PHP-Version: 7.2.10
-
-SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
-
---
--- Datenbank: `syndromtestdb`
---
-
--- --------------------------------------------------------
-
---
--- Tabellenstruktur für Tabelle `config`
---
-
-CREATE TABLE `config` (
-  `id` int(11) NOT NULL,
-  `workingDirFullPath` text NOT NULL,
-  `hardTimeoutInMs` int(11) NOT NULL,
-  `hardCompileTimeoutInMs` int(11) NOT NULL,
-  `hardMemoryLimitInKb` int(11) NOT NULL,
-  `hardDiskSpaceLimitInKb` int(11) NOT NULL,
-  `maxParallelTests` int(11) NOT NULL,
-  `maxNumberOfTestsWithOneRequest` int(11) NOT NULL,
-  `runner` text NOT NULL,
-  `showTestRunnerDebugOutput` tinyint(1) NOT NULL DEFAULT '0',
-  `maxLinesToRead` int(11) NOT NULL,
-  `maxErrLinesToRead` int(11) NOT NULL,
-  `maxLinesToWrite` int(11) NOT NULL,
-  `environmentVars` text
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---
--- Daten für Tabelle `config`
---
-
-INSERT INTO `config` (`id`, `workingDirFullPath`, `hardTimeoutInMs`, `hardCompileTimeoutInMs`, `hardMemoryLimitInKb`, `hardDiskSpaceLimitInKb`, `maxParallelTests`, `maxNumberOfTestsWithOneRequest`, `runner`, `showTestRunnerDebugOutput`, `maxLinesToRead`, `maxErrLinesToRead`, `maxLinesToWrite`, `environmentVars`) VALUES
-(1, '/Users/janis/Documents/Test/', 4000, 2000, 2000, 2000, 70, 15, '\"/Users/janis/Misc/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java\" -Dfile.encoding=UTF8 -cp \"/Users/janis/Documents/Projects/SyndromAll/Syndrom_DefaultTestRunnerFullThreaded/out\" Main', 0, 500, 500, 500, NULL);
-
---
--- Indizes der exportierten Tabellen
---
-
---
--- Indizes für die Tabelle `config`
---
-ALTER TABLE `config`
-  ADD PRIMARY KEY (`id`);
diff --git a/backupDb/2_config_server.sql b/backupDb/config_linux.sql
similarity index 77%
rename from backupDb/2_config_server.sql
rename to backupDb/config_linux.sql
index a2d015b..7dca3f9 100644
--- a/backupDb/2_config_server.sql
+++ b/backupDb/config_linux.sql
@@ -3,9 +3,9 @@
 -- https://www.phpmyadmin.net/
 --
 -- Host: localhost
--- Erstellungszeit: 08. Mai 2019 um 18:36
--- Server-Version: 10.1.37-MariaDB-0+deb9u1
--- PHP-Version: 7.0.33-0+deb9u1
+-- Erstellungszeit: 01. Mrz 2020 um 15:21
+-- Server-Version: 10.1.41-MariaDB-0+deb9u1
+-- PHP-Version: 7.0.33-0+deb9u6
 
 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
 SET time_zone = "+00:00";
@@ -37,9 +37,7 @@ CREATE TABLE `config` (
   `maxNumberOfTestsWithOneRequest` int(11) NOT NULL,
   `runner` text NOT NULL,
   `showTestRunnerDebugOutput` tinyint(1) NOT NULL DEFAULT '0',
-  `maxLinesToRead` int(11) NOT NULL,
-  `maxErrLinesToRead` int(11) NOT NULL,
-  `maxLinesToWrite` int(11) NOT NULL,
+  `insertTraceLogs` tinyint(1) NOT NULL DEFAULT '1',
   `environmentVars` text
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
@@ -47,8 +45,8 @@ CREATE TABLE `config` (
 -- Daten für Tabelle `config`
 --
 
-INSERT INTO `config` (`id`, `workingDirFullPath`, `hardTimeoutInMs`, `hardCompileTimeoutInMs`, `hardMemoryLimitInKb`, `hardDiskSpaceLimitInKb`, `maxParallelTests`, `maxNumberOfTestsWithOneRequest`, `runner`, `showTestRunnerDebugOutput`, `maxLinesToRead`, `maxErrLinesToRead`, `maxLinesToWrite`, `environmentVars`) VALUES
-(1, '/opt/yapex/_tests', 5000, 3000, 2000, 2000, 100, 15, '\"java\" -Dfile.encoding=UTF8 -cp \"/opt/yapex/LinuxSafeTestRunner/src\" Main', 0, 500, 500, 500, 'USER=yapextester\r\nHOME=/home/yapextester\r\nLANG=de_DE.UTF-8\r\nPATH=/usr/local/bin:/usr/bin:/bin');
+INSERT INTO `config` (`id`, `workingDirFullPath`, `hardTimeoutInMs`, `hardCompileTimeoutInMs`, `hardMemoryLimitInKb`, `hardDiskSpaceLimitInKb`, `maxParallelTests`, `maxNumberOfTestsWithOneRequest`, `runner`, `showTestRunnerDebugOutput`, `insertTraceLogs`, `environmentVars`) VALUES
+(1, '/opt/yapex/_tests', 5000, 3000, 2000, 2000, 100, 15, '\"java\" -Dfile.encoding=UTF8 -cp \"/opt/yapex/LinuxSafeTestRunner/src\" Main', 0, 1, 'USER=yapextester\r\nHOME=/home/yapextester\r\nLANG=de_DE.UTF-8\r\nPATH=/usr/local/bin:/usr/bin:/bin');
 
 --
 -- Indizes der exportierten Tabellen
diff --git a/backupDb/0_plangs_server.sql b/backupDb/plangs_linux.sql
similarity index 76%
rename from backupDb/0_plangs_server.sql
rename to backupDb/plangs_linux.sql
index e6ed07b..caab2d6 100644
--- a/backupDb/0_plangs_server.sql
+++ b/backupDb/plangs_linux.sql
@@ -3,9 +3,9 @@
 -- https://www.phpmyadmin.net/
 --
 -- Host: localhost
--- Erstellungszeit: 08. Mai 2019 um 18:36
--- Server-Version: 10.1.37-MariaDB-0+deb9u1
--- PHP-Version: 7.0.33-0+deb9u1
+-- Erstellungszeit: 01. Mrz 2020 um 15:21
+-- Server-Version: 10.1.41-MariaDB-0+deb9u1
+-- PHP-Version: 7.0.33-0+deb9u6
 
 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
 SET time_zone = "+00:00";
@@ -38,8 +38,8 @@ CREATE TABLE `plangs` (
 --
 
 INSERT INTO `plangs` (`internalName`, `compile`, `exec`, `extensions`) VALUES
-('C', '\\\"gcc\\\" \\\"-v\\\" \\\"#5\\\"', '\\\"#1/a.out\\\"', '[\"c\"]'),
-('java', '\\\"javac\\\" \\\"-encoding\\\" \\\"UTF8\\\" \\\"#5\\\"', '\\\"java\\\" \\\"-Dfile.encoding=UTF8\\\" \\\"-cp\\\" \\\"#1\\\" \\\"#2\\\"', '[\"java\"]');
+('c', '\"gcc\" \"#5\"', '\"#1/a.out\"', '[\"c\"]'),
+('java', 'javac -encoding UTF8 #5\"', 'java -Dfile.encoding=UTF8 \"-cp\" \"#1\" \"#2\"', '[\"java\"]');
 
 --
 -- Indizes der exportierten Tabellen
diff --git a/backupDb/traceLog_linux.sql b/backupDb/traceLog_linux.sql
new file mode 100644
index 0000000..940a70f
--- /dev/null
+++ b/backupDb/traceLog_linux.sql
@@ -0,0 +1,58 @@
+-- phpMyAdmin SQL Dump
+-- version 4.6.6deb4
+-- https://www.phpmyadmin.net/
+--
+-- Host: localhost
+-- Erstellungszeit: 01. Mrz 2020 um 15:23
+-- Server-Version: 10.1.41-MariaDB-0+deb9u1
+-- PHP-Version: 7.0.33-0+deb9u6
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+
+--
+-- Datenbank: `yapexTestDb`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `traceLog`
+--
+
+CREATE TABLE `traceLog` (
+  `id` int(11) NOT NULL,
+  `dateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `traceString` text NOT NULL,
+  `processString` text NOT NULL,
+  `sourceCode` mediumtext NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+--
+-- Indizes der exportierten Tabellen
+--
+
+--
+-- Indizes für die Tabelle `traceLog`
+--
+ALTER TABLE `traceLog`
+  ADD PRIMARY KEY (`id`);
+
+--
+-- AUTO_INCREMENT für exportierte Tabellen
+--
+
+--
+-- AUTO_INCREMENT für Tabelle `traceLog`
+--
+ALTER TABLE `traceLog`
+  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/backupDb/1_transactions_server.sql b/backupDb/transactions_linux.sql
similarity index 89%
rename from backupDb/1_transactions_server.sql
rename to backupDb/transactions_linux.sql
index 7d08777..f363bbd 100644
--- a/backupDb/1_transactions_server.sql
+++ b/backupDb/transactions_linux.sql
@@ -3,9 +3,9 @@
 -- https://www.phpmyadmin.net/
 --
 -- Host: localhost
--- Erstellungszeit: 08. Mai 2019 um 18:36
--- Server-Version: 10.1.37-MariaDB-0+deb9u1
--- PHP-Version: 7.0.33-0+deb9u1
+-- Erstellungszeit: 01. Mrz 2020 um 15:22
+-- Server-Version: 10.1.41-MariaDB-0+deb9u1
+-- PHP-Version: 7.0.33-0+deb9u6
 
 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
 SET time_zone = "+00:00";
diff --git a/backupDb/yapexTestDb_server.sql b/backupDb/yapexTestDb_server.sql
new file mode 100644
index 0000000..0c80ecc
--- /dev/null
+++ b/backupDb/yapexTestDb_server.sql
@@ -0,0 +1,137 @@
+-- phpMyAdmin SQL Dump
+-- version 4.6.6deb4
+-- https://www.phpmyadmin.net/
+--
+-- Host: localhost
+-- Erstellungszeit: 01. Mrz 2020 um 15:19
+-- Server-Version: 10.1.41-MariaDB-0+deb9u1
+-- PHP-Version: 7.0.33-0+deb9u6
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+
+--
+-- Datenbank: `yapexTestDb`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `config`
+--
+
+CREATE TABLE `config` (
+  `id` int(11) NOT NULL,
+  `workingDirFullPath` text NOT NULL,
+  `hardTimeoutInMs` int(11) NOT NULL,
+  `hardCompileTimeoutInMs` int(11) NOT NULL,
+  `hardMemoryLimitInKb` int(11) NOT NULL,
+  `hardDiskSpaceLimitInKb` int(11) NOT NULL,
+  `maxParallelTests` int(11) NOT NULL,
+  `maxNumberOfTestsWithOneRequest` int(11) NOT NULL,
+  `runner` text NOT NULL,
+  `showTestRunnerDebugOutput` tinyint(1) NOT NULL DEFAULT '0',
+  `insertTraceLogs` tinyint(1) NOT NULL DEFAULT '1',
+  `environmentVars` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Daten für Tabelle `config`
+--
+
+INSERT INTO `config` (`id`, `workingDirFullPath`, `hardTimeoutInMs`, `hardCompileTimeoutInMs`, `hardMemoryLimitInKb`, `hardDiskSpaceLimitInKb`, `maxParallelTests`, `maxNumberOfTestsWithOneRequest`, `runner`, `showTestRunnerDebugOutput`, `insertTraceLogs`, `environmentVars`) VALUES
+(1, '/opt/yapex/_tests', 5000, 3000, 2000, 2000, 100, 15, '\"java\" -Dfile.encoding=UTF8 -cp \"/opt/yapex/LinuxSafeTestRunner/src\" Main', 0, 1, 'USER=yapextester\r\nHOME=/home/yapextester\r\nLANG=de_DE.UTF-8\r\nPATH=/usr/local/bin:/usr/bin:/bin');
+
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `plangs`
+--
+
+CREATE TABLE `plangs` (
+  `internalName` varchar(100) NOT NULL,
+  `compile` text NOT NULL,
+  `exec` text NOT NULL,
+  `extensions` text NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Daten für Tabelle `plangs`
+--
+
+INSERT INTO `plangs` (`internalName`, `compile`, `exec`, `extensions`) VALUES
+('c', '\"gcc\" \"#5\"', '\"#1/a.out\"', '[\"c\"]'),
+('java', 'javac -encoding UTF8 #5\"', 'java -Dfile.encoding=UTF8 \"-cp\" \"#1\" \"#2\"', '[\"java\"]');
+
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `traceLog`
+--
+
+CREATE TABLE `traceLog` (
+  `id` int(11) NOT NULL,
+  `dateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `traceString` text NOT NULL,
+  `processString` text NOT NULL,
+  `sourceCode` mediumtext NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Tabellenstruktur für Tabelle `transactions`
+--
+
+CREATE TABLE `transactions` (
+  `id` varchar(50) NOT NULL,
+  `rootDirName` varchar(50) NOT NULL,
+  `testType` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+--
+-- Indizes der exportierten Tabellen
+--
+
+--
+-- Indizes für die Tabelle `config`
+--
+ALTER TABLE `config`
+  ADD PRIMARY KEY (`id`);
+
+--
+-- Indizes für die Tabelle `plangs`
+--
+ALTER TABLE `plangs`
+  ADD PRIMARY KEY (`internalName`);
+
+--
+-- Indizes für die Tabelle `traceLog`
+--
+ALTER TABLE `traceLog`
+  ADD PRIMARY KEY (`id`);
+
+--
+-- Indizes für die Tabelle `transactions`
+--
+ALTER TABLE `transactions`
+  ADD PRIMARY KEY (`id`);
+
+--
+-- AUTO_INCREMENT für exportierte Tabellen
+--
+
+--
+-- AUTO_INCREMENT für Tabelle `traceLog`
+--
+ALTER TABLE `traceLog`
+  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=265677;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/config_example.json b/config_example.json
index 67ea510..d032edb 100644
--- a/config_example.json
+++ b/config_example.json
@@ -1,7 +1,7 @@
 {
 
     "dbServer": "localhost:8889",
-    "dbName": "syndromTestDb",
+    "dbName": "yapexTestDb",
     "dbUser": "tester",
     "dbPw": "mysqlpassword2",
     "dbPLangTableName": "plangs",
@@ -12,7 +12,7 @@
 
     "useConfigFromDb": true,
     "dbConfigServer": "localhost:8889",
-    "dbConfigName": "syndromTestDb",
+    "dbConfigName": "yapexTestDb",
     "dbConfigUser": "tester",
     "dbConfigPw": "mysqlpassword2",
     "dbConfigTableName": "config"
diff --git a/readme.md b/readme.md
index d93158a..0f27a47 100644
--- a/readme.md
+++ b/readme.md
@@ -21,6 +21,249 @@ we change the dirs every changeDirIntervalInS s so in case some run is not fully
 
 you need to copy the file `config_example.json` to `config.json` and adjust the settings in it (if needed)
 
+
+
+## Adding a new programming language
+
+To add a new programming language (plang) you need to add the appropriate commands for the plang in the plang table.  
+The plang is then known to the test server and can be used (if you use e.g. yapex client-server then that server needs to be configured separately to handle/know the new plang). 
+
+
+## database scheme / table / commands
+The Server needs a table where the commands are stored.  
+A **command** (actually commands) is used to compile (also syntax check) and execute a users program. 
+Normally this is the shell/cmd command to execute a compiler or interpreter against a given file (or files).
+
+In the dir *backupDb* are some examples that can be imported to a MySql Db.
+
+- `*_server.sql` are dumps from the actual server db
+
+Because there are some specific paths (depending on your setup) you need to adjust these (see the table descriptions below for more info on the columns):
+
+- in the `config` table
+  - `workingDirFullPath`
+  - `runner`
+  - `environmentVars`
+
+- in the `plangs` table
+  - `compile`
+  - `exec`
+
+## PLangs Table
+
+The database needs to contain a table to store this commands (for config see section config.json file, you can specify the table name there but the table needs to exists already).
+The table needs to have the following scheme
+
+internalName (primary key) | compile | exec | extensions
+--- | --- | --- | ---
+(string) | (string) | (string) | (json Array)
+
+* **internalName** - the internal name of the programming language (**this is the primary key**)
+* **compile** - the command (shell/cmd) to execute the compiler (or do a syntax check for most interpreted languages)
+* **exec** - the command (shell/cmd) to execute the users program (some languages requires virtual machines to execute the intermediate code)
+* **extensions** - the extensions of the source files (used to identify source code files so that asset files can be ignored) (a json array so e.g. `["cpp", "h"]`)
+
+The commands will probably require the users files (code). This files can be accessed by special strings (the special strings will be replaces by the value) (all absolute paths includes the file names)
+
+**Ref 1: This is also part of the Runners Interface**  
+*So the test runner must understand this special strings in the compile and exec command!*
+
+* **#1** - contains the absolute directory path where all user files will be stored   
+(without trailing directory separator)
+* **#2** - contains the main file name
+* **#3** - contains the main file name with extension
+* **#4** - contains the main file absolute path
+* **#5** - contains the main file absolute path with extension
+* **#6** - all other files (all user files excluding the main file) names
+* **#7** - all other files (all user files excluding the main file) names with extensions
+* **#8** - all other files (all user files excluding the main file) absolute paths (with file name but without extension)
+* **#9** - all other files (all user files excluding the main file) absolute paths with extension
+
+* **#50** - contains the timeout in ms
+* **#51** - contains the memory limit in kb
+* **#52** - contains the disk space limit in kb (the program can write to)
+
+(So **#1**/**#6** would produce the same result as **#8** when the operating system (os) is unix, escaped: "#1/#6" = "#8")
+
+**Notes**
+
+- all files need an extension else they are ignored
+- if the main file has no extension then code 100 is returned and the program is not compiled/executed  
+- any `compile` and `exec` commands will be executed by the test server (the unix user who executes the test server) BUT they are enclosed in `escapeshellarg` so
+  e.g. set `compile` to `"echo" "$PATH"` then `$PATH` will *NOT* be resolved by unix
+- keep in mind that the `#X` can be expanded to paths and paths with whitespace need to be enclosed in `"..."` so better always put `"` around these
+
+#### Example (windows)
+internalName (primary key) | compile | exec | extensions
+--- | --- | --- | ---
+csharp | C:\Program Files (x86)\Mono\bin\mcs.bat "#5" | C:\Program Files (x86)\Mono\bin\mono "#4.exe"  | ["cs"]
+java | C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\jdk1.8.0_65\bin\javac -encoding UTF8 "#5" | C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\jdk1.8.0_65\bin\java -cp "#1" "#2" | ["java"]
+python | python -m py_compile "#5" | python "#5"  | ["py"]
+php | C:\xampp\php3\php.exe -l "#5" | C:\xampp\php3\php.exe "#5" | ["php"]
+
+#### Example (linux)
+internalName (primary key) | compile | exec | extensions
+--- | --- | --- | --- 
+java | javac -encoding UTF8  "#5" | java -Dfile.encoding=UTF8 -cp "#1" "#2" | ["java"]
+python | python -m py_compile "#5" | python "#5" | ["py"]
+
+
+**All arguments passed to the shell are wrapped by php `escapeshellarg`, Paths (and maybe other arguments) could contain spaces, wrap them inside double quotes `"a name"`**
+
+
+# Transaction table
+
+Columns
+* id - the transaction id (this is a microtime timestamp and with optional request distinction number to help separate two requests in case they arrive at the same time and microtime() returns the same time)
+* rootDirName - the current root dir name (of the current iteration) (this is a string of a timestamp)
+* testType - the test type
+
+id | rootDirName | testType
+--- | --- | ---
+(string) | (string) | (string)
+
+#### Example
+id | rootDirName | testType
+--- | --- | ---
+1480443681_0-04701800_1 | 1473288517 | blackBoxTest
+
+where '1480443681' ist the seconds-part if microtime() timestamp '0-04701800' is the microtime part of microtime() and
+'1' ist the request distinction number
+
+
+# Trace Log table
+
+the trace table is used as a log to trace back running/ran processes and source code in the backend
+
+Columns
+
+- id - an auto incremented id
+- dateTime - the date and time when the entry was added (to later easily delete old entries)
+- traceString - the trace string to trace back the source code in the backend
+- processString - the process string that was executed (to identify the process later)
+- sourceCode - the executed source code of all files
+  - as this can get longer... for mysql mediumtext is recommended
+
+#### Example
+id | dateTime | traceString | processString | sourceCode
+--- | --- | --- | --- | ---
+2 | 2019-11-17 19:54:58 | justRunProgram_executingUser:1_solution::userId:1_releaseId:261_plangId:1_mainFileId:84762 | cmd to execute | ...
+ 
+
+## Config Table
+
+Columns (the same as in the local config except the db specific settings)
+* id (we should have a primary key) (number) the number does not matter
+* workingDirFullPath
+* hardTimeoutInMs
+* hardCompileTimeoutInMs
+* hardMemoryLimitInKb
+* hardMaxDiskSpaceLimitInKb
+* maxParallelTests
+* maxNumberOfTestsWithOneRequest
+* runner (in the db the `"` don't need to be escaped)
+* showTestRunnerDebugOutput (0/1), 0 = false, 1 = true
+* insertTraceLogs (0/1), 0 = false, 1 = true
+* environmentVars
+
+
+#### Example
+
+id | workingDirFullPath | hardTimeoutInMs | hardCompileTimeoutInMs | hardMemoryLimitInKb | hardMaxDiskSpaceLimitInKb | maxParallelTests | maxNumberOfTestsWithOneRequest |runner | showTestRunnerDebugOutput | environmentVars
+--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
+1 | /Users/janis/Documents/Test/ | 4000 | 2000 | 2000 | 2000 | 10 | 15 | "/Users/janis/Misc/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java" -Dfile.encoding=UTF8 -cp "/Users/janis/Documents/Projects/yapexAll/yapex_DefaultTestRunnerFullThreaded/out" Main | 0  USER=yapextester\nHOME=/home/yapextester\nPWD=\nLANG=de_DE.UTF-8\nPATH=/usr/local/bin:/usr/bin:/bin:/ 
+
+
+**Note** that the db config overwrites values in the config file!
+
+## config.json file
+This file is used to configure the server.  
+This file is required!
+You will find the file in the directory `/yapex/TestServer/`
+
+First the `config.json` file is read. If `useConfigFromDb` is set to true then the config from db is read and the settings are overwritten
+
+#### Syntax
+
+A json object with the following properties (order does not matter) 
+* **dbServer** : (string) the server name/ip address of the server where the database is stored
+* **dbName** : (string) the name of the db where the required table is stored
+* **dbPLangTableName**/**dbTableName** : (string) the table name where the commands are stored
+* **dbUser** : (string) the name of the database user to use for quering the database
+* **dbPw** : (string) the password of the database user
+* **dbTransactionTableName** : (string) the table used for the transaction (to ensure the maxParallelTests)
+* **dbTraceTableName** : (string) the trace log table name 
+
+* **useConfigFromDb**: (bool) true: use the config in the database table, false: use the local config file, the `dbConfig*` (and `dbConfigTableName`) settings are used to connect the the mysql db and read the config settings
+* **dbConfigServer**: (string)  -''- but for the config table
+* **dbConfigName** : (string) -''- but for the config table
+* **dbConfigUser** : (string) -''- but for the config table
+* **dbConfigPw** : (string) -''- but for the config table
+* **dbConfigTableName**: (string) the table name with the configuration (the *dbServer* and *dbName* options are used)
+
+the following settings can be set through the db ()`useConfigFromDb` and connected settings) 
+
+
+* **workingDirFullPath** : (string) the path to the directory where the user programs will be tested/saved/executed
+* **hardTimeoutInMs** : (int) the global timeout for all programming languages
+* **hardCompileTimeoutInMs** : (int) the global compile timeout for all programming languages
+* **hardMemoryLimitInKb** - the hard memory limit in kb
+* **hardMaxDiskSpaceLimitInKb** - the hard max disk space limit in kb
+
+* **maxParallelTests**: (int) the max amount of parallel running tests, if more tests are requested they are rejected with an busy error (use this with the hard limits in the db to calculate the max ressource usage), **set this to 0 or a negative value to no limit the amount of parallel tests**
+* **maxNumberOfTestsWithOneRequest**: (int) the number of tests that can be run with one request (only the first X tests will be executed ... the other will be ignored), this is used to limit the time a user can occupy the test server
+
+* **runner** : (string) the shell/cmd command to execute in order to start the Runner (paths with whitespaces needs to be properly escaped via `"path 1"`) (you might need to use absolute paths)  
+  **For Java** you probably want UTF8 encoding... there is a command line argument for that, add  
+  -Dfile.encoding=UTF8  
+  after the java executable (else the user program would be called with utf8 encoding but the test runner cannot handle UTF8)
+  **also do not forget to correctly set the compile and exec commands in the PLang Table (add the -Dfile.encoding=UTF8 there too)!!!**
+  
+* **showTestRunnerDebugOutput**: (int) 0/1, 1: show some internal debug output from the test runner for debugging (sent back as a part of the test response) 
+* **maxLinesToRead**: (int) the total (inclusive) number of lines to read from the user program (-x or 0 for unlimited)
+* **maxErrLinesToRead**: (int) the total (inclusive) number of lines to read from the user program error stream (stderr) (-x or 0 for unlimited)
+* **maxLinesToWrite**: (int) the total (inclusive) number of lines to write to the user program (-x or 0 for unlimited)
+
+* **insertTraceLogs:** (bool) true: trace log entries will be inserted into the trace table, false: not inserted 
+
+* **environmentVars** : (string, \r\n or \n separated, key value pairs are separated by = OR NULL) the environment variables for the test runner. All environment vars are cleared and only these are set (even if this is the empty string). The special delimiters `\n` and `=` must not be used inside keys or values. 
+  The test runner is called and these environment variables are set.
+  You can use `"path""` to escape paths with whitespaces
+  It is recommended that you at least specify the following: `USER, HOME ,PATH`
+  * `USER` is the executing user e.g. `yapextester`
+  * `HOME` is the home path for the executing user e.g. `/home/yapextester`
+  * `LANG` the lang to use (e.g. for default formatting) e.g. `de_DE.UTF-8`
+  * `PATH` are the paths that unix/windows should include when searching for e.g. programs `/usr/local/bin:/usr/bin:/bin:/`
+  **Note** that this is for linux, windows handles environment variables differently (e.g. other multi value  separator than `:`)
+  The test server splits in `\n` and uses these lines as input for proc_open
+  * If the value is `NULL` then the environment variables from the php process are used. However, e.g. fast process manager (fpm) for php will discard environment variables by default. So the result might be different than expected.
+
+If the test server cannot connect to the db then an error (db issue) is returned (so the local config is NOT used!)
+
+If the config table has more than 1 row, the first row is taken!
+
+#### Example
+```json
+{
+    "workingDirFullPath": "C:\\Users\\theju\\yapexTetsts",
+    "dbServer": "localhost",
+    "dbName": "yapexTestDb",
+    "dbUser": "root",
+    "dbPw": "admin",
+    "dbPLangTableName": "plangs",
+    "dbTransactionTableName": "transactions",
+    "maxParallelTests": 50,
+    "hardTimeoutInMs": 4000,
+    "hardCompileTimeoutInMs": 4000,
+    "hardMemoryLimitInKb": 2000,
+    "hardMaxDiskSpaceLimitInKb": 2000,
+    "maxNumberOfTestsWithOneRequest": 20,
+    "runner": "\"C:\\Program Files (x86)\\JetBrains\\IntelliJ IDEA 14.1.4\\jdk1.8.0_65\\bin\\java\" -cp \"C:\\Users\\theju\\Documents\\WebProjects\\yapexAll\\DefaultTestRunner\\out\\production\\DefaultTestRunner\" Main",
+    
+    "environmentVars": "USER=yapextester\nHOME=/home/yapextester\nLANG=de_DE.UTF-8\nPATH=/usr/local/bin:/usr/bin:/bin:/"
+}
+```
+
 ## default workflow
 
 * The Server receives a request
@@ -42,26 +285,30 @@ you need to copy the file `config_example.json` to `config.json` and adjust the
 ### syntax
 The request is a json object so the request should be from mime type application/json.  
 
-* **command**: (string) the command to call/execute
-* **requestDistinctionString**: (string, only letters, numbers, underscores --> should be a valid file/dir name)  a number to help the this server to separate two requests in case they arrive at the same time (and microtime() would return the same value)
-* **plang**: (string) the programming language to use (depends on the database table see database scheme / table /commands)
-* **mainFileNameWithExtension**: (string) the file with the main class / entry point 
-* **testContents**: (array of objects) an array of tests  
-  * **id** (int) is the id of the test to identify the test (and the related result)
-  * **content** (string/multi line string) the test content to use (depends on the used command) [MUST NO BE EMPTY (design decision)]
-  * **assets** (array) the files (assets) for the test
-    * **fileName** (string) the file name for the asset. 
-      * **note** that the file name must not contain the following characters: ` ` (whitespace), `:`
-      * also all files need to have an extension (x.y)  
-    * **fileContent** (string) the content of the asset (base64 encoded)
-    * **hash** (string/null) the md5 hash of the content (can be null if not calculated)
-      * but the test runner **will not accept null** as hash (for now)
-* **timeoutInMs**: (int) the timeout in ms for execution to wait before terminating the users program
-* **compileTimeoutInMs** (int) the timeout in ms for compilation to wait before terminating the compiling
-* **memoryLimitInKb**: (int) the max memory in kb the users program can use 
-* **maxDiskSpaceInKb**: (int) the max disk space in kb the users program can write to
-* **allFiles**: (array) the files to use
-* **traceString**: (string) a string to trace back the source code in the backend (in case a process won't finish we can find the source code with this)
+- **plang**: (string) the programming language to use (depends on the database table see database scheme / table / commands)
+- **allFiles**: (array) the files to use
+  - **fileName**: (string) the file name with extension
+  - **fileContent**: (string) the file content
+- **mainFileNameWithExtension**: (string) the file with the main class / entry point
+- **tests**: (array) the tests to execute
+  - **testId**: (int) is the id of the test to identify the test (and the related result)
+  - **testContent** (string/multi line string) the test content to use (depends on the used command) [MUST NO BE EMPTY (design decision)]
+  - **command**: (string) the command to call/execute (the test type e.g. blackBoxTest), see `constants.php > $s_supportedCommands` for supported test types
+  - **timeoutInMs**: (int) the timeout in ms for execution to wait before terminating the users program
+  - **compileTimeoutInMs** (int) the timeout in ms for compilation to wait before terminating the compiling
+  - **memoryLimitInKb**: (int) the max memory in kb the users program can use 
+  - **maxDiskSpaceInKb**: (int) the max disk space in kb the users program can write to
+  - **compilerOptions**: (string) options to pass to the compiler e.g.  -Xlint, multiple needs to be separated by whitespace
+  - **allAssets**: (array) the assets/files for the test
+    - **fileName** (string) the file name for the asset
+      - **note** that the file name must not contain the following characters: ` ` (whitespace), `:`, also all files need to have an extension (x.y)  
+    - **fileContent** (string) the content of the asset (base64 encoded)
+    - **hash** (string/null) the md5 hash of the content (can be null if not calculated)
+
+- **requestDistinctionString**: (string, only letters, numbers, underscores --> should be a valid file/dir name)  a number to help the this server to separate two requests in case they arrive at the same time (and microtime() would return the same value)
+- **characterLimitProtocol**: (int) the max test protocol string length the test runner should return
+- **traceString**: (string) a string to trace back the source code in the backend (in case a process won't finish we can find the source code with this)
+
 
 ### example
 ```json
@@ -314,234 +561,6 @@ cexpected [line nr] [line]
 
 For the test input protocol see the section "Test Runner Interface"
 
-## Adding a new programming language
-
-To add a new programming language (plang) you need to add the appropriate commands for the plang in the plang table.  
-The plang is then known to the test server and can be used (if you use e.g. syndrom client-server then that server needs to be configured separately to handle/know the new plang). 
-
-
-
-## database scheme / table /commands
-The Server needs a table where the commands are stored.  
-A **command** (actually commands) is used to compile (also syntax check) and execute a users program. 
-Normally this is the shell/cmd command to execute a compiler or interpreter against a given file (or files).
-
-In the dir *backupDb* are some examples that can be imported to a MySql Db.
-
-## PLang Table
-
-The database needs to contain a table to store this commands (for config see section config.json file, you can specify the table name there but the table needs to exists already).
-The table needs to have the following scheme
-
-internalName (primary key) | compile | exec | extensions
---- | --- | --- | --- | --- | --- | ---
-(string) | (string) | (string) | (json Array)
-
-* **internalName** - the internal name of the programming language (**this is the primary key**)
-* **compile** - the command (shell/cmd) to execute the compiler (or do a syntax check for most interpreted languages)
-* **exec** - the command (shell/cmd) to execute the users program (some languages requires virtual machines to execute the intermediate code)
-* **extensions** - the extensions of the source files (used to identify source code files so that asset files can be ignored) (a json array so e.g. `["cpp", "h"]`)
-
-The commands will probably require the users files (code). This files can be accessed by special strings (the special strings will be replaces by the value) (all absolute paths includes the file names)
-
-**Ref 1: This is also part of the Runners Interface**  
-*So the test runner must understand this special strings in the compile and exec command!*
-
-* **#1** - contains the absolute directory path where all user files will be stored   
-(without trailing directory separator)
-* **#2** - contains the main file name
-* **#3** - contains the main file name with extension
-* **#4** - contains the main file absolute path
-* **#5** - contains the main file absolute path with extension
-* **#6** - all other files (all user files excluding the main file) names
-* **#7** - all other files (all user files excluding the main file) names with extensions
-* **#8** - all other files (all user files excluding the main file) absolute paths (with file name but without extension)
-* **#9** - all other files (all user files excluding the main file) absolute paths with extension
-
-* **#50** - contains the timeout in ms
-* **#51** - contains the memory limit in kb
-* **#52** - contains the disk space limit in kb (the program can write to)
-
-(So **#1**/**#6** would produce the same result as **#8** when the operating system (os) is unix, escaped: "#1/#6" = "#8")
-
-**Notes**
-
-- all files need an extension else they are ignored
-- if the main file has no extension then code 100 is returned and the program is not compiled/executed  
-- any `compile` and `exec` commands will be executed by the test server (the unix user who executes the test server) BUT they are enclosed in `escapeshellarg` so
-  e.g. set `compile` to `"echo" "$PATH"` then `$PATH` will *NOT* be resolved by the unix
-
-#### Example (windows)
-internalName (primary key) | compile | exec | extensions
---- | --- | --- | ---
-csharp | C:\Program Files (x86)\Mono\bin\mcs.bat "#5" | C:\Program Files (x86)\Mono\bin\mono "#4.exe"  | ["cs"]
-java | C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\jdk1.8.0_65\bin\javac -encoding UTF8 "#5" | C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\jdk1.8.0_65\bin\java -cp "#1" "#2" | ["java"]
-python | python -m py_compile "#5" | python "#5"  | ["py"]
-php | C:\xampp\php3\php.exe -l "#5" | C:\xampp\php3\php.exe "#5" | ["php"]
-
-#### Example (linux)
-internalName (primary key) | compile | exec | extensions
---- | --- | --- | --- 
-java | javac -encoding UTF8  "#5" | java -Dfile.encoding=UTF8 -cp "#1" "#2" | ["java"]
-python | python -m py_compile "#5" | python "#5" | ["py"]
-
-
-**All arguments passed to the shell are wrapped by php `escapeshellarg`, Paths (and maybe other arguments) could contain spaces, wrap them inside double quotes `"a name"`**
-
-
-# Transaction table
-
-Columns
-* id - the transaction id (this is a microtime timestamp and with optional request distinction number to help separate two requests in case they arrive at the same time and microtime() returns the same time)
-* rootDirName - the current root dir name (of the current iteration) (this is a string of a timestamp)
-* testType - the test type
-
-id | rootDirName | testType
---- | --- | ---
-(string) | (string) | (string)
-
-#### Example
-id | rootDirName | testType
---- | --- | ---
-1480443681_0-04701800_1 | 1473288517 | blackBoxTest
-
-where '1480443681' ist the seconds-part if microtime() timestamp '0-04701800' is the microtime part of microtime() and
-'1' ist the request distinction number
-
-
-# Trace Log table
-
-the trace table is used as a log to trace back running/ran processes and source code in the backend
-
-Columns
-
-- id - an auto incremented id
-- dateTime - the date and time when the entry was added (to later easily delete old entries)
-- traceString - the trace string to trace back the source code in the backend
-- processString - the process string that was executed (to identify the process later)
-- sourceCode - the executed source code of all files
-  - as this can get longer... for mysql mediumtext is recommended
-
-#### Example
-id | dateTime | traceString | processString | sourceCode
---- | --- | --- | --- | ---
-2 | 2019-11-17 19:54:58 | justRunProgram_executingUser:1_solution::userId:1_releaseId:261_plangId:1_mainFileId:84762 | cmd to execute | ...
- 
-
-## Config Table
-
-Columns (the same as in the local config except the db specific settings)
-* id (we should have a primary key) (number) the number does not matter
-* workingDirFullPath
-* hardTimeoutInMs
-* hardCompileTimeoutInMs
-* hardMemoryLimitInKb
-* hardMaxDiskSpaceLimitInKb
-* maxParallelTests
-* maxNumberOfTestsWithOneRequest
-* runner (in the db the `"` don't need to be escaped)
-* showTestRunnerDebugOutput (0/1)
-* maxLinesToRead
-* maxErrLinesToRead
-* maxLinesToWrite
-* environmentVars
-
-
-#### Example
-
-id | workingDirFullPath | hardTimeoutInMs | hardCompileTimeoutInMs | hardMemoryLimitInKb | hardMaxDiskSpaceLimitInKb | maxParallelTests | maxNumberOfTestsWithOneRequest |runner | showTestRunnerDebugOutput | maxLinesToRead | maxErrLinesToRead | maxLinesToWrite | environmentVars
---- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- 
-1 | /Users/janis/Documents/Test/ | 4000 | 2000 | 2000 | 2000 | 10 | 15 | "/Users/janis/Misc/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java" -Dfile.encoding=UTF8 -cp "/Users/janis/Documents/Projects/SyndromAll/Syndrom_DefaultTestRunnerFullThreaded/out" Main | 0 | 500 | 500 | 500 | USER=yapextester\nHOME=/home/yapextester\nPWD=\nLANG=de_DE.UTF-8\nPATH=/usr/local/bin:/usr/bin:/bin:/ 
-
-
-
-## config.json file
-This file is used to configure the server.  
-This file is required!
-You will find the file in the directory `/syndromtests/TestServer/`
-
-First the `config.json` file is read. If `useConfigFromDb` is set to true then the config from db is read and the settings are overwritten
-
-#### Syntax
-
-A json object with the following properties (order does not matter) 
-* **dbServer** : (string) the server name/ip address of the server where the database is stored
-* **dbName** : (string) the name of the db where the required table is stored
-* **dbPLangTableName**/**dbTableName** : (string) the table name where the commands are stored
-* **dbUser** : (string) the name of the database user to use for quering the database
-* **dbPw** : (string) the password of the database user
-* **dbTransactionTableName** : (string) the table used for the transaction (to ensure the maxParallelTests)
-* **dbTraceTableName** : (string) the trace log table name 
-
-* **useConfigFromDb**: (bool) true: use the config in the database table, false: use the local config file, the `dbConfig*` (and `dbConfigTableName`) settings are used to connect the the mysql db and read the config settings
-* **dbConfigServer**: (string)  -''- but for the config table
-* **dbConfigName** : (string) -''- but for the config table
-* **dbConfigUser** : (string) -''- but for the config table
-* **dbConfigPw** : (string) -''- but for the config table
-* **dbConfigTableName**: (string) the table name with the configuration (the *dbServer* and *dbName* options are used)
-
-the following settings can be set through the db ()`useConfigFromDb` and connected settings) 
-
-
-* **workingDirFullPath** : (string) the path to the directory where the user programs will be tested/saved/executed
-* **hardTimeoutInMs** : (int) the global timeout for all programming languages
-* **hardCompileTimeoutInMs** : (int) the global compile timeout for all programming languages
-* **hardMemoryLimitInKb** - the hard memory limit in kb
-* **hardMaxDiskSpaceLimitInKb** - the hard max disk space limit in kb
-
-* **maxParallelTests**: (int) the max amount of parallel running tests, if more tests are requested they are rejected with an busy error (use this with the hard limits in the db to calculate the max ressource usage), **set this to 0 or a negative value to no limit the amount of parallel tests**
-* **maxNumberOfTestsWithOneRequest**: (int) the number of tests that can be run with one request (only the first X tests will be executed ... the other will be ignored), this is used to limit the time a user can occupy the test server
-
-* **runner** : (string) the shell/cmd command to execute in order to start the Runner (paths with whitespaces needs to be properly escaped via `"path 1"`) (you might need to use absolute paths)  
-  **For Java** you probably want UTF8 encoding... there is a command line argument for that, add  
-  -Dfile.encoding=UTF8  
-  after the java executable (else the user program would be called with utf8 encoding but the test runner cannot handle UTF8)
-  **also do not forget to correctly set the compile and exec commands in the PLang Table (add the -Dfile.encoding=UTF8 there too)!!!**
-  
-* **showTestRunnerDebugOutput**: (int) 0/1, 1: show some internal debug output from the test runner for debugging (sent back as a part of the test response) 
-* **maxLinesToRead**: (int) the total (inclusive) number of lines to read from the user program (-x or 0 for unlimited)
-* **maxErrLinesToRead**: (int) the total (inclusive) number of lines to read from the user program error stream (stderr) (-x or 0 for unlimited)
-* **maxLinesToWrite**: (int) the total (inclusive) number of lines to write to the user program (-x or 0 for unlimited)
-
-* **insertTraceLogs:** (bool) true: trace log entries will be inserted into the trace table, false: not inserted 
-
-* **environmentVars** : (string, \r\n or \n separated, key value pairs are separated by = OR NULL) the environment variables for the test runner. All environment vars are cleared and only these are set (even if this is the empty string). The special delimiters `\n` and `=` must not be used inside keys or values. 
-  The test runner is called and these environment variables are set.
-  You can use `"path""` to escape paths with whitespaces
-  It is recommended that you at least specify the following: `USER, HOME ,PATH`
-  * `USER` is the executing user e.g. `yapextester`
-  * `HOME` is the home path for the executing user e.g. `/home/yapextester`
-  * `LANG` the lang to use (e.g. for default formatting) e.g. `de_DE.UTF-8`
-  * `PATH` are the paths that unix/windows should include when searching for e.g. programs `/usr/local/bin:/usr/bin:/bin:/`
-  **Note** that this is for linux, windows handles environment variables differently (e.g. other multi value  separator than `:`)
-  The test server splits in `\n` and uses these lines as input for proc_open
-  * If the value is `NULL` then the environment variables from the php process are used. However, e.g. fast process manager (fpm) for php will discard environment variables by default. So the result might be different than expected.
-
-If the test server cannot connect to the db then an error (db issue) is returned (so the local config is NOT used!)
-
-If the config table has more than 1 row, the first row is taken!
-
-#### Example
-```json
-{
-    "workingDirFullPath": "C:\\Users\\theju\\syndromTetsts",
-    "dbServer": "localhost",
-    "dbName": "syndromTestDb",
-    "dbUser": "root",
-    "dbPw": "admin",
-    "dbPLangTableName": "plangs",
-    "dbTransactionTableName": "transactions",
-    "maxParallelTests": 50,
-    "hardTimeoutInMs": 4000,
-    "hardCompileTimeoutInMs": 4000,
-    "hardMemoryLimitInKb": 2000,
-    "hardMaxDiskSpaceLimitInKb": 2000,
-    "maxNumberOfTestsWithOneRequest": 20,
-    "runner": "\"C:\\Program Files (x86)\\JetBrains\\IntelliJ IDEA 14.1.4\\jdk1.8.0_65\\bin\\java\" -cp \"C:\\Users\\theju\\Documents\\WebProjects\\SyndromeAll\\DefaultTestRunner\\out\\production\\DefaultTestRunner\" Main",
-    
-    "environmentVars": "USER=yapextester\nHOME=/home/yapextester\nLANG=de_DE.UTF-8\nPATH=/usr/local/bin:/usr/bin:/bin:/"
-}
-```
 
 ## Test Methods
 
-- 
GitLab