|
9 | 9 | my$username; |
10 | 10 | my$password; |
11 | 11 | my$host; |
12 | | -GetOptions ("--host=s"=> \$host, |
| 12 | +my$port; |
| 13 | +GetOptions ( |
| 14 | +"--host=s"=> \$host, |
| 15 | +"--port=s"=> \$port, |
13 | 16 | "--dbname=s"=> \$dbname, |
14 | 17 | "--username=s"=> \$username, |
15 | 18 | "--password=s"=> \$password); |
16 | 19 |
|
17 | | -print"Prepare test enviroment\n"; |
18 | | -my$dbh = DBI->connect("dbi:Pg:dbname=$dbname; host=$host","$username","$password", |
19 | | - {PrintError=> 1}); |
20 | | -if($dbh->err != 0){ |
21 | | -print$DBI::errstr ."\n"; |
22 | | -exit(-1); |
23 | | -} |
| 20 | +$dbname ||='_pgpro_scheduler_test'; |
| 21 | +$username ||='postgres'; |
24 | 22 |
|
25 | | -my$query ="DROP TABLE IF EXISTS test_results;"; |
26 | | -$dbh->do($query); |
27 | | -if($dbh->err != 0){ |
28 | | -print$DBI::errstr ."\n"; |
29 | | -exit(-1); |
30 | | -} |
| 23 | +my$adm_dsn ='dbi:Pg:dbname=postgres'; |
| 24 | +my$dsn ="dbi:Pg:dbname=$dbname"; |
31 | 25 |
|
32 | | -$query ="CREATE TABLE test_results( time_mark timestamp, commentary text );"; |
33 | | -$dbh->do($query); |
34 | | -if($dbh->err != 0){ |
35 | | -print$DBI::errstr ."\n"; |
36 | | -exit(-1); |
| 26 | + |
| 27 | +if($host) |
| 28 | +{ |
| 29 | +$adm_dsn +=";host=".$host; |
| 30 | +$dsn +=";host=".$host; |
| 31 | +} |
| 32 | +if($port) |
| 33 | +{ |
| 34 | +$adm_dsn +=";port=".$port; |
| 35 | +$dsn +=";port=".$port; |
37 | 36 | } |
38 | 37 |
|
39 | | -$query ="DROP ROLE IF EXISTS tester;"; |
40 | | -$dbh->do($query); |
| 38 | +print"Prepare test enviroment\n"; |
| 39 | +my$dbh = DBI->connect($adm_dsn,$username,$password, {PrintError=> 1}); |
41 | 40 | if($dbh->err != 0){ |
42 | 41 | print$DBI::errstr ."\n"; |
43 | 42 | exit(-1); |
44 | 43 | } |
45 | 44 |
|
46 | | -$query ="CREATE ROLE tester;"; |
47 | | -$dbh->do($query); |
48 | | -if($DBI::err != 0){ |
49 | | -print$DBI::errstr ."\n"; |
50 | | -exit(-1); |
51 | | -} |
| 45 | +my@sqls = ( |
| 46 | +"ALTER SYSTEM SET schedule.enabled=off", |
| 47 | +"SELECT pg_reload_conf()", |
| 48 | +"DROP DATABASE IF EXISTS$dbname", |
| 49 | +"CREATE DATABASE$dbname", |
| 50 | +); |
| 51 | + |
| 52 | +map { __do_sql($dbh,$_) }@sqls; |
| 53 | +$dbh->disconnect(); |
52 | 54 |
|
53 | | -$query ="GRANT INSERT ON test_results TO tester;"; |
54 | | -$dbh->do($query); |
| 55 | +$dbh = DBI->connect($dsn,$username,$password, {PrintError=> 1}); |
55 | 56 | if($dbh->err != 0){ |
56 | 57 | print$DBI::errstr ."\n"; |
57 | 58 | exit(-1); |
58 | 59 | } |
59 | 60 |
|
| 61 | +my@sql2 = ( |
| 62 | +"CREATE EXTENSION pgpro_scheduler", |
| 63 | +"ALTER DATABASE$dbname SET schedule.max_workers = 1", |
| 64 | +"ALTER SYSTEM SET schedule.database = '$dbname'", |
| 65 | +"ALTER SYSTEM SET schedule.enabled = on", |
| 66 | +"SELECT pg_reload_conf();", |
| 67 | +"CREATE TABLE test_results( time_mark timestamp, commentary text )", |
| 68 | +"DROP ROLE IF EXISTS tester", |
| 69 | +"CREATE ROLE tester", |
| 70 | +"GRANT INSERT ON test_results TO tester", |
| 71 | +); |
| 72 | +map { __do_sql($dbh,$_) }@sql2; |
60 | 73 | $dbh->disconnect(); |
61 | 74 |
|
62 | 75 | print"Run tests\n"; |
63 | | -my@db_param = ["--host=$host","--dbname=$dbname","--username=$username","--password=$password"]; |
| 76 | + |
| 77 | +my@db_param = ["--dbname=$dbname"]; |
| 78 | +push@db_param,"--host=$host"if$host; |
| 79 | +push@db_param,"--port=$port"if$port; |
| 80 | +push@db_param,"--username=$username"if$username; |
| 81 | +push@db_param,"--password=$password"if$password; |
| 82 | + |
64 | 83 | my%args = ( |
65 | 84 | verbosity=> 1, |
66 | | -test_args=>@db_param |
| 85 | +test_args=>\@db_param |
67 | 86 | ); |
68 | 87 | my$harness = TAP::Harness->new( \%args ); |
69 | 88 | my@tests =glob('t/*.t' ); |
70 | 89 | $harness->runtests(@tests ); |
71 | 90 |
|
72 | 91 |
|
| 92 | +sub__do_sql |
| 93 | +{ |
| 94 | +my$dbh =shift; |
| 95 | +my$query =shift; |
73 | 96 |
|
74 | | - |
75 | | - |
76 | | - |
| 97 | +print" ->$query\n"; |
| 98 | +$dbh->do($query); |
| 99 | +if($dbh->err != 0) |
| 100 | +{ |
| 101 | +printSTDERR"ON query:$query".$DBI::errstr."\n"; |
| 102 | +exit(-1); |
| 103 | +} |
| 104 | +} |