fix: flaky registry data race on mockdns close

Signed-off-by: Terry Howe <terrylhowe@gmail.com>
pull/31199/head
Terry Howe 3 weeks ago
parent 934f761e08
commit 6273f9b38e
No known key found for this signature in database

@ -32,10 +32,7 @@ type HTTPRegistryClientTestSuite struct {
func (suite *HTTPRegistryClientTestSuite) SetupSuite() {
// init test client
dockerRegistry := setup(&suite.TestSuite, false, false)
// Start Docker registry
go dockerRegistry.ListenAndServe()
setup(&suite.TestSuite, false, false)
}
func (suite *HTTPRegistryClientTestSuite) TearDownSuite() {

@ -29,10 +29,7 @@ type InsecureTLSRegistryClientTestSuite struct {
func (suite *InsecureTLSRegistryClientTestSuite) SetupSuite() {
// init test client
dockerRegistry := setup(&suite.TestSuite, true, true)
// Start Docker registry
go dockerRegistry.ListenAndServe()
setup(&suite.TestSuite, true, true)
}
func (suite *InsecureTLSRegistryClientTestSuite) TearDownSuite() {

@ -31,10 +31,7 @@ type TLSRegistryClientTestSuite struct {
func (suite *TLSRegistryClientTestSuite) SetupSuite() {
// init test client
dockerRegistry := setup(&suite.TestSuite, true, false)
// Start Docker registry
go dockerRegistry.ListenAndServe()
setup(&suite.TestSuite, true, false)
}
func (suite *TLSRegistryClientTestSuite) TearDownSuite() {

@ -29,7 +29,6 @@ import (
"os"
"path/filepath"
"strings"
"sync"
"time"
"github.com/distribution/distribution/v3/configuration"
@ -65,12 +64,13 @@ type TestSuite struct {
CompromisedRegistryHost string
WorkspaceDir string
RegistryClient *Client
dockerRegistry *registry.Registry
// A mock DNS server needed for TLS connection testing.
srv *mockdns.Server
}
func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry {
func setup(suite *TestSuite, tlsEnabled, insecure bool) {
suite.WorkspaceDir = testWorkspaceDir
os.RemoveAll(suite.WorkspaceDir)
os.Mkdir(suite.WorkspaceDir, 0700)
@ -166,20 +166,20 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry {
config.HTTP.TLS.ClientCAs = []string{tlsCA}
}
}
dockerRegistry, err := registry.NewRegistry(context.Background(), config)
suite.dockerRegistry, err = registry.NewRegistry(context.Background(), config)
suite.Nil(err, "no error creating test registry")
suite.CompromisedRegistryHost = initCompromisedRegistryTestServer()
return dockerRegistry
go func() {
_ = suite.dockerRegistry.ListenAndServe()
_ = suite.srv.Close()
mockdns.UnpatchNet(net.DefaultResolver)
}()
}
func teardown(suite *TestSuite) {
var lock sync.Mutex
lock.Lock()
defer lock.Unlock()
if suite.srv != nil {
mockdns.UnpatchNet(net.DefaultResolver)
suite.srv.Close()
if suite.dockerRegistry != nil {
_ = suite.dockerRegistry.Shutdown(context.Background())
}
}

Loading…
Cancel
Save