Skip to content

Commit

Permalink
0.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Gematik-Entwicklung committed Nov 8, 2024
1 parent 10313e8 commit 108b96b
Show file tree
Hide file tree
Showing 20 changed files with 338 additions and 121 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@
**/target
logs/
*.tgr

jenkinsfiles



5 changes: 2 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
#
# Docker Rules from https://wiki.gematik.de/display/DEV/Docker+Rules

FROM maven:3.9.9-eclipse-temurin-17-focal
RUN apt-get update
FROM maven:3-eclipse-temurin-21-alpine

ARG COMMIT_HASH
ARG VERSION
Expand All @@ -27,7 +26,7 @@ LABEL de.gematik.git-repo-name="https://gitlab.prod.ccs.gematik.solutions/git/Te
LABEL de.gematik.commit-sha=$COMMIT_HASH
LABEL de.gematik.version=$VERSION

RUN mkdir -p /.m2/repository && chown -R $USERID:$GROUPID /.m2/repository
RUN mkdir -p /.m2/repository && chown -R "$USERID":"$GROUPID" /.m2/repository

WORKDIR /app

Expand Down
55 changes: 26 additions & 29 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,23 +48,22 @@ The release of the final version is expected on the 1st of December 2024.
Vorab-Version der KOB-Testsuite.
Dies ist die Testsuite, mit welcher die Konformitätsbestätigung der gematik für EPA 3.0 erreicht werden kann.

Momentan sind nur die verpflichtenden Tests implementiert.
Die optionalen Tests sind vorhanden, aber noch nicht in einem aufgeräumten Zustand.
In näherer Zukunft werden diese Tests auch in einen voll automatisierbaren Zustand gebracht, sodass automatisierbar Regressionstests durchgeführt werden können.
Es ist der verpflichtende KOB-Test sowie optionale Tests vorhanden.
In näherer Zukunft werden diese Tests mittels Testtreiber Schnittstelle auch in einen voll automatisierbaren Zustand gebracht, sodass automatisierbar Regressionstests durchgeführt werden können.

[IMPORTANT]
====
Dies ist eine Vorab-Version der KOB-Testsuite.
Feedback und Anregungen sind willkommen und werden geschätzt.
Bitte wenden Sie sich an die Projektpfleger.
Die Veröffentlichung der endgültigen Version ist für den 1. Dezember 2024 geplant.
====

[WARNING]
====
Für eine ordnungsgemäße Ausführung der KOB-Testsuite dürfen nur bestimmte Dateien angepasst werden.
Diese sind:
* `kob.yaml` (Konfiguration der Testsuite) * `dc-testsuite.yml` (Konfiguration des Docker-Containers) * `.env` (Konfiguration des Docker-Containers)
* `kob.yaml` (Konfiguration der Testsuite)
* `dc-testsuite.yml` (Konfiguration des Docker-Containers)
* `.env` (Konfiguration des Docker-Containers)
Alle übrigen Dateien dürfen nicht verändert werden!
====
Expand All @@ -87,24 +86,29 @@ Es gibt keine Vorgabe WIE diese Umleitung erfolgen muss, zwei Wege scheinen jedo
=== Forward Proxy

Zunächst einmal kann der Tiger-Proxy schlicht als Forward-Proxy für das Primärsystem eingerichtet werden.
Die Routen sind entsprechend konfiguriert so das der Verkehr hier an die korrekten Aktensysteme weitergeleitet werden.
Die Routen sind entsprechend konfiguriert, so das der Verkehr hier an die korrekten Aktensysteme weitergeleitet werden.

=== DNS Manipulation

Alternativ kann die DNS-Auflösung beeinflusst werden.
Am trivialsten gelingt das z.b. mit der hosts.txt.
Hier werden die Hostnamen der Aktensysteme auf die IP-Adresse des Tiger-Proxy (127.0.0.1) umgeleitet.
Der Tiger-Proxy kann dann die Anfragen an die korrekten Aktensysteme weiterleiten.
Alternativ kann die DNS-Auflösung beeinflusst werden, z.B. über das Editieren der Host Einträge im Testsystem selbst (e.g. /etc/hosts)

=== Mock-Servers (epa-deployment)
Beispiel, wenn das Primärsystem auf dem gleichen Rechner läuft, wie die Testsuite mit dem Tiger-Proxy.

Momentan ist die KOB-Suite für eine Ausführung gegen die Mock-Server aus dem epa-deployment gebaut.
Die Routen für die Aktensysteme werden entsprechend nicht auf die echten Aktensysteme weiter geleitet, sondern auf die Mock-Server.
Hier ergibt sich aber eine Port-Kollision: Der Port 443 wird sowohl für die Mock-Server als auch für den Tiger-Proxy des epa-deployment benötigt.
[source,shell]
----
127.0.0.1 epa-as-1.dev.epa4all.de
127.0.0.1 epa-as-2.dev.epa4all.de
127.0.0.1 idp-ref.zentral.idp.splitdns.ti-dienste.de
----

Die Lösung ist hier, einfach das epa-deployment auf einem anderen Port zu starten.
Hierzu muss dort in der `.env`-Datei der Port für den Tiger-Proxy angepasst werden: `EPA_PORT=8443`. Dieser Port
findet sich in der `kob.yaml`-Datei unter `kob.asurl` wieder.
Hier werden die Hostnamen der Aktensysteme (und ggf. auch des zentralen IDP) auf die IP-Adresse des Testrechners, wo der Tiger-Proxy mit dem Port 443 läuft, umgeleitet.
Der Tiger-Proxy kann dann die Anfragen an die korrekten Aktensysteme weiterleiten. Wichtig ist hier bei auch, dass in dem äußeren HTTP-Request auch der HTTP header "Host" für die Anfrage an das entsprechende Aktensystem gesetzt ist, damit Tiger-Proxy die Anfrage entsprechend nach dem Mitschnitt weiterleiten kann.

Beispiel für den HTTP Header, damit Tiger-Proxy korrekt routen kann.
[source,httprequest]
----
Host: epa-as-1.dev.epa4all.de
----

== Ausführung

Expand All @@ -113,27 +117,22 @@ Die KOB-Testsuite kann entweder lokal (per Maven) oder in einem Docker-Container
=== Lokal (Maven)

Die Testsuite kann lokal mit Maven ausgeführt werden.
Dazu reicht ein einfaches `mvn clean install` im Root-Verzeichnis des Projekts.
Dazu reicht ein einfaches Kommando `mvn clean install` im Root-Verzeichnis des Projekts.
Um nur die Testfälle für die KOB EPA 3.0 auszuführen, kann der Befehl `mvn clean install -Dcucumber.filter.tags="@KOB"` verwendet werden.
Ohne diesen Filter werden alle Tests ausgeführt.

=== Lokal (Docker)

In dieser Vorab-Version gibt es noch kein offiziell verfügbares Docker-Image, daher muss das Image selber gebaut werden.
Erst dann kann die Testsuite gestartet werden.
Die Testsuite kann mit einem Docker-Compose gestartet werden.
Diese Variante startet per Default momentan nur die verpflichtenden KOB-Testfälle. Siehe dc-testsuite.yml.

[source,bash]
----
docker build --tag 'kob-testsuite' . && docker-compose -f dc-testsuite.yml up
docker compose -f dc-testsuite.yml up
----

Die Testergebnisse sind dann unter `target/site/serenity/index.html` zu finden.

Die Docker-Compose-Variante startet per Default momentan nur die verpflichtenden KOB-Testfälle.

In der ersten Ausführung werden alle benötigten Artefakte für den Bau frisch aus dem Internet geladen, was eine Zeit dauern kann.
In den folgenden Ausführungen wird dann nur noch das gebaute Image gestartet, was die Startzeit signifikant verkürzt.

[NOTE]
====
Die Docker-Compose-Datei sowie die .env-Datei können angepasst werden, um die Testsuite zu konfigurieren.
Expand Down Expand Up @@ -162,8 +161,6 @@ Entsprechend muss dieses Zertifikat im Truststore des Primärsystems eingepflegt

Hier eine Übersicht über die wichtigsten Änderungen, die wir planen. Wenn Sie hier Dinge vermissen oder Anregungen haben, melden Sie sich bitte bei uns!

* Adaption der echten Aktensysteme. Die Grundlagen sind gelegt, aber Anpassungen werden notwendig sein.
* Verwendung von "echten" Zertifikaten, die aus einer RU-CA stammen. (Dies macht das patchen des Truststores überflüssig)
* Automatisierung der optionalen Tests. Hierfür werden ggf Anpassungen der Testtreiberschnittstelle notwendig sein. Diese Änderungen werden aber NICHT mit den verpflichtenden Tests kollidieren. Sprich: Die jetzt existierende Schnittstelle wird aller Voraussicht nach bis zur KOB 3.0 unverändert bleiben.
* Deployen des Docker Images
* Einbau einer Test-REST-API in Tiger-Testsuite, um eine bessere Integration in CI/CD-Pipelines zu ermöglichen.
6 changes: 6 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

# Release Notes KOB Testsuite

## Release 0.6.0

* Update Tiger Libs to v3.4.4
* Use docker image for kob-testsuite from DockerHub
* Added more details to ReadMe

## Release 0.5.0

* Initial Release
8 changes: 4 additions & 4 deletions dc-testsuite.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
version: "3.8"

name: dc-testsuite-kob
services:
kob-testsuite:
image: kob-testsuite
image: gematik1/kob-testsuite:0.6.0
container_name: kob-testsuite
environment:
- KOB_STARTBROWSER=false
- KOB_PSURL=http://host.docker.internal:8080
- KOB_ASURL=https://host.docker.internal:8443
- KOB_PSURL=http://host.docker.internal:8080 # URL to connect PS with test driver interface if available
- KOB_ASURL=https://host.docker.internal:8443 # ULR to connect ePA mock services to run tests, e.g. vau handshake test
ports:
- "9010:9010"
- "9011:9011"
- "443:443"
volumes:
- kob-testsuite-maven:/.m2
- ./:/app
command: 'mvn verify -Dcucumber.filter.tags="@KOB"'

Expand Down
6 changes: 0 additions & 6 deletions jenkinsfiles/github_publish.jenkinsfile

This file was deleted.

7 changes: 0 additions & 7 deletions jenkinsfiles/github_pull.jenkinsfile

This file was deleted.

4 changes: 0 additions & 4 deletions jenkinsfiles/github_tag.jenkinsfile

This file was deleted.

10 changes: 5 additions & 5 deletions kob.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
kob:
# Die URL der Testtreiberschnittelle des Primärsystems
# Die URL der Testtreiberschnittstelle des Primärsystems
psurl: "http://localhost:8080"
# Die URL der Mock-Aktensysteme. Standard ist 127.0.0.1, für docker-runs sollte host.docker.internal verwendet werden.
asurl: "https://localhost:8443"
# Soll die Testtreiberschnittelle des Primärsystems verwendet werden?
# Soll die Testtreiberschnittstelle des Primärsystems verwendet werden?
# Wenn false, dann werden in der WebUI Nachrichten angezeigt, die
# beschreiben was der Tester im Primärsystem machen soll.
useTestdriverApi: true
# beschreiben, was der Tester im Primärsystem machen soll.
useTestdriverApi: false
# Soll der Test headless, also ohne visuelle Überwachung im Browser, durchgeführt werden?
useBrowser: true
# Die KVNR, mit welcher die KOB durchgeführt werden soll.
kvnr: "Z1234567891"
kvnr: "Z123456783"
# Welcher Typ von EML soll heruntergeladen werden ('XHTML', 'PDF', 'FHIR')
emltype: "PDF"

Expand Down
Loading

0 comments on commit 108b96b

Please sign in to comment.