From aabd4e04d994eb91663abaa80865daec4cf970a6 Mon Sep 17 00:00:00 2001 From: 3pointer Date: Thu, 13 Jan 2022 13:25:42 +0800 Subject: [PATCH] test: public RunInGoTest for mock store (#31578) close pingcap/tidb#31579 --- br/pkg/mock/mock_cluster.go | 18 ++++-------------- server/http_status.go | 4 ++-- server/main_test.go | 2 +- server/mock_conn.go | 6 +++--- server/server.go | 13 +++++++------ 5 files changed, 17 insertions(+), 26 deletions(-) diff --git a/br/pkg/mock/mock_cluster.go b/br/pkg/mock/mock_cluster.go index d468c06ceb..86cba3217a 100644 --- a/br/pkg/mock/mock_cluster.go +++ b/br/pkg/mock/mock_cluster.go @@ -6,7 +6,6 @@ import ( "database/sql" "fmt" "io" - "net" "net/http" "net/http/pprof" "strings" @@ -84,25 +83,16 @@ func NewCluster() (*Cluster, error) { // Start runs a mock cluster. func (mock *Cluster) Start() error { - // choose a random available port - l1, _ := net.Listen("tcp", "127.0.0.1:") - statusPort := l1.Addr().(*net.TCPAddr).Port - - // choose a random available port - l2, _ := net.Listen("tcp", "127.0.0.1:") - addrPort := l2.Addr().(*net.TCPAddr).Port - + server.RunInGoTest = true mock.TiDBDriver = server.NewTiDBDriver(mock.Storage) cfg := config.NewConfig() - cfg.Port = uint(addrPort) + // let tidb random select a port + cfg.Port = 0 cfg.Store = "tikv" - cfg.Status.StatusPort = uint(statusPort) + cfg.Status.StatusPort = 0 cfg.Status.ReportStatus = true cfg.Socket = fmt.Sprintf("/tmp/tidb-mock-%d.sock", time.Now().UnixNano()) - // close port for next listen in NewServer - l1.Close() - l2.Close() svr, err := server.NewServer(cfg, mock.TiDBDriver) if err != nil { return errors.Trace(err) diff --git a/server/http_status.go b/server/http_status.go index 7e7733d2b0..cb391beeb0 100644 --- a/server/http_status.go +++ b/server/http_status.go @@ -80,7 +80,7 @@ func sleepWithCtx(ctx context.Context, d time.Duration) { func (s *Server) listenStatusHTTPServer() error { s.statusAddr = fmt.Sprintf("%s:%d", s.cfg.Status.StatusHost, s.cfg.Status.StatusPort) - if s.cfg.Status.StatusPort == 0 && !runInGoTest { + if s.cfg.Status.StatusPort == 0 && !RunInGoTest { s.statusAddr = fmt.Sprintf("%s:%d", s.cfg.Status.StatusHost, defaultStatusPort) } @@ -102,7 +102,7 @@ func (s *Server) listenStatusHTTPServer() error { if err != nil { logutil.BgLogger().Info("listen failed", zap.Error(err)) return errors.Trace(err) - } else if runInGoTest && s.cfg.Status.StatusPort == 0 { + } else if RunInGoTest && s.cfg.Status.StatusPort == 0 { s.statusAddr = s.statusListener.Addr().String() s.cfg.Status.StatusPort = uint(s.statusListener.Addr().(*net.TCPAddr).Port) } diff --git a/server/main_test.go b/server/main_test.go index dff5004c4a..051aba800d 100644 --- a/server/main_test.go +++ b/server/main_test.go @@ -31,7 +31,7 @@ import ( func TestMain(m *testing.M) { testbridge.SetupForCommonTest() - runInGoTest = true // flag for NewServer to known it is running in test environment + RunInGoTest = true // flag for NewServer to known it is running in test environment // AsyncCommit will make DDL wait 2.5s before changing to the next state. // Set schema lease to avoid it from making CI slow. diff --git a/server/mock_conn.go b/server/mock_conn.go index 14e4daacf0..1af3c35d59 100644 --- a/server/mock_conn.go +++ b/server/mock_conn.go @@ -69,9 +69,9 @@ func (mc *mockConn) Close() { // CreateMockServer creates a mock server. func CreateMockServer(t *testing.T, store kv.Storage) *Server { - if !runInGoTest { - // If CreateMockServer is called in another package, runInGoTest is not initialized. - runInGoTest = flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil + if !RunInGoTest { + // If CreateMockServer is called in another package, RunInGoTest is not initialized. + RunInGoTest = flag.Lookup("test.v") != nil || flag.Lookup("check.v") != nil } tidbdrv := NewTiDBDriver(store) cfg := config.NewConfig() diff --git a/server/server.go b/server/server.go index feb7c380da..fa5dfc6c21 100644 --- a/server/server.go +++ b/server/server.go @@ -70,10 +70,11 @@ import ( ) var ( - serverPID int - osUser string - osVersion string - runInGoTest bool + serverPID int + osUser string + osVersion string + // RunInGoTest represents whether we are run code in test. + RunInGoTest bool ) func init() { @@ -235,7 +236,7 @@ func NewServer(cfg *config.Config, driver IDriver) (*Server, error) { s.capability |= mysql.ClientSSL } - if s.cfg.Host != "" && (s.cfg.Port != 0 || runInGoTest) { + if s.cfg.Host != "" && (s.cfg.Port != 0 || RunInGoTest) { addr := fmt.Sprintf("%s:%d", s.cfg.Host, s.cfg.Port) tcpProto := "tcp" if s.cfg.EnableTCP4Only { @@ -245,7 +246,7 @@ func NewServer(cfg *config.Config, driver IDriver) (*Server, error) { return nil, errors.Trace(err) } logutil.BgLogger().Info("server is running MySQL protocol", zap.String("addr", addr)) - if runInGoTest && s.cfg.Port == 0 { + if RunInGoTest && s.cfg.Port == 0 { s.cfg.Port = uint(s.listener.Addr().(*net.TCPAddr).Port) } }