Merged in feature/dockerfileintest (pull request #130)
Dockerfile in Test * dockerfile * network * const
This commit is contained in:
@@ -18,7 +18,7 @@ func TestCreateAPI(t *testing.T) {
|
||||
|
||||
cfg := &serviceconfig.BaseConfig{}
|
||||
_ = serviceconfig.InitializeConfig(cfg)
|
||||
net := test.DepNetwork.Get(t, ctx)
|
||||
net := test.GetNetwork(t, ctx)
|
||||
_ = test.CreateDB(t, ctx, cfg, net, &test.CreateDatabaseConfig{NoMigrations: true})
|
||||
|
||||
acfg := &test.APIConfig{
|
||||
|
||||
@@ -23,7 +23,7 @@ func TestCreateQueueContainer(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
cfg := &TestAWSConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
qcfg := CreateAWSContainer(t, ctx, cfg, net)
|
||||
assert.NotNil(t, qcfg)
|
||||
|
||||
+18
-16
@@ -13,8 +13,10 @@ import (
|
||||
|
||||
"queryorchestration/internal/serviceconfig"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/docker/docker/pkg/archive"
|
||||
"github.com/docker/go-connections/nat"
|
||||
"github.com/gruntwork-io/terratest/modules/shell"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/testcontainers/testcontainers-go"
|
||||
"github.com/testcontainers/testcontainers-go/wait"
|
||||
@@ -43,7 +45,7 @@ var (
|
||||
imageBuild sync.Once
|
||||
)
|
||||
|
||||
func buildImage(t testing.TB) {
|
||||
func buildImage(t testing.TB, ctx context.Context) {
|
||||
imageBuild.Do(func() {
|
||||
dockerContextPath, err := os.Getwd()
|
||||
require.NoError(t, err, "Failed to get current directory")
|
||||
@@ -54,25 +56,25 @@ func buildImage(t testing.TB) {
|
||||
candidatePath := filepath.Join(dockerContextPath, dockerfilePath)
|
||||
|
||||
t.Logf("Checking for Dockerfile at: %s", dockerContextPath)
|
||||
if _, err := os.Stat(candidatePath); err == nil {
|
||||
dockerfilePath = candidatePath
|
||||
t.Logf("Found Dockerfile at: %s", candidatePath)
|
||||
_, err := os.Stat(candidatePath)
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
|
||||
dockerContextPath = filepath.Join(dockerContextPath, "..")
|
||||
}
|
||||
|
||||
dockerBuildCmd := shell.Command{
|
||||
Command: "docker",
|
||||
Args: []string{
|
||||
"build",
|
||||
"--file", dockerfilePath,
|
||||
"--tag", imageTag,
|
||||
dockerContextPath,
|
||||
},
|
||||
}
|
||||
err = shell.RunCommandE(t, dockerBuildCmd)
|
||||
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||
require.NoError(t, err)
|
||||
|
||||
buildContext, err := archive.TarWithOptions(dockerContextPath, &archive.TarOptions{})
|
||||
require.NoError(t, err)
|
||||
defer buildContext.Close()
|
||||
|
||||
_, err = cli.ImageBuild(ctx, buildContext, types.ImageBuildOptions{
|
||||
Dockerfile: dockerfilePath,
|
||||
Tags: []string{imageTag},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
@@ -111,7 +113,7 @@ func createContainer(t testing.TB, ctx context.Context, network string, cfg *con
|
||||
env[string(GetRunnerEnvFromName(e))] = GetQueueURL(t, cfg.Cfg, e)
|
||||
}
|
||||
|
||||
buildImage(t)
|
||||
buildImage(t, ctx)
|
||||
|
||||
req := testcontainers.ContainerRequest{
|
||||
Image: imageTag,
|
||||
|
||||
@@ -16,7 +16,7 @@ func TestBuildImage(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.SkipNow()
|
||||
}
|
||||
buildImage(t)
|
||||
buildImage(t, t.Context())
|
||||
|
||||
exists := docker.DoesImageExist(t, imageTag, nil)
|
||||
assert.True(t, exists)
|
||||
|
||||
@@ -19,7 +19,7 @@ func TestCreateDB(t *testing.T) {
|
||||
|
||||
cfg := &serviceconfig.BaseConfig{}
|
||||
|
||||
net := test.DepNetwork.Get(t, ctx)
|
||||
net := test.GetNetwork(t, ctx)
|
||||
dbcfg := test.CreateDB(t, ctx, cfg, net, &test.CreateDatabaseConfig{NoMigrations: true})
|
||||
|
||||
assert.NotNil(t, dbcfg)
|
||||
@@ -35,7 +35,7 @@ func TestCreateDBWithMigrations(t *testing.T) {
|
||||
|
||||
cfg := &serviceconfig.BaseConfig{}
|
||||
|
||||
net := test.DepNetwork.Get(t, ctx)
|
||||
net := test.GetNetwork(t, ctx)
|
||||
dbcfg := test.CreateDB(t, ctx, cfg, net, &test.CreateDatabaseConfig{})
|
||||
|
||||
assert.NotNil(t, dbcfg)
|
||||
|
||||
@@ -91,7 +91,7 @@ type Dependencies struct {
|
||||
}
|
||||
|
||||
func CreateFullDependencies(t testing.TB, ctx context.Context, cfg FullDependenciesConfig) (Dependencies, func()) {
|
||||
network := DepNetwork.Get(t, ctx)
|
||||
network := GetNetwork(t, ctx)
|
||||
|
||||
deps := Dependencies{
|
||||
Network: network,
|
||||
|
||||
@@ -58,7 +58,7 @@ func TestWaitForMockEndpoint(t *testing.T) {
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
server, cleanup := CreateMockServer(t, ctx, net)
|
||||
defer cleanup()
|
||||
|
||||
+17
-46
@@ -12,59 +12,30 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type NetworkManager struct {
|
||||
networkName string
|
||||
mutex sync.Mutex
|
||||
initialized bool
|
||||
}
|
||||
|
||||
var (
|
||||
DepNetwork = &NetworkManager{}
|
||||
)
|
||||
|
||||
const (
|
||||
networkName = "queryorchestration_test"
|
||||
)
|
||||
|
||||
func (nm *NetworkManager) Get(t testing.TB, ctx context.Context) string {
|
||||
nm.mutex.Lock()
|
||||
defer nm.mutex.Unlock()
|
||||
var (
|
||||
networkOnce sync.Once
|
||||
)
|
||||
|
||||
if nm.initialized {
|
||||
return nm.networkName
|
||||
}
|
||||
|
||||
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||
require.NoError(t, err)
|
||||
|
||||
nm.networkName = networkName
|
||||
|
||||
current, err := cli.NetworkList(ctx, network.ListOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
found := false
|
||||
for _, c := range current {
|
||||
if c.Name == nm.networkName {
|
||||
found = true
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if found {
|
||||
return nm.networkName
|
||||
}
|
||||
|
||||
_, err = cli.NetworkCreate(ctx, nm.networkName, network.CreateOptions{
|
||||
Driver: "bridge",
|
||||
})
|
||||
conflictErrorMsg := fmt.Sprintf("Error response from daemon: network with name %s already exists", nm.networkName)
|
||||
if err != nil && err.Error() != conflictErrorMsg {
|
||||
func GetNetwork(t testing.TB, ctx context.Context) string {
|
||||
networkOnce.Do(func() {
|
||||
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
slog.Info("created network", "name", nm.networkName)
|
||||
_, err = cli.NetworkCreate(ctx, networkName, network.CreateOptions{
|
||||
Driver: network.NetworkBridge,
|
||||
})
|
||||
conflictErrorMsg := fmt.Sprintf("Error response from daemon: network with name %s already exists", networkName)
|
||||
if err != nil && err.Error() != conflictErrorMsg {
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
nm.initialized = true
|
||||
slog.Info("created network", "name", networkName)
|
||||
|
||||
return nm.networkName
|
||||
})
|
||||
|
||||
return networkName
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@ import (
|
||||
func TestDepNetworkGet(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
name := test.DepNetwork.Get(t, ctx)
|
||||
name := test.GetNetwork(t, ctx)
|
||||
assert.NotNil(t, name)
|
||||
|
||||
newName := test.DepNetwork.Get(t, ctx)
|
||||
newName := test.GetNetwork(t, ctx)
|
||||
assert.Equal(t, name, newName)
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ func TestCreateBucket(t *testing.T) {
|
||||
|
||||
cfg := &StoreConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
acfg := CreateAWSContainer(t, ctx, cfg, net)
|
||||
SetStoreClient(t, ctx, cfg, acfg.ExternalEndpoint)
|
||||
|
||||
@@ -46,7 +46,7 @@ func TestCreateStoreClient(t *testing.T) {
|
||||
|
||||
cfg := &StoreConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
acfg := CreateAWSContainer(t, ctx, cfg, net)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ func TestCreateQueue(t *testing.T) {
|
||||
|
||||
cfg := &TestConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
a := CreateAWSContainer(t, ctx, cfg, net)
|
||||
|
||||
@@ -50,7 +50,7 @@ func TestAssertMessageWait(t *testing.T) {
|
||||
|
||||
cfg := &TestConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
a := CreateAWSContainer(t, ctx, cfg, net)
|
||||
SetQueueClient(t, ctx, cfg, a.ExternalEndpoint)
|
||||
@@ -77,7 +77,7 @@ func TestAssertMessageBodyWait(t *testing.T) {
|
||||
|
||||
cfg := &TestConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
a := CreateAWSContainer(t, ctx, cfg, net)
|
||||
SetQueueClient(t, ctx, cfg, a.ExternalEndpoint)
|
||||
@@ -101,7 +101,7 @@ func TestAssertMessageAttrWait(t *testing.T) {
|
||||
|
||||
cfg := &TestConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
a := CreateAWSContainer(t, ctx, cfg, net)
|
||||
SetQueueClient(t, ctx, cfg, a.ExternalEndpoint)
|
||||
|
||||
@@ -16,7 +16,7 @@ func TestCreateRunner(t *testing.T) {
|
||||
|
||||
cfg := &TestConfig{}
|
||||
|
||||
net := DepNetwork.Get(t, ctx)
|
||||
net := GetNetwork(t, ctx)
|
||||
|
||||
a := CreateAWSContainer(t, ctx, cfg, net)
|
||||
SetQueueClient(t, ctx, cfg, a.ExternalEndpoint)
|
||||
|
||||
Reference in New Issue
Block a user