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.
Procedur:
- 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
- Checka ut SKLTP-EI och gör en "mvn clean install" från rot-biblioteket
- Editera mavens byggfil pom.xml och lägg till mysql biblioteket
- 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)
- Editera src/test/resources/persistence-test.xml och kommentera bort hibernate.show_sql för att slippa en massa onödiga utskrifter
- 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
- 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
- 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
- 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 Exempel:
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>