general
license
usage
databene generator initially was built to generate data for load tests, but turns out to become the swiss army knive of data creation:
You can
| [top] |
There are many data generators available (see similar products ), but each one lacks features I desired - especially the open source products.
Thus I started the development of benerator in June 2006 with the following goals (and USPs):
Try to find another test data generator that provides these features. You can start with this list . If you really should find one, please tell and surprise me .
The best thing is: you get all this as open source! OK, the license costs of a commercial generator do not really matter compared to personnel costs, but you can get developer support for benerator and easily fix problems in source code or customize it to your individual needs.
| [top] |
Load testing is the process of testing an application's behavior under the load conditions expected for productive use. These conditions are (1) the expected database capacity and (2) the amount of user activity. Load testing is done in three steps:
| [top] |
benerator supports the following databases:
If your database is not listed here, try if benerator accepts it anyway. Please report any problems with your database to benerator@databene.org .
The following data file formats can be used for import or export:
| [top] |
These numbers apply for a common developer notebook (Dell Latitude 620, Dual Core, 2 GHz, 2 GB RAM) with a local database instance running in an own process (MySQL/Oracle):
| oracle export (on local system) | 3 million entities per hour |
| csv export: | 60 million entities per hour |
| flat file export: | 60 million entities per hour |
| xml export (via FreeMarker script): | 45 million entities per hour |
| [top] |
benerator is in early stages of development, still much time is needed to improve or finalize functionality. When the benerator engine design is stable, a GUI will be added (not before release 0.4).
| [top] |
On one side the availability open source software strongly leverages productivity (you can extend the work done by others at no charge) on the other side creating a useful, easy-to-use yet sophisticated tool means a lot of work: Not only creating and using, but also testing, documenting, promoting, planning, bug tracking and more.
If you are very lucky, you are paid for that work. Well, I am not, thus I had to make a decision: Developing benerator with the least effort needed for own use in performance testing or publishing it for common welfare and doing all the extra work in my spare time? What if a company likes benerator, repackages it and resells it? ...or integrates it into its $10,000 product for free? ...while I struggle to pay my rent or salaries of my developers?
I chose this solution:
| [top] |
The GNU Public License fully applies. You are welcome to do e.g. the following free of charge:
For redistributing benerator (or derivative works) or selling services in a way that is not covered by the GPL you can obtain a commercial license. Each such license is negotiated individually, a standard gauge for the fee is 10% of the gross revenue from your product, service or book.
| [top] |
Yes, if you adapt the DTD location in the DOCTYPE definition of your benerator XML file
DOCTYPE setup LOCAL "local_path/benerator-0.3.dtd"
| [top] |
When using default settings and database export, each entity is persisted in a single transaction. You can increase the number of entities created in a transaction by setting the pagesize attribute of the create-entities elements.
Run benerator multithreaded, e.g.
create-entities name="db_user" count="10" pagesize="1000" threads="2"
| [top] |
Use an appropriate regular expression, e.g.
pattern="pre_[a-z]{1,7}_post"
| [top] |
As of release 0.3.01, the minimum meta information that benerator needs fore choosing a generator one of the following:
type="string" pattern="[A-Z]{4,8}"
As of release 0.3.02, specifying a pattern alone implies string type.
| [top] |
Create the source or processor as JavaBeans and set their 'separator' property explicitely! Use them by referencing the JavaBean id in the 'source' or 'processor' attribute.
| [top] |