3
use lib "$ENV{RQG_HOME}/lib";
7
use GenTest::Constants;
8
use GenTest::Generator::FromGrammar;
9
use GenTest::Executor::MySQL;
15
my ($gendata, $help, $grammar_file, $mask, $dsn);
16
my $queries = my $default_queries = 1000;
19
my @ARGV_saved = @ARGV;
21
my $opt_result = GetOptions(
22
'grammar=s' => \$grammar_file,
23
'queries=i' => \$queries,
30
help() if !$opt_result || $help || not defined $grammar_file;
32
my $generator = GenTest::Generator::FromGrammar->new(
33
grammar_file => $grammar_file,
34
seed => ($seed eq 'time') ? time() : $seed,
38
return STATUS_ENVIRONMENT_FAILURE if not defined $generator;
43
$executor = GenTest::Executor::MySQL->new(
46
exit (STATUS_ENVIRONMENT_FAILURE) if not defined $executor;
49
if (defined $executor) {
50
my $init_result = $executor->init();
51
exit ($init_result) if $init_result > STATUS_OK;
54
foreach my $i (1..$queries) {
55
my $queries = $generator->next([$executor]);
57
(not defined $queries) ||
60
say("Grammar produced an empty query. Terminating.");
61
exit(STATUS_ENVIRONMENT_FAILURE);
63
my $sql = join('; ',@$queries);
72
$0 - Generate random queries from an SQL grammar and pipe them to STDOUT
74
--grammar : Grammar file to use for generating the queries (REQUIRED);
75
--seed : Seed for the pseudo-random generator
76
--queries : Numer of queries to generate (default $default_queries);
77
--dsn : The DSN of the database that will be used to resolve rules such as _table , _field
78
--help : This help message