Files
uncloud/internal/journal/logs_test.go
T

50 lines
1.1 KiB
Go

package journal
import (
"context"
"os/exec"
"testing"
"time"
"github.com/psviderski/uncloud/pkg/api"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestLogs(t *testing.T) {
commandContext = func(ctx context.Context, _ string, _ ...string) *exec.Cmd {
return exec.CommandContext(ctx, "/usr/bin/tail", "testdata/logs")
}
ctx := context.Background()
ctx, cancel := context.WithCancel(ctx)
defer cancel()
ch, err := Logs(ctx, "uncloud", api.ServiceLogsOptions{})
require.NoError(t, err)
i := 0
for range ch {
i++
}
assert.Equal(t, 6, i)
commandContext = func(ctx context.Context, _ string, _ ...string) *exec.Cmd {
return exec.CommandContext(ctx, "/usr/bin/tail", "-f", "testdata/logs")
}
ctx = context.Background()
ctx, cancel = context.WithCancel(ctx)
go func() { time.Sleep(1 * time.Second); cancel() }()
ch, err = Logs(ctx, "uncloud", api.ServiceLogsOptions{Tail: 3})
require.NoError(t, err)
i = 0
for range ch {
i++
}
// Still six because heartbeats are not written here and Tail is ignored as the command is overridden.
assert.Equal(t, 6, i)
}