Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
new api tests + gen
  • Loading branch information
ethanndickson committed Jun 6, 2024
commit 48b31d38598229616382c80efdaee1f18eb46fbc
646 changes: 11 additions & 635 deletions coderd/apidoc/docs.go

Large diffs are not rendered by default.

566 changes: 0 additions & 566 deletions coderd/apidoc/swagger.json

Large diffs are not rendered by default.

211 changes: 0 additions & 211 deletions coderd/prometheusmetrics/insights/metricscollector_test.go

This file was deleted.

57 changes: 35 additions & 22 deletions coderd/prometheusmetrics/prometheusmetrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"cdr.dev/slog"
"cdr.dev/slog/sloggers/slogtest"

agentproto "github.com/coder/coder/v2/agent/proto"
"github.com/coder/coder/v2/coderd/agentmetrics"
"github.com/coder/coder/v2/coderd/batchstats"
"github.com/coder/coder/v2/coderd/coderdtest"
Expand Down Expand Up @@ -415,36 +416,45 @@ func TestAgentStats(t *testing.T) {

user := coderdtest.CreateFirstUser(t, client)

agent1 := prepareWorkspaceAndAgent(t, client, user, 1)
agent2 := prepareWorkspaceAndAgent(t, client, user, 2)
agent3 := prepareWorkspaceAndAgent(t, client, user, 3)
agent1 := prepareWorkspaceAndAgent(ctx, t, client, user, 1)
agent2 := prepareWorkspaceAndAgent(ctx, t, client, user, 2)
agent3 := prepareWorkspaceAndAgent(ctx, t, client, user, 3)
defer agent1.DRPCConn().Close()
defer agent2.DRPCConn().Close()
defer agent3.DRPCConn().Close()

registry := prometheus.NewRegistry()

// given
var i int64
for i = 0; i < 3; i++ {
_, err = agent1.PostStats(ctx, &agentsdk.Stats{
TxBytes: 1 + i, RxBytes: 2 + i,
SessionCountVSCode: 3 + i, SessionCountJetBrains: 4 + i, SessionCountReconnectingPTY: 5 + i, SessionCountSSH: 6 + i,
ConnectionCount: 7 + i, ConnectionMedianLatencyMS: 8000,
ConnectionsByProto: map[string]int64{"TCP": 1},
_, err = agent1.UpdateStats(ctx, &agentproto.UpdateStatsRequest{
Stats: &agentproto.Stats{
TxBytes: 1 + i, RxBytes: 2 + i,
SessionCountVscode: 3 + i, SessionCountJetbrains: 4 + i, SessionCountReconnectingPty: 5 + i, SessionCountSsh: 6 + i,
ConnectionCount: 7 + i, ConnectionMedianLatencyMs: 8000,
ConnectionsByProto: map[string]int64{"TCP": 1},
},
})
require.NoError(t, err)

_, err = agent2.PostStats(ctx, &agentsdk.Stats{
TxBytes: 2 + i, RxBytes: 4 + i,
SessionCountVSCode: 6 + i, SessionCountJetBrains: 8 + i, SessionCountReconnectingPTY: 10 + i, SessionCountSSH: 12 + i,
ConnectionCount: 8 + i, ConnectionMedianLatencyMS: 10000,
ConnectionsByProto: map[string]int64{"TCP": 1},
_, err = agent2.UpdateStats(ctx, &agentproto.UpdateStatsRequest{
Stats: &agentproto.Stats{
TxBytes: 2 + i, RxBytes: 4 + i,
SessionCountVscode: 6 + i, SessionCountJetbrains: 8 + i, SessionCountReconnectingPty: 10 + i, SessionCountSsh: 12 + i,
ConnectionCount: 8 + i, ConnectionMedianLatencyMs: 10000,
ConnectionsByProto: map[string]int64{"TCP": 1},
},
})
require.NoError(t, err)

_, err = agent3.PostStats(ctx, &agentsdk.Stats{
TxBytes: 3 + i, RxBytes: 6 + i,
SessionCountVSCode: 12 + i, SessionCountJetBrains: 14 + i, SessionCountReconnectingPTY: 16 + i, SessionCountSSH: 18 + i,
ConnectionCount: 9 + i, ConnectionMedianLatencyMS: 12000,
ConnectionsByProto: map[string]int64{"TCP": 1},
_, err = agent3.UpdateStats(ctx, &agentproto.UpdateStatsRequest{
Stats: &agentproto.Stats{
TxBytes: 3 + i, RxBytes: 6 + i,
SessionCountVscode: 12 + i, SessionCountJetbrains: 14 + i, SessionCountReconnectingPty: 16 + i, SessionCountSsh: 18 + i,
ConnectionCount: 9 + i, ConnectionMedianLatencyMs: 12000,
ConnectionsByProto: map[string]int64{"TCP": 1},
},
})
require.NoError(t, err)
}
Expand Down Expand Up @@ -596,7 +606,7 @@ func TestExperimentsMetric(t *testing.T) {
}
}

func prepareWorkspaceAndAgent(t *testing.T, client *codersdk.Client, user codersdk.CreateFirstUserResponse, workspaceNum int) *agentsdk.Client {
func prepareWorkspaceAndAgent(ctx context.Context, t *testing.T, client *codersdk.Client, user codersdk.CreateFirstUserResponse, workspaceNum int) agentproto.DRPCAgentClient {
authToken := uuid.NewString()

version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Expand All @@ -611,9 +621,12 @@ func prepareWorkspaceAndAgent(t *testing.T, client *codersdk.Client, user coders
})
coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)

agentClient := agentsdk.New(client.URL)
agentClient.SetSessionToken(authToken)
return agentClient
ac := agentsdk.New(client.URL)
ac.SetSessionToken(authToken)
conn, err := ac.ConnectRPC(ctx)
require.NoError(t, err)
agentAPI := agentproto.NewDRPCAgentClient(conn)
return agentAPI
}

var (
Expand Down
22 changes: 14 additions & 8 deletions coderd/workspaceagents_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/xerrors"
"google.golang.org/protobuf/types/known/timestamppb"
"tailscale.com/tailcfg"

"cdr.dev/slog"
Expand Down Expand Up @@ -967,6 +968,7 @@ func TestWorkspaceAgent_LifecycleState(t *testing.T) {

t.Run("Set", func(t *testing.T) {
t.Parallel()
ctx := testutil.Context(t, testutil.WaitLong)

client, db := coderdtest.NewWithDatabase(t, nil)
user := coderdtest.CreateFirstUser(t, client)
Expand All @@ -982,8 +984,11 @@ func TestWorkspaceAgent_LifecycleState(t *testing.T) {
}
}

agentClient := agentsdk.New(client.URL)
agentClient.SetSessionToken(r.AgentToken)
ac := agentsdk.New(client.URL)
ac.SetSessionToken(r.AgentToken)
conn, err := ac.ConnectRPC(ctx)
require.NoError(t, err)
agentAPI := agentproto.NewDRPCAgentClient(conn)

tests := []struct {
state codersdk.WorkspaceAgentLifecycle
Expand All @@ -1005,16 +1010,17 @@ func TestWorkspaceAgent_LifecycleState(t *testing.T) {
for _, tt := range tests {
tt := tt
t.Run(string(tt.state), func(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitLong)

err := agentClient.PostLifecycle(ctx, agentsdk.PostLifecycleRequest{
State: tt.state,
ChangedAt: time.Now(),
})
state, err := agentsdk.ProtoFromLifecycleState(tt.state)
if tt.wantErr {
require.Error(t, err)
return
}
_, err = agentAPI.UpdateLifecycle(ctx, &agentproto.UpdateLifecycleRequest{
Lifecycle: &agentproto.Lifecycle{
State: state,
ChangedAt: timestamppb.Now(),
},
})
require.NoError(t, err, "post lifecycle state %q", tt.state)

workspace, err = client.Workspace(ctx, workspace.ID)
Expand Down
Loading