Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dette program kan anvendes til at generere data, der indsættes i databasen for servicen. Genereret data indeholder tilfældige værdier, men i størrelser og mængder der svarer til realistiske data.
Booleans udfyldes tilfældigt med true eller false. Strings udfyldes som udgangspunkt med 20 tilfældige tegn, medmindre længden af database-kolonnen er mindre. Datetimes udfyldes med en tilfældig værdi inden for et specificeret interval.
Længere nede beskrives hvordan mængden af data konfigureres.

Byggevejledning

Programmet er lavet som et yderligere Maven-modul kaldet “odr-test-data-creator” i det overordnede projekt for servicen. Det bygges derved som en del af hele servicen (tests kan springes over) vha.:

Code Block
mvn clean install -DskipTests

Det resulterende artefakt er en jar-fil, som har andre af projektets moduler som dependencies, og derfor skal hele projektet bygges.

Kør programmet

Når projektet er bygget kan programmet afvikles som en almindelig jar-fil vha.:

Code Block
java -jar odr-test-data-generator/target/odr-test-data-creator-*.jar

Eller hvis “working directory” indeholder jar-filen:

Code Block
java -jar odr-test-data-creator-*.jar

Programmet konfigureres vha. en application.yml-fil, som programmet finder vha. Spring Boot’s mekanisme til at fremsøge en konfigurationsfil. En mulighed er at placere filen i det “working directory” som programmet køres fra. Filen indeholder properties i YAML-syntax. I jar-filen er der pakket en standard-konfiguration med, men enten enkelte eller alle properties kan overskrives ved at angive dem i en application.yml-fil.

Der skal konfigureres en datasource, som programmet anvender JDBC til at forbinde til databasen med, vha. følgende properties:

Code Block
languageyml
datasource-odr:
  driver-class-name: "com.mysql.jdbc.Driver"
  url: "jdbc:mysql://localhost/organDonor"
  username: "odr_user"
  password: "Password1"

Jar-filen indeholder MySQL Connector/J, men hvis der ønskes en anden driver (som så skal inkluderes på classpath), kan det konfigureres vha. følgende property:

Code Block
languageyml
datasource-odr:
  driver-class-name: "com.mysql.jdbc.Driver"

Der skal suppleres en person-file.txt-fil, der indlæses personnumre fra, som anvendes som udgangspunkt for data-oprettelsen. En mulighed er at placere filen i det “working directory” som programmet køres fra. Stien til filen kan konfigureres vha. følgende property:

Code Block
languageyml
data-creator-properties:
  person-file-name: "person-file.txt"

Logs

Når programmet køres skrives der roterende logfiler i mappen “./logs/”. Derudover logges status for afviklingen i både console og i logfiler. Programmets konfiguration (datasource undtaget) logges ved opstart.

Konfiguration af datamængder

Typer

For hvert suppleret personnummer oprettes én række i databasen for hver datatype.
Programmet har følgende datatyper: odr

Datoer

For hver datatype kan der konfigureres et datointerval for oprettelsen af dataen. Dvs. at der genereres et tilfældigt tidspunkt indenfor intervallet for hver række af data der oprettes, og dette tidspunkt anvendes som rækkens validFrom og modifiedDateTime. Formålet er at kunne simulere data oprettet over eksempelvis en årrække.

Opdateringer

For hver datatype kan der konfigureres en sandsynlighed for at en række er blevet opdateret (dvs. at der er oprettet en ny række og den gamle er markeret forældet). Denne sandsynlighed anvendes også som faktor for om rækken er blevet opdateret 2. gang og 3. gang osv. Eksempelvis hvis sandsynligheden er konfigureret til 10 procent, så vil der være 10 procent chance for at der oprettes endnu en række (med opdaterede værdier) for en række. Dernæst vil der være 10 procent chance for at der igen oprettes endnu en række (med opdaterede værdier) for den opdaterede række osv.
Hver opdatering resulterer i én yderligere række i databasen.

Sletninger

For hver datatype kan der konfigureres en sandsynlighed for at en række er blevet slettet (dvs. markeret med validTo før “nu”).

Info

En fejl i programmet (opdaget efter at den aktuelle release er bygget) gør, at det ikke er den nyeste række for en datatype der slettes, og derfor bør denne konfigureres til 0 procent sandsynlighed.
“Slettede” rækker er identiske med ikke-aktuelle opdaterede rækker (dvs. validTo < “nu”), og derfor er et acceptabelt workaround blot at slå “sletning” af rækker fra, ved at konfigurere sandsynligheden til 0 procent.

Forslag til konfiguration

Følgende er et forslag til konfiguration af datamængder.

Code Block
languageyml
data-creator-properties:
  odr:
    data-time-interval-start: "2017-06-01T00:00:00Z"
    data-time-interval-end: "2019-06-01T00:00:00Z"
    chance-of-updates: 10
    chance-of-deletes: 0

Eksempel på log output

Følgende er et eksempel på log output ved succesfuld kørsel af programmet.

Code Block
2019-07-01T14:06:49,485 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.Runner [] - Data creator says Hello World, and begins!
2019-07-01T14:06:49,485 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.Runner [] - DataCreatorProperties{personFileName='person-file.txt', odr=DataCreationProperties{dataTimeIntervalStart=2017-06-01T00:00:00Z, dataTimeIntervalEnd=2019-06-01T00:00:00Z, chanceOfUpdates=10, chanceOfDeletes=0}}
2019-07-01T14:06:50,976 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.business.OrganDonorDataCreator [] - Number of first records: 500
2019-07-01T14:06:50,976 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.business.OrganDonorDataCreator [] - Number of update records: 59
2019-07-01T14:06:50,979 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.business.OrganDonorDataCreator [] - Number of records marked as deleted: 0
2019-07-01T14:06:50,986 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.business.OrganDonorDataCreator [] - Total records: 559
2019-07-01T14:06:50,986 [main] INFO  dk.sundhedsdatastyrelsen.organdonor.datacreator.Runner [] - Data creator says goodbye!

...