SKLTP EI - Instruktioner för att generera testdata

Generera testdata för MySQL

 

För att generera testdata används för närvarande enhetstestet BenchmarkTest som skapar en väldigt enkel databasstruktur där varje post härleds utifrån ett heltal. Observera att testet först  skapar poster och sedan uppdaterar dessa. Med andra ord kan man avbryta körningen manuellt när första passet med skapandet är klart.

Nedanstående instruktion gäller för komponenten skltp-ei-composite-svc!

Procedur:

  1. Det finns en färdig databasdump med 10 000 000 poster som ligger på QA2 under mule användaren "filetransfer/engagement_index_table.gz" om dennas kan användas hoppa då direkt till punkt 10 nedan
  2. Skapa en mysql databas på lämplig server. Observera att en lokal databas på din laptop åtminstone är dubbelt så snabb som normala virtuella servers i ett datacenter
  3. Checka ut SKLTP-EI och gör en "mvn clean install" från rot-biblioteket 
  4. Editera mavens byggfil pom.xml och lägg till mysql biblioteket
  5. Editera src/test/resources/ei-test-config.properties och ställ in rätt databas samt lägg till benchmarkRows som ska sättas till antalet rader som ska skapas och benchmarkBatchSize som ska sättas till batch storlek (500 är lagom)
  6. Editera src/test/resources/persistence-test.xml och kommentera bort hibernate.show_sql för att slippa en massa onödiga utskrifter
  7. Editera src/test/resources/log4j.xml och sätt level till WARN för org.hibernate.SQL för att slippa en massa onödiga utskrifter 
  8. Skapa testdata genom att köra "mvn -Dtest=BenchmarkTest test" detta kan ta några timmar så kommandot "nohup mvn -Dtest=BenchmarkTest test > benchmark-load.log 2>&1 &" kan med fördel användas
  9. Ladda ut data från tabellen genom att köra "mysqldump -u root test engagement_index_table | gzip  > engagement_index_table.gz" filen blir ca 615MB stor
  10. Ladda in data i den aktuella databasen genom att köra först kopiera databasfilen och sedan köra  "gunzip < engagement_index_table.gz | mysql -h <host> -u <user> -p <database>". Där <host> är hostnamnet på servern <user> är mysql användaren och <database> är namnet på databasen/schemat. Programmet kommer att fråga efter lösenord. Observera att en eventuell befintlig tabell raderas och ersätts med en ny. 

generate snippet:

$ nohup mvn -Dtest=BenchmarkTest test > benchmark-load.log 2>&1 &

export snippet:

$ mysqldump -u root test engagement_index_table | gzip  > engagement_index_table.gz

import snippet:

$ gunzip < engagement_index_table.gz | mysql -h <host> -u <user> -p <database>

ei-test-config.properties snippet:

EI_JDBC_DRIVER=com.mysql.jdbc.Driver
EI_JDBC_URL=jdbc:mysql://localhost:3306/test
EI_JDBC_USR=root
EI_JDBC_PWD=
EI_JDBC_CON_POOL_INIT_SIZE=1
EI_JDBC_CON_POOL_MAX_ACTIVE=10
EI_JDBC_CON_POOL_MAX_IDLE=2
benchmarkRows = 10000000
benchmarkBatchSize = 500


pom.xml snippet:

<dependency>
 <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.24</version>
</dependency>

 

persistence-test.xm snippet:

<property name="hibernate.show_sql" value="false"/>

log4j.xml snippet:

<logger name="org.hibernate.SQL">
<level value="WARN" />
</logger>

Värden för testdata

service_domain växlar mellan följande värden: "urn:riv:scheduling:timebooking", "urn:riv:clinicalprocess:dummy", "urn:riv:another:test:doamin", "urn:riv:yet:another:dummy:domain"

categorization växlar mellan följande värden: "booking", "dummy", "one.two.three", "andsoforth"

logical_adresss växlar mellan följande värden: "SE100200400-600", "SE100200400-700", "SE100200400-800", "SE100200400-900"

source_system växlar mellan följande värden: XXX100200400-600", "XXX100200400-700", "XXX100200400-800", "XXX100200400-900"

registered_resident_id startar med värdet 19 + ( 0 -> antal rader) , dvs 190, 191, 192 osv...