|
1 | 1 | use strict; |
2 | 2 | use warnings; |
3 | 3 |
|
4 | | -use PostgresNode; |
| 4 | +use Cluster; |
5 | 5 | use TestLib; |
6 | 6 | use Test::More tests => 1; |
7 | 7 |
|
@@ -34,98 +34,19 @@ sub query_exec_async |
34 | 34 | return $rv; |
35 | 35 | } |
36 | 36 |
|
37 | | -my %allocated_ports = (); |
38 | | -sub allocate_ports |
39 | | -{ |
40 | | - my @allocated_now = (); |
41 | | - my ($host, $ports_to_alloc) = @_; |
42 | | - |
43 | | - while ($ports_to_alloc > 0) |
44 | | - { |
45 | | - my $port = int(rand() * 16384) + 49152; |
46 | | - next if $allocated_ports{$port}; |
47 | | - diag("Checking for port $port\n"); |
48 | | - if (!TestLib::run_log(['pg_isready', '-h', $host, '-p', $port])) |
49 | | - { |
50 | | - $allocated_ports{$port} = 1; |
51 | | - push(@allocated_now, $port); |
52 | | - $ports_to_alloc--; |
53 | | - } |
54 | | - } |
55 | | - |
56 | | - return @allocated_now; |
57 | | -} |
58 | | - |
59 | | -my $nnodes = 2; |
60 | | -my @nodes = (); |
61 | | - |
62 | | -# Create nodes and allocate ports |
63 | | -foreach my $i (1..$nnodes) |
64 | | -{ |
65 | | - my $host = "127.0.0.1"; |
66 | | - my ($pgport, $raftport) = allocate_ports($host, 2); |
67 | | - my $node = new PostgresNode("node$i", $host, $pgport); |
68 | | - $node->{id} = $i; |
69 | | - $node->{raftport} = $raftport; |
70 | | - push(@nodes, $node); |
71 | | -} |
| 37 | +my $cluster = new Cluster(2); |
72 | 38 |
|
73 | | -my $mm_connstr = join(',', map { "${ \$_->connstr('postgres') }" } @nodes); |
74 | | -my $raft_peers = join(',', map { join(':', $_->{id}, $_->host, $_->{raftport}) } @nodes); |
75 | | - |
76 | | -diag("mm_connstr = $mm_connstr\n"); |
77 | | -diag("raft_peers = $raft_peers\n"); |
78 | | - |
79 | | -# Init and Configure |
80 | | -foreach my $node (@nodes) |
81 | | -{ |
82 | | - my $id = $node->{id}; |
83 | | - my $host = $node->host; |
84 | | - my $pgport = $node->port; |
85 | | - my $raftport = $node->{raftport}; |
86 | | - |
87 | | - $node->init(hba_permit_replication => 0); |
88 | | - $node->append_conf("postgresql.conf", qq( |
89 | | - listen_addresses = '$host' |
90 | | - unix_socket_directories = '' |
91 | | - port = $pgport |
92 | | - max_prepared_transactions = 10 |
93 | | - max_worker_processes = 10 |
94 | | - wal_level = logical |
95 | | - fsync = off |
96 | | - max_wal_senders = 10 |
97 | | - wal_sender_timeout = 0 |
98 | | - max_replication_slots = 10 |
99 | | - shared_preload_libraries = 'raftable,multimaster' |
100 | | - multimaster.workers = 4 |
101 | | - multimaster.queue_size = 10485760 # 10mb |
102 | | - multimaster.node_id = $id |
103 | | - multimaster.conn_strings = '$mm_connstr' |
104 | | - multimaster.use_raftable = true |
105 | | - raftable.id = $id |
106 | | - raftable.peers = '$raft_peers' |
107 | | - )); |
108 | | - |
109 | | - $node->append_conf("pg_hba.conf", qq( |
110 | | - local replication all trust |
111 | | - host replication all 127.0.0.1/32 trust |
112 | | - host replication all ::1/128 trust |
113 | | - )); |
114 | | -} |
115 | | - |
116 | | -# Start |
117 | | -foreach my $node (@nodes) |
118 | | -{ |
119 | | - $node->start(); |
120 | | -} |
| 39 | +$cluster->init(); |
| 40 | +$cluster->configure(); |
| 41 | +$cluster->start(); |
121 | 42 |
|
122 | 43 | my ($rc, $out, $err); |
123 | 44 | sleep(10); |
124 | 45 |
|
125 | | -$nodes[0]->psql('postgres', "create table t(k int primary key, v text)"); |
126 | | -$nodes[0]->psql('postgres', "insert into t values (1, 'hello'), (2, 'world')"); |
| 46 | +$cluster->psql(0, 'postgres', "create table t(k int primary key, v text)"); |
| 47 | +$cluster->psql(0, 'postgres', "insert into t values (1, 'hello'), (2, 'world')"); |
127 | 48 |
|
128 | | -my @conns = map { DBI->connect('DBI:Pg:' . $_->connstr()) } @nodes; |
| 49 | +my @conns = map { DBI->connect('DBI:Pg:' . $_->connstr()) } @{$cluster->{nodes}}; |
129 | 50 |
|
130 | 51 | query_exec($conns[0], "begin"); |
131 | 52 | query_exec($conns[1], "begin"); |
|
0 commit comments