Page History
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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. |
Forslag til konfiguration
Følgende er et forslag til konfiguration af datamængder.
Code Block | ||
---|---|---|
| ||
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! |
...