Skip to content

Commit f209592

Browse files
committed
add docker compose
1 parent 3fd6e71 commit f209592

File tree

6 files changed

+96
-13
lines changed

6 files changed

+96
-13
lines changed

go/logic/streamer.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,10 @@ import (
1717
"github.com/github/gh-ost/go/mysql"
1818

1919
"context"
20-
"errors"
2120

2221
"github.com/openark/golib/sqlutils"
2322
)
2423

25-
var (
26-
EventListenerIsNil = errors.New("DML event listener is nil")
27-
)
28-
2924
type BinlogEventListener struct {
3025
async bool
3126
databaseName string
@@ -78,15 +73,11 @@ func (this *EventsStreamer) AddListener(
7873
if tableName == "" {
7974
return fmt.Errorf("Empty table name in AddListener")
8075
}
81-
dummyOnTrxEvent := func(trx *binlog.Transaction) error {
82-
return nil
83-
}
8476
listener := &BinlogEventListener{
8577
async: async,
8678
databaseName: databaseName,
8779
tableName: tableName,
8880
onDmlEvent: onDmlEvent,
89-
onTrxEvent: dummyOnTrxEvent,
9081
}
9182
this.listeners = append(this.listeners, listener)
9283
return nil
@@ -103,15 +94,11 @@ func (evs *EventsStreamer) AddTransactionListener(
10394
if tableName == "" {
10495
return fmt.Errorf("Empty table name in AddTransactionListener")
10596
}
106-
dummyOnDmlEvent := func(event *binlog.BinlogDMLEvent) error {
107-
return nil
108-
}
10997
listener := &BinlogEventListener{
11098
async: async,
11199
databaseName: databaseName,
112100
tableName: tableName,
113101
onTrxEvent: onTrxEvent,
114-
onDmlEvent: dummyOnDmlEvent,
115102
}
116103
evs.listeners = append(evs.listeners, listener)
117104
return nil

localtests/docker-compose.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
services:
2+
mysql-primary:
3+
image: mysql:8.0.39
4+
container_name: mysql-primary
5+
command: --server-id=1 --log-bin=mysql-bin --binlog-format=row --gtid-mode=ON
6+
volumes:
7+
- /var/lib/mysql
8+
environment:
9+
MYSQL_ROOT_PASSWORD: opensesame
10+
MYSQL_DATABASE: test
11+
MYSQL_USER: repl
12+
MYSQL_PASSWORD: repl
13+
MYSQL_TCP_PORT: 3307
14+
ports:
15+
- '3307:3307'
16+
expose:
17+
- '3307'
18+
mysql-replica:
19+
image: mysql:8.0.39
20+
container_name: mysql-replica
21+
command: --server-id=2 --log-bin=mysql-bin --binlog-format=row --gtid-mode=ON
22+
volumes:
23+
- /var/lib/mysql
24+
environment:
25+
MYSQL_ROOT_PASSWORD: opensesame
26+
MYSQL_DATABASE: test
27+
MYSQL_USER: repl
28+
MYSQL_PASSWORD: repl
29+
MYSQL_TCP_PORT: 3308
30+
ports:
31+
- '3308:3308'
32+
expose:
33+
- '3308'

localtests/test.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@ start_replication() {
9494
done
9595
}
9696

97+
test_single_docker() {
98+
#docker compose setup
99+
master_host="0.0.0.0"
100+
master_port="3307"
101+
replica_host="0.0.0.0"
102+
replica_port="3308"
103+
104+
test_single "$1"
105+
}
106+
97107
test_single() {
98108
local test_name
99109
test_name="$1"

script/docker-gh-ost-replica-tests

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/bash
2+
3+
verbose=true
4+
root_dir="$PWD"
5+
6+
container_exec() {
7+
if [ "$verbose" = true ]; then
8+
echo "$1: $2"
9+
fi
10+
docker exec "$1" bash -c "MYSQL_PWD=opensesame mysql -uroot -Ne \"$2\" test"
11+
}
12+
13+
primary_exec() {
14+
container_exec "mysql-primary" "$1"
15+
}
16+
17+
replica_exec() {
18+
container_exec "mysql-replica" "$1"
19+
}
20+
21+
poll_container() {
22+
CTR=0
23+
while ! container_exec "$1" "select 1;" 2>&1 | grep -q "1"
24+
do
25+
sleep 1
26+
CTR=$((CTR + 1))
27+
if [ $CTR -gt 30 ]; then
28+
echo "failed to start MySQL on $1"
29+
exit 1
30+
fi
31+
done
32+
echo "started MySQL on $1"
33+
}
34+
35+
setup() {
36+
docker compose -f "$root_dir/localtests/docker-compose.yml" up -d
37+
poll_container "mysql-primary"
38+
poll_container "mysql-replica"
39+
40+
primary_exec "alter user 'repl'@'%' identified with 'mysql_native_password' by 'repl';"
41+
primary_exec "grant replication slave on *.* to 'repl'@'%'; flush privileges;"
42+
primary_exec "show master status;" | read logfile logpos
43+
replica_exec "change replication source to source_host='mysql-primary', source_port=3307, source_user='repl', source_password='repl', source_log_file='$logfile', source_log_pos=$logpos;"
44+
replica_exec "start replica;"
45+
}
46+
47+
#setup

script/gh-ost-test-mysql-master

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
MYSQL_PWD=opensesame mysql -uroot -h0.0.0.0 -P3307 "$@"

script/gh-ost-test-mysql-replica

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
MYSQL_PWD=opensesame mysql -uroot -h0.0.0.0 -P3308 "$@"

0 commit comments

Comments
 (0)