José Diaz Seng > DBIx-Table-TestDataGenerator-0.004 > DBIx::Table::TestDataGenerator

Download:
DBIx-Table-TestDataGenerator-0.004.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.004   Source   Latest Release: DBIx-Table-TestDataGenerator-0.005

NAME ^

DBIx::Table::TestDataGenerator - Automatic test data creation, cross DBMS

VERSION ^

Version 0.0.4

SYNOPSIS ^

        use DBIx::Table::TestDataGenerator;
        
        my $generator = DBIx::Table::TestDataGenerator->new(
                dsn                    => $data_source_name,
                user                   => $db_user_name,
                password               => $db_password,          
                table                  => $target_table_name,
        );

        #simple usage:
        $generator->create_testdata(
                target_size            => $target_size,
                num_random             => $num_random,            
        );

        #extended usage handling a self-reference of the target table:
        $generator->create_testdata(
                        target_size        => $target_size,
                        num_random         => $num_random,                
                        max_tree_depth     => $max_tree_depth,
                        min_children       => $min_children,
                        min_roots          => $min_roots,
        );

DESCRIPTION ^

There is often the need to create test data in database tables, e.g. to test database client performance. The existence of constraints on a table makes it non-trivial to come up with a way to add records to it.

The current module inspects the tables' constraints and adds a desired number of records. The values of the fields either come from the table itself (possibly incremented to satisfy uniqueness constraints) or from tables referenced by foreign key constraints. The choice of the copied values is random for a number of runs the user can choose, afterwards the values are chosen randomly from a cache, reducing database traffic for performance reasons. One nice thing about this way to construct new records is that the additional data is similar to the data initially present in the table.

A main goal of the module is to reduce configuration to the absolute minimum by automatically determining information about the target table, in particular its constraints. Another goal is to support as many DBMSs as possible, this has been achieved by basing it on DBIx::Class modules.

In the synopsis, an extended usage has been mentioned. This refers to the common case of having a self-reference on a table, i.e. a one-column wide foreign key of a table to itself where the referenced column constitutes the primary key. Such a parent-child relationship defines a rootless tree and when generating test data it may be useful to have some control over the growth of this tree. One such case is when the parent-child relation represents a navigation tree and a client application processes this structure. In this case, one would like to have a meaningful, balanced tree structure since this corresponds to real-world examples. To control tree creation the parameters max_tree_depth, min_children and min_roots are provided. Note that the nodes are being added in a depth-first manner.

SUBROUTINES/METHODS ^

new

Arguments:

Return value:

A new TestDataGenerator object

dsn

Accessor for the DBI data source name.

user

Accessor for the database user.

password

Accessor for the database user's password.

table

Accessor for the name of the target table.

create_testdata

This is the main method, it creates and adds new records to the target table. In case one of the arguments max_tree_depth, min_children or min_roots has been provided, the other two must be provided as well.

Arguments:

Returns:

Nothing, only called for the side-effect of adding new records to the target table. (This may change, see the section FURTHER DEVELOPMENT.)

INSTALLATION AND CONFIGURATION ^

To install this module, run the following commands:

        perl Build.PL
        ./Build
        ./Build test
        ./Build install

LIMITATIONS ^

FURTHER DEVELOPMENT ^

ACKNOWLEDGEMENTS ^

AUTHOR ^

Jose Diaz Seng, <josediazseng at gmx.de>

BUGS ^

Please report any bugs or feature requests to bug-dbix-table-testdatagenerator at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBIx-Table-TestDataGenerator. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT ^

You can find documentation for this module with the perldoc command.

    perldoc DBIx::Table::TestDataGenerator

You can also look for information at:

LICENSE AND COPYRIGHT ^

Copyright 2012 Jose Diaz Seng.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

syntax highlighting: