From 5d876bcded743be7ffc8f4e02ed520be98e25ca5 Mon Sep 17 00:00:00 2001
From: Daniel <daniel@harvey>
Date: Thu, 13 Aug 2020 07:57:28 +0200
Subject: [PATCH] ENH: Added MariaDB Docker option to test targets in makefile.

---
 CHANGELOG.md                     |  3 +++
 makefile                         | 18 ++++++++++++++++++
 tests/docker_env/.config         | 11 +++++++++++
 tests/docker_env/config.defaults |  1 +
 4 files changed, 33 insertions(+)
 create mode 100644 tests/docker_env/.config
 create mode 120000 tests/docker_env/config.defaults

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 823a7d3..4dedd48 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -39,6 +39,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
     `get_head_version`, `get_head_relative`, `get_version_history`.
   The versions are tracked internally by the `_iversion` field which is an
   integer and which should not be used outside of the backend.
+* New makefile targets for testing with MariaDB instance from Docker image: call
+  `make test-docker` to temporarily start a Docker container with MariaDB which
+  will be used for the unit tests.
 
 ### Changed ###
 
diff --git a/makefile b/makefile
index 0c9ddab..ddac9ed 100644
--- a/makefile
+++ b/makefile
@@ -51,3 +51,21 @@ drop-%:
 .PHONY: test
 test:
 	./utils/make_db test --fresh
+
+# Run tests with a database which is started in a Docker container
+.PHONY: test-docker
+test-docker:
+	@docker kill caosdb-mysqlserver-test || true
+	@docker container rm caosdb-mysqlserver-test || true
+	@docker run --name caosdb-mysqlserver-test -p "3306:3306" \
+		-e MYSQL_ROOT_PASSWORD="pass-for-test" -d mariadb
+	@sleep 10
+	MAINPATH=$(realpath tests/docker_env) utils/make_db test --fresh
+	@docker kill caosdb-mysqlserver-test
+	@docker container rm caosdb-mysqlserver-test
+
+# if automatic stopping failed
+.PHONY: test-docker-stop
+test-docker-stop:
+	docker kill caosdb-mysqlserver-test
+	docker container rm caosdb-mysqlserver-test
diff --git a/tests/docker_env/.config b/tests/docker_env/.config
new file mode 100644
index 0000000..393b835
--- /dev/null
+++ b/tests/docker_env/.config
@@ -0,0 +1,11 @@
+# Config for tests with a Docker SQL server
+
+# The host of the MySQL server.
+MYSQL_HOST=127.0.0.1
+# The port number of the MySQL server.
+MYSQL_PORT=3306
+# The user for the installation. Note: This is not the user
+# which will then be used by the CaosDB Server.
+MYSQL_USER=root
+MYSQL_USER_PASSWORD=pass-for-test
+DATABASE_USER_HOST_LIST=127.0.0.1,%,
\ No newline at end of file
diff --git a/tests/docker_env/config.defaults b/tests/docker_env/config.defaults
new file mode 120000
index 0000000..149ebfc
--- /dev/null
+++ b/tests/docker_env/config.defaults
@@ -0,0 +1 @@
+../../config.defaults
\ No newline at end of file
-- 
GitLab