/[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

Contents of /misc/rserv_test.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

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