/[rserv]/misc/rserv_test.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /misc/rserv_test.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Tue Aug 5 09:52:40 2003 UTC (20 years, 9 months ago) by dpavlin
Branch: MAIN
File MIME type: text/plain
rserv 0.2 changes by Nélio Alves Pereira Filho

1 dpavlin 1.1 #!/usr/bin/perl
2    
3    
4     use Pg;
5     use Getopt::Long;
6     use POSIX ":sys_wait_h";
7    
8    
9     $| = 1;
10     $control = 0;
11    
12    
13     $result = GetOptions("numprocs=i", "numstmts=i", "help");
14     if (defined($opt_help)) {
15     print "Usage: $0 --numprocs=number_of_processes --numstmts=number_of_statements\n";
16     print "\n";
17     exit(0);
18     }
19    
20    
21     my $numprocs = $opt_numprocs || 4;
22     my $numstmts = $opt_numstmts || 100;
23    
24     print STDERR "Running $numprocs threads, $numstmts inserts each\n";
25    
26     my $info = "dbname=immanis host=kelly user=root";
27     #my $info = "dbname=replicate host=alicia user=nelio";
28    
29     my @pids = ();
30     for ($i=0; $i < $numprocs; $i++) {
31     if (($pid = fork()) == 0) {
32     doInserts($i+1);
33     exit;
34     } elsif ($pid != undef) {
35     push @pids, $pid;
36     }
37     }
38    
39     foreach $pid (@pids) {
40     my $x = -1;
41     do {
42     sleep(1);
43     $x = waitpid($pid, 0);
44     } until $x == $pid;
45     }
46    
47    
48     #########################
49    
50     sub doInserts {
51     ($pid) = @_;
52     print "<$pid> Running...\n";
53    
54     $conn = Pg::connectdb($info);
55     if ($conn->status != PGRES_CONNECTION_OK) {
56     print "<$pid> Failed opening $info\n";
57     print "<$pid> Abort!\n";
58     last;
59     }
60    
61     $result = $conn->exec("BEGIN");
62     if ($result->resultStatus ne PGRES_COMMAND_OK) {
63     print "<$pid> Error in query '$q': ". $conn->errorMessage."\n";
64     print "<$pid> Abort!\n";
65     last;
66     }
67    
68     print "<$pid> Inserting $numstmts records...\n";
69     $sql = "INSERT INTO test (value) VALUES";
70     for ($i = 0; $i < $numstmts; $i++) {
71     $time = time;
72     $q = "$sql ('test_${pid}_${i}_$time')";
73     $result = $conn->exec($q);
74     if ($result->resultStatus ne PGRES_COMMAND_OK) {
75     print "<$pid> Error in query '$q': ". $conn->errorMessage."\n";
76     $conn->exec("ROLLBACK");
77     print "<$pid> Abort!\n";
78     last;
79     }
80     }
81     print "<$pid> done!\n";
82    
83     $result = $conn->exec("COMMIT");
84     if ($result->resultStatus ne PGRES_COMMAND_OK) {
85     print "<$pid> Error in query '$q': ". $conn->errorMessage."\n";
86     $conn->exec("ROLLBACK");
87     print "<$pid> Abort!\n";
88     last;
89     }
90    
91     print "<$pid> Finished.\n";
92     $control++;
93     }

  ViewVC Help
Powered by ViewVC 1.1.26