-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathlogs_integration_test.go
83 lines (63 loc) · 1.97 KB
/
logs_integration_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
//go:build integration
// +build integration
/*
2022 © Postgres.ai
*/
package diagnostic
import (
"context"
"fmt"
"os"
"path"
"testing"
"time"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/postgres-ai/database-lab/v3/internal/embeddedui"
"gitlab.com/postgres-ai/database-lab/v3/internal/provision/runners"
"gitlab.com/postgres-ai/database-lab/v3/internal/retrieval/engine/postgres/tools"
"gitlab.com/postgres-ai/database-lab/v3/internal/retrieval/engine/postgres/tools/cont"
"gitlab.com/postgres-ai/database-lab/v3/pkg/config/global"
"gitlab.com/postgres-ai/database-lab/v3/pkg/util/networks"
)
func TestContainerOutputCollection(t *testing.T) {
t.Parallel()
id := "logs_collection_" + time.Now().Format(timeFormat)
dir := t.TempDir()
docker, err := client.NewClientWithOpts(client.FromEnv)
require.NoError(t, err)
engProps := global.EngineProps{
InstanceID: id,
}
// start test container as UI
embeddedUI := embeddedui.New(
embeddedui.Config{
DockerImage: "nginx:1.23.0",
},
engProps,
runners.NewLocalRunner(false),
docker,
)
ctx := context.Background()
networks.Setup(ctx, docker, engProps.InstanceID, id)
defer func() {
tools.StopContainer(ctx, docker, "dblab_embedded_ui_"+id, 10)
tools.RemoveContainer(ctx, docker, "dblab_embedded_ui_"+id, 10)
}()
err = embeddedUI.Run(ctx)
require.NoError(t, err)
// wait some time to generate container logs
time.Sleep(5 * time.Second)
filterArgs := filters.NewArgs()
filterArgs.Add("label", fmt.Sprintf("%s=%s", cont.DBLabSatelliteLabel, cont.DBLabEmbeddedUILabel))
err = collectContainersOutput(ctx, docker, dir, filterArgs)
require.NoError(t, err)
dirList, err := os.ReadDir(dir)
assert.NoError(t, err)
assert.Equal(t, 1, len(dirList))
stat, err := os.Stat(path.Join(dir, dirList[0].Name(), containerOutputFile))
assert.NoError(t, err)
assert.NotEqual(t, 0, stat.Size())
}