At line 1 changed 1 line. |
How to generate random test data for your database. |
!!How to generate random test data for your database. |
At line 3 changed 1 line. |
The same system that was designed to handle 100 users will sometimes not work for 1,000 or 10,000 users. |
[dbMonster|http://dbmonster.kernelpanic.pl/] is a tool which helps database application developers with tuning the structure of the database, tuning the usage of indexes, and testing the application performance under heavy database load. dbMonster generates as much random test data as you wish and puts it into SQL database. I used dbMonster to add several thousand users to appfuse to test how it will impact performance, especially displaytag peformance. |
At line 5 changed 1 line. |
dbMonster is a good program for adding data to your system so you can simulate how it will function in production. |
%%(color: blue)''What I really love about this system is that it allows me to fill my system with data to see how it would perform with 10,000 to 1 million users.''%% |
At line 7 added 2 lines. |
---- |
|
At line 11 added 2 lines. |
%%(color: blue)'' |
I found it easiest to run dbMonster with ant on my system. I'm using Windows XP and cygwin. dbmonster-core was extracted to f:\tools\dbmonster-core-1.0.3 and dbmonster-ant-1.0.1.jar was saved to f:\tools\monster\''%% |
At line 14 added 1 line. |
Create 2 new directories inside of dbmonster-core-1.0.3 called config and schema. |
At line 16 added 4 lines. |
__mkdir config__\\ |
__mkdir schema__ |
|
Create a file called dbmonster.properties inside of the config directory you just made. |
At line 21 added 119 lines. |
dbmonster.jdbc.driver=org.postgresql.Driver |
dbmonster.jdbc.url=jdbc:postgresql://127.0.0.1/YourDatabase |
dbmonster.jdbc.username=postgres |
dbmonster.jdbc.password=YourPassword |
|
dbmonster.max-tries=1000 |
|
dbmonster.rows=1000 |
|
dbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter |
}}} |
|
Next you want to map the schema of the tables that you want to generate data for. To do this, you will make a new file called appfuse-schema.xml. This example will allow you to generate 1500 new users at a time. If you want more you can run the application more than one or change ''rows="1500"'' in the file below. |
|
{{{ |
<?xml version="1.0" encoding="iso-8859-1"?> |
<!DOCTYPE dbmonster-schema PUBLIC |
"-//kernelpanic.pl//DBMonster Database Schema DTD 1.1//EN" |
"http://dbmonster.kernelpanic.pl/dtd/dbmonster-schema-1.1.dtd"> |
|
<dbmonster-schema> |
<name>User Schema</name> |
<table name="app_user" rows="1500"> |
<!-- |
<key databaseDefault="false"> |
<generator type="pl.kernelpanic.dbmonster.generator.MaxKeyGenerator" |
<property name="columnName" value="id"/> |
</generator> |
</key> |
--> |
<column name="username"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
<column name="version"> |
<generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> |
<property name="nulls" value="0"/> |
<property name="minValue" value="1"/> |
<property name="maxValue" value="5"/> |
<property name="returnedType" value="integer"/> |
</generator> |
</column> |
<column name="password"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
<column name="first_name"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
<column name="last_name"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
<column name="city"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
<column name="postal_code"> |
<generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> |
<property name="nulls" value="0"/> |
<property name="minValue" value="10000"/> |
<property name="maxValue" value="77007"/> |
<property name="returnedType" value="integer"/> |
</generator> |
</column> |
<column name="email"> |
<generator type="pl.kernelpanic.dbmonster.generator.StringGenerator"> |
<property name="nulls" value="0"/> |
<property name="minLength" value="4"/> |
<property name="maxLength" value="15"/> |
<property name="allowSpaces" value="false"/> |
</generator> |
</column> |
|
|
</table> |
</dbmonster-schema> |
|
}}} |
|
|
!!Configure Ant |
|
You should put your build.properties and build.xml in the same directory that dbmonster-ant-1.0.1.jar is at. |
|
Here are the contents of build.properties. |
|
{{{ |
dbmonster.home=/tools/dbmonster-core-1.0.3 |
dbmonster.ant=/tools/monster |
dbmonster.config=/tools/dbmonster-core-1.0.3/config |
dbmonster.schemas=/tools/dbmonster-core-1.0.3/schema |
}}} |
|
|
Here is the build.xml file. |
|
{{{ |
At line 171 added 14 lines. |
|
---- |
|
!!Run Ant |
|
After you have done the above, make sure your database is started and try running __ant__. If all goes well you should see the following. Try starting appfuse and looking at all the new data. |
|
__That was easy!:__ |
%%(color:green) |
|
BUILD SUCCESSFUL\\ |
Total time: 12 seconds%% |
|
---- |