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 “ltr-btr-test-data-creator” i det overordnede projekt for servicen. Det bygges derved som en del af hele servicen (tests kan springes over) vha.:

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.:

java -jar ltr-btr-test-data-generator/target/ltr-btr-test-data-creator-*.jar

Eller hvis “working directory” indeholder jar-filen:

java -jar ltr-btr-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 2 datasources, som programmet anvender JDBC til at forbinde til databaserne med, vha. følgende properties:

datasource-ltr:
  driver-class-name: "com.mysql.jdbc.Driver"
  url: "jdbc:mysql://localhost/ltr"
  username: "ltr_service"
  password: "Password1"
datasource-btr:
  driver-class-name: "com.mysql.jdbc.Driver"
  url: "jdbc:mysql://localhost/ltr"
  username: "ltr_service"
  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 properties:

datasource-ltr:
  driver-class-name: "com.mysql.jdbc.Driver"
datasource-btr:
  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:

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: ltr, btr

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 15 procent, så vil der være 15 procent chance for at der oprettes endnu en række (med opdaterede værdier) for en række. Dernæst vil der være 15 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.

Forslag til konfiguration

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

data-creator-properties:
  ltr:
    data-time-interval-start: "2017-06-01T00:00:00Z"
    data-time-interval-end: "2019-06-01T00:00:00Z"
    chance-of-updates: 15
  btr:
    data-time-interval-start: "2017-06-01T00:00:00Z"
    data-time-interval-end: "2019-06-01T00:00:00Z"
    chance-of-updates: 15

Eksempel på log output

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

2019-07-01T14:48:04,061 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.Runner [] - Data creator says Hello World, and begins!
2019-07-01T14:48:04,062 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.Runner [] - DataCreatorProperties{personFileName='person-file.txt', ltr=DataCreationProperties{dataTimeIntervalStart=2017-06-01T00:00:00Z, dataTimeIntervalEnd=2019-06-01T00:00:00Z, chanceOfUpdates=15}, btr=DataCreationProperties{dataTimeIntervalStart=2017-06-01T00:00:00Z, dataTimeIntervalEnd=2019-06-01T00:00:00Z, chanceOfUpdates=15}}
2019-07-01T14:48:05,673 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.LivingWillDataCreator [] - Number of first records: 500
2019-07-01T14:48:05,673 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.LivingWillDataCreator [] - Number of update records: 78
2019-07-01T14:48:05,676 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.LivingWillDataCreator [] - Total records: 578
2019-07-01T14:48:07,237 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.TreatmentWillDataCreator [] - Number of first records: 500
2019-07-01T14:48:07,237 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.TreatmentWillDataCreator [] - Number of update records: 95
2019-07-01T14:48:07,240 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.business.TreatmentWillDataCreator [] - Total records: 595
2019-07-01T14:48:07,248 [main] INFO  dk.sundhedsdatastyrelsen.livstestamente.datacreator.Runner [] - Data creator says goodbye!
  • No labels