forked from orlangure/gnomock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
preset_test.go
99 lines (77 loc) · 2.33 KB
/
preset_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package gnomock_test
import (
"context"
"testing"
"time"
"github.com/orlangure/gnomock"
"github.com/orlangure/gnomock/internal/health"
"github.com/orlangure/gnomock/internal/testutil"
"github.com/stretchr/testify/require"
)
func TestPreset_parallel(t *testing.T) {
t.Parallel()
containers, err := gnomock.InParallel().
Start(&testutil.TestPreset{Img: testutil.TestImage}).
Start(&testutil.TestPreset{Img: testutil.TestImage}).
Start(&testutil.TestPreset{Img: testutil.TestImage}).
Start(&testutil.TestPreset{Img: testutil.TestImage}).
Start(&testutil.TestPreset{Img: testutil.TestImage}).
Go()
defer func() { require.NoError(t, gnomock.Stop(containers...)) }()
require.NoError(t, err)
require.Len(t, containers, 5)
ctx := context.Background()
for _, c := range containers {
require.NoError(t, health.HTTPGet(ctx, c.Address("web80")))
require.NoError(t, health.HTTPGet(ctx, c.Address("web8080")))
}
}
func TestPreset(t *testing.T) {
t.Parallel()
p := &testutil.TestPreset{Img: testutil.TestImage}
container, err := gnomock.Start(p)
defer func(c *gnomock.Container) {
require.NoError(t, gnomock.Stop(c))
}(container)
require.NoError(t, err)
}
func TestPreset_containerRemainsIfDebug(t *testing.T) {
t.Parallel()
p := &testutil.TestPreset{Img: testutil.TestImage}
container, err := gnomock.Start(
p,
gnomock.WithTimeout(time.Second*30),
gnomock.WithDebugMode(),
gnomock.WithHealthCheck(failingHealthcheck),
)
require.Error(t, err)
require.NotNil(t, container)
// if stopped without error, container existed at this point
err = gnomock.Stop(container)
require.NoError(t, err)
// allow the container to actually stop
time.Sleep(time.Second)
// confirm it doesn't exist anymore
err = gnomock.Stop(container)
require.Error(t, err)
}
func TestPreset_duplicateContainerName(t *testing.T) {
t.Parallel()
p := &testutil.TestPreset{Img: testutil.TestImage}
originalContainer, err := gnomock.Start(
p,
gnomock.WithTimeout(time.Minute),
gnomock.WithContainerName("gnomock"),
gnomock.WithDebugMode(),
)
require.NoError(t, err)
newContainer, err := gnomock.Start(
p,
gnomock.WithTimeout(time.Minute),
gnomock.WithContainerName("gnomock"),
gnomock.WithDebugMode(),
)
require.NoError(t, err)
require.Error(t, gnomock.Stop(originalContainer))
require.NoError(t, gnomock.Stop(newContainer))
}