mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
Adds a Logger to cli Invocation and standardizes CLI commands to use it. clitest creates a test logger by default so that CLI command logs are captured in the test logs. CLI commands that do their own log configuration are modified to add sinks to the existing logger, rather than create a new one. This ensures we still capture logs in CLI tests.
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"cdr.dev/slog"
|
|
"cdr.dev/slog/sloggers/slogtest"
|
|
"github.com/coder/coder/v2/agent/agenttest"
|
|
"github.com/coder/coder/v2/cli/clitest"
|
|
"github.com/coder/coder/v2/coderd/coderdtest"
|
|
"github.com/coder/coder/v2/codersdk"
|
|
"github.com/coder/coder/v2/pty/ptytest"
|
|
"github.com/coder/coder/v2/testutil"
|
|
)
|
|
|
|
func TestSpeedtest(t *testing.T) {
|
|
t.Parallel()
|
|
t.Skip("Flaky test - see https://github.com/coder/coder/issues/6321")
|
|
if testing.Short() {
|
|
t.Skip("This test takes a minimum of 5ms per a hardcoded value in Tailscale!")
|
|
}
|
|
client, workspace, agentToken := setupWorkspaceForAgent(t, nil)
|
|
_ = agenttest.New(t, client.URL, agentToken)
|
|
coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
|
defer cancel()
|
|
|
|
require.Eventually(t, func() bool {
|
|
ws, err := client.Workspace(ctx, workspace.ID)
|
|
if !assert.NoError(t, err) {
|
|
return false
|
|
}
|
|
a := ws.LatestBuild.Resources[0].Agents[0]
|
|
return a.Status == codersdk.WorkspaceAgentConnected &&
|
|
a.LifecycleState == codersdk.WorkspaceAgentLifecycleReady
|
|
}, testutil.WaitLong, testutil.IntervalFast, "agent is not ready")
|
|
|
|
inv, root := clitest.New(t, "speedtest", workspace.Name)
|
|
clitest.SetupConfig(t, client, root)
|
|
pty := ptytest.New(t)
|
|
inv.Stdout = pty.Output()
|
|
inv.Stderr = pty.Output()
|
|
|
|
ctx, cancel = context.WithTimeout(context.Background(), testutil.WaitLong)
|
|
defer cancel()
|
|
|
|
inv.Logger = slogtest.Make(t, nil).Named("speedtest").Leveled(slog.LevelDebug)
|
|
cmdDone := tGo(t, func() {
|
|
err := inv.WithContext(ctx).Run()
|
|
assert.NoError(t, err)
|
|
})
|
|
<-cmdDone
|
|
}
|