@@ -39,25 +39,25 @@ import (
39
39
)
40
40
41
41
func TestDeploymentInsights (t * testing.T ) {
42
- t .Skipf ("This test is flaky: https://github.com/coder/coder/issues/12509" )
43
-
44
42
t .Parallel ()
45
43
46
44
clientTz , err := time .LoadLocation ("America/Chicago" )
47
45
require .NoError (t , err )
48
46
49
- db , ps := dbtestutil .NewDB (t )
47
+ db , ps := dbtestutil .NewDB (t , dbtestutil . WithDumpOnFailure () )
50
48
logger := slogtest .Make (t , nil )
49
+ rollupEvents := make (chan dbrollup.Event )
51
50
client := coderdtest .New (t , & coderdtest.Options {
52
51
Database : db ,
53
52
Pubsub : ps ,
54
53
Logger : & logger ,
55
54
IncludeProvisionerDaemon : true ,
56
- AgentStatsRefreshInterval : time .Millisecond * 50 ,
55
+ AgentStatsRefreshInterval : time .Millisecond * 100 ,
57
56
DatabaseRolluper : dbrollup .New (
58
- logger .Named ("dbrollup" ),
57
+ logger .Named ("dbrollup" ). Leveled ( slog . LevelDebug ) ,
59
58
db ,
60
59
dbrollup .WithInterval (time .Millisecond * 100 ),
60
+ dbrollup .WithEventChannel (rollupEvents ),
61
61
),
62
62
})
63
63
@@ -75,57 +75,51 @@ func TestDeploymentInsights(t *testing.T) {
75
75
workspace := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
76
76
coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , workspace .LatestBuild .ID )
77
77
78
- _ = agenttest .New (t , client .URL , authToken )
79
- resources := coderdtest .AwaitWorkspaceAgents (t , client , workspace .ID )
80
- ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
81
- defer cancel ()
78
+ ctx := testutil .Context (t , testutil .WaitLong )
82
79
83
- daus , err := client .DeploymentDAUs (context .Background (), codersdk .TimezoneOffsetHour (clientTz ))
80
+ // Pre-check, no permission issues.
81
+ daus , err := client .DeploymentDAUs (ctx , codersdk .TimezoneOffsetHour (clientTz ))
84
82
require .NoError (t , err )
85
83
86
- res , err := client .Workspaces (ctx , codersdk.WorkspaceFilter {})
87
- require .NoError (t , err )
88
- assert .NotZero (t , res .Workspaces [0 ].LastUsedAt )
84
+ _ = agenttest .New (t , client .URL , authToken )
85
+ resources := coderdtest .NewWorkspaceAgentWaiter (t , client , workspace .ID ).Wait ()
89
86
90
87
conn , err := workspacesdk .New (client ).
91
88
DialAgent (ctx , resources [0 ].Agents [0 ].ID , & workspacesdk.DialAgentOptions {
92
- Logger : slogtest .Make (t , nil ).Named ("tailnet " ),
89
+ Logger : slogtest .Make (t , nil ).Named ("dialagent " ),
93
90
})
94
91
require .NoError (t , err )
95
- defer func () {
96
- _ = conn .Close ()
97
- }()
92
+ defer conn .Close ()
98
93
99
94
sshConn , err := conn .SSHClient (ctx )
100
95
require .NoError (t , err )
101
- _ = sshConn .Close ()
96
+ defer sshConn .Close ()
102
97
103
- wantDAUs := & codersdk.DAUsResponse {
104
- TZHourOffset : codersdk .TimezoneOffsetHour (clientTz ),
105
- Entries : []codersdk.DAUEntry {
106
- {
107
- Date : time .Now ().In (clientTz ).Format ("2006-01-02" ),
108
- Amount : 1 ,
109
- },
110
- },
111
- }
112
- require .Eventuallyf (t , func () bool {
113
- daus , err = client .DeploymentDAUs (ctx , codersdk .TimezoneOffsetHour (clientTz ))
114
- require .NoError (t , err )
115
- return len (daus .Entries ) > 0
116
- },
117
- testutil .WaitShort , testutil .IntervalFast ,
118
- "deployment daus never loaded" ,
119
- )
120
- gotDAUs , err := client .DeploymentDAUs (ctx , codersdk .TimezoneOffsetHour (clientTz ))
98
+ sess , err := sshConn .NewSession ()
121
99
require .NoError (t , err )
122
- require . Equal ( t , gotDAUs , wantDAUs )
100
+ defer sess . Close ( )
123
101
124
- template , err = client .Template (ctx , template .ID )
102
+ r , w := io .Pipe ()
103
+ defer r .Close ()
104
+ defer w .Close ()
105
+ sess .Stdin = r
106
+ sess .Stdout = io .Discard
107
+ err = sess .Start ("cat" )
125
108
require .NoError (t , err )
126
109
127
- res , err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
128
- require .NoError (t , err )
110
+ for {
111
+ select {
112
+ case <- ctx .Done ():
113
+ require .Fail (t , "timed out waiting for deployment daus to update" , daus )
114
+ case <- rollupEvents :
115
+ }
116
+
117
+ daus , err = client .DeploymentDAUs (ctx , codersdk .TimezoneOffsetHour (clientTz ))
118
+ require .NoError (t , err )
119
+ if len (daus .Entries ) > 0 && daus .Entries [len (daus .Entries )- 1 ].Amount > 0 {
120
+ break
121
+ }
122
+ }
129
123
}
130
124
131
125
func TestUserActivityInsights_SanityCheck (t * testing.T ) {
0 commit comments