Skip to content

Commit b9797d3

Browse files
committed
feat(ci): complete test cases
1 parent 31202c5 commit b9797d3

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

.github/workflows/ci.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ jobs:
1717
echo -n "mysqldump -V: " ; mysqldump -V
1818
1919
echo -e '[mysqld]\nserver-id=1\nlog-bin=mysql\nbinlog-format=row\ngtid-mode=ON\nenforce_gtid_consistency=ON\n' | sudo tee /etc/mysql/conf.d/replication.cnf
20+
21+
# bind to :: for dual-stack listening
22+
sudo sed -i 's/bind-address.*= 127.0.0.1/bind-address = ::/' /etc/mysql/mysql.conf.d/mysqld.cnf
23+
sudo sed -i 's/mysqlx-bind-address.*= 127.0.0.1/mysqlx-bind-address = ::/' /etc/mysql/mysql.conf.d/mysqld.cnf
24+
2025
sudo service mysql start
2126
2227
# apply this for mysql5 & mysql8 compatibility
@@ -29,7 +34,7 @@ jobs:
2934
mysql -e "SHOW VARIABLES LIKE 'log_bin'" -uroot
3035
- name: Prepare for Go
3136
run: |
32-
sudo apt-get install -y make gcc
37+
sudo apt-get install -y make gcc lsof
3338
- name: Checkout code
3439
uses: actions/checkout@v4
3540
- name: Install Go
@@ -109,5 +114,6 @@ jobs:
109114
uses: actions/setup-go@v5
110115
with:
111116
go-version: "1.22"
117+
112118
- name: Build on ${{ matrix.os }}/${{ matrix.arch }}
113119
run: GOARCH=${{ matrix.arch }} GOOS=${{ matrix.os }} go build ./...

canal/canal_test.go

+22-1
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,30 @@ import (
1616
)
1717

1818
type canalTestSuite struct {
19+
addr string
1920
suite.Suite
2021
c *Canal
2122
}
2223

24+
type canalTestSuiteOption func(c *canalTestSuite)
25+
26+
func withAddr(addr string) canalTestSuiteOption {
27+
return func(c *canalTestSuite) {
28+
c.addr = addr
29+
}
30+
}
31+
32+
func newCanalTestSuite(opts ...canalTestSuiteOption) *canalTestSuite {
33+
c := new(canalTestSuite)
34+
for _, opt := range opts {
35+
opt(c)
36+
}
37+
return c
38+
}
39+
2340
func TestCanalSuite(t *testing.T) {
24-
suite.Run(t, new(canalTestSuite))
41+
suite.Run(t, newCanalTestSuite())
42+
suite.Run(t, newCanalTestSuite(withAddr(mysql.DEFAULT_IPv6_ADDR)))
2543
}
2644

2745
const (
@@ -37,6 +55,9 @@ const (
3755
func (s *canalTestSuite) SetupSuite() {
3856
cfg := NewDefaultConfig()
3957
cfg.Addr = fmt.Sprintf("%s:%s", *test_util.MysqlHost, *test_util.MysqlPort)
58+
if s.addr != "" {
59+
cfg.Addr = s.addr
60+
}
4061
cfg.User = "root"
4162
cfg.HeartbeatPeriod = 200 * time.Millisecond
4263
cfg.ReadTimeout = 300 * time.Millisecond

mysql/const.go

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ const (
172172

173173
const (
174174
DEFAULT_ADDR = "127.0.0.1:3306"
175+
DEFAULT_IPv6_ADDR = "[::1]:3306"
175176
DEFAULT_USER = "root"
176177
DEFAULT_PASSWORD = ""
177178
DEFAULT_FLAVOR = "mysql"

0 commit comments

Comments
 (0)