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