@@ -35,7 +35,6 @@ import (
35
35
"github.com/coder/coder/coderd/database/postgres"
36
36
"github.com/coder/coder/coderd/telemetry"
37
37
"github.com/coder/coder/codersdk"
38
- "github.com/coder/coder/cryptorand"
39
38
"github.com/coder/coder/pty/ptytest"
40
39
"github.com/coder/coder/testutil"
41
40
)
@@ -1132,12 +1131,7 @@ func TestServer(t *testing.T) {
1132
1131
ctx , cancelFunc := context .WithCancel (context .Background ())
1133
1132
defer cancelFunc ()
1134
1133
1135
- random , err := cryptorand .String (5 )
1136
- require .NoError (t , err )
1137
- fiName := fmt .Sprint (os .TempDir (), "/coder-logging-test-" , random )
1138
- defer func () {
1139
- _ = os .Remove (fiName )
1140
- }()
1134
+ fiName := testutil .TempFile (t , "" , "coder-logging-test-*" )
1141
1135
1142
1136
root , _ := clitest .New (t ,
1143
1137
"server" ,
@@ -1165,27 +1159,23 @@ func TestServer(t *testing.T) {
1165
1159
ctx , cancelFunc := context .WithCancel (context .Background ())
1166
1160
defer cancelFunc ()
1167
1161
1168
- fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1169
- require .NoError (t , err )
1170
- defer func () {
1171
- _ = os .Remove (fi .Name ())
1172
- }()
1162
+ fi := testutil .TempFile (t , "" , "coder-logging-test-*" )
1173
1163
1174
1164
root , _ := clitest .New (t ,
1175
1165
"server" ,
1176
1166
"--verbose" ,
1177
1167
"--in-memory" ,
1178
1168
"--http-address" , ":0" ,
1179
1169
"--access-url" , "http://example.com" ,
1180
- "--log-human" , fi . Name () ,
1170
+ "--log-human" , fi ,
1181
1171
)
1182
1172
serverErr := make (chan error , 1 )
1183
1173
go func () {
1184
1174
serverErr <- root .ExecuteContext (ctx )
1185
1175
}()
1186
1176
1187
1177
assert .Eventually (t , func () bool {
1188
- stat , err := os .Stat (fi . Name () )
1178
+ stat , err := os .Stat (fi )
1189
1179
return err == nil && stat .Size () > 0
1190
1180
}, testutil .WaitShort , testutil .IntervalFast )
1191
1181
cancelFunc ()
@@ -1197,27 +1187,23 @@ func TestServer(t *testing.T) {
1197
1187
ctx , cancelFunc := context .WithCancel (context .Background ())
1198
1188
defer cancelFunc ()
1199
1189
1200
- fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1201
- require .NoError (t , err )
1202
- defer func () {
1203
- _ = os .Remove (fi .Name ())
1204
- }()
1190
+ fi := testutil .TempFile (t , "" , "coder-logging-test-*" )
1205
1191
1206
1192
root , _ := clitest .New (t ,
1207
1193
"server" ,
1208
1194
"--verbose" ,
1209
1195
"--in-memory" ,
1210
1196
"--http-address" , ":0" ,
1211
1197
"--access-url" , "http://example.com" ,
1212
- "--log-json" , fi . Name () ,
1198
+ "--log-json" , fi ,
1213
1199
)
1214
1200
serverErr := make (chan error , 1 )
1215
1201
go func () {
1216
1202
serverErr <- root .ExecuteContext (ctx )
1217
1203
}()
1218
1204
1219
1205
assert .Eventually (t , func () bool {
1220
- stat , err := os .Stat (fi . Name () )
1206
+ stat , err := os .Stat (fi )
1221
1207
return err == nil && stat .Size () > 0
1222
1208
}, testutil .WaitShort , testutil .IntervalFast )
1223
1209
cancelFunc ()
@@ -1229,86 +1215,97 @@ func TestServer(t *testing.T) {
1229
1215
ctx , cancelFunc := context .WithCancel (context .Background ())
1230
1216
defer cancelFunc ()
1231
1217
1232
- fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1233
- require .NoError (t , err )
1234
- defer func () {
1235
- _ = os .Remove (fi .Name ())
1236
- }()
1218
+ fi := testutil .TempFile (t , "" , "coder-logging-test-*" )
1237
1219
1238
1220
root , _ := clitest .New (t ,
1239
1221
"server" ,
1240
1222
"--verbose" ,
1241
1223
"--in-memory" ,
1242
1224
"--http-address" , ":0" ,
1243
1225
"--access-url" , "http://example.com" ,
1244
- "--log-stackdriver" , fi . Name () ,
1226
+ "--log-stackdriver" , fi ,
1245
1227
)
1228
+ // Attach pty so we get debug output from the command if this test
1229
+ // fails.
1230
+ pty := ptytest .New (t )
1231
+ root .SetOut (pty .Output ())
1232
+ root .SetErr (pty .Output ())
1233
+
1246
1234
serverErr := make (chan error , 1 )
1247
1235
go func () {
1248
1236
serverErr <- root .ExecuteContext (ctx )
1249
1237
}()
1238
+ defer func () {
1239
+ cancelFunc ()
1240
+ <- serverErr
1241
+ }()
1250
1242
1251
- assert .Eventually (t , func () bool {
1252
- stat , err := os .Stat (fi .Name ())
1243
+ require .Eventually (t , func () bool {
1244
+ line := pty .ReadLine ()
1245
+ return strings .HasPrefix (line , "Started HTTP listener at " )
1246
+ }, testutil .WaitLong * 2 , testutil .IntervalMedium , "wait for server to listen on http" )
1247
+
1248
+ require .Eventually (t , func () bool {
1249
+ stat , err := os .Stat (fi )
1253
1250
return err == nil && stat .Size () > 0
1254
1251
}, testutil .WaitLong , testutil .IntervalMedium )
1255
- cancelFunc ()
1256
- <- serverErr
1257
1252
})
1258
1253
1259
1254
t .Run ("Multiple" , func (t * testing.T ) {
1260
1255
t .Parallel ()
1261
1256
ctx , cancelFunc := context .WithCancel (context .Background ())
1262
1257
defer cancelFunc ()
1263
1258
1264
- fi1 , err := os .CreateTemp ("" , "coder-logging-test-*" )
1265
- require .NoError (t , err )
1266
- defer func () {
1267
- _ = os .Remove (fi1 .Name ())
1268
- }()
1269
-
1270
- fi2 , err := os .CreateTemp ("" , "coder-logging-test-*" )
1271
- require .NoError (t , err )
1272
- defer func () {
1273
- _ = os .Remove (fi2 .Name ())
1274
- }()
1275
-
1276
- fi3 , err := os .CreateTemp ("" , "coder-logging-test-*" )
1277
- require .NoError (t , err )
1278
- defer func () {
1279
- _ = os .Remove (fi3 .Name ())
1280
- }()
1259
+ fi1 := testutil .TempFile (t , "" , "coder-logging-test-*" )
1260
+ fi2 := testutil .TempFile (t , "" , "coder-logging-test-*" )
1261
+ fi3 := testutil .TempFile (t , "" , "coder-logging-test-*" )
1281
1262
1263
+ // NOTE(mafredri): This test might end up downloading Terraform
1264
+ // which can take a long time and end up failing the test.
1265
+ // This is why we wait extra long below for server to listen on
1266
+ // HTTP.
1282
1267
root , _ := clitest .New (t ,
1283
1268
"server" ,
1284
1269
"--verbose" ,
1285
1270
"--in-memory" ,
1286
1271
"--http-address" , ":0" ,
1287
1272
"--access-url" , "http://example.com" ,
1288
- "--log-human" , fi1 . Name () ,
1289
- "--log-json" , fi2 . Name () ,
1290
- "--log-stackdriver" , fi3 . Name () ,
1273
+ "--log-human" , fi1 ,
1274
+ "--log-json" , fi2 ,
1275
+ "--log-stackdriver" , fi3 ,
1291
1276
)
1277
+ // Attach pty so we get debug output from the command if this test
1278
+ // fails.
1279
+ pty := ptytest .New (t )
1280
+ root .SetOut (pty .Output ())
1281
+ root .SetErr (pty .Output ())
1282
+
1292
1283
serverErr := make (chan error , 1 )
1293
1284
go func () {
1294
1285
serverErr <- root .ExecuteContext (ctx )
1295
1286
}()
1287
+ defer func () {
1288
+ cancelFunc ()
1289
+ <- serverErr
1290
+ }()
1296
1291
1297
- assert .Eventually (t , func () bool {
1298
- stat , err := os .Stat (fi1 .Name ())
1292
+ require .Eventually (t , func () bool {
1293
+ line := pty .ReadLine ()
1294
+ return strings .HasPrefix (line , "Started HTTP listener at " )
1295
+ }, testutil .WaitLong * 2 , testutil .IntervalMedium , "wait for server to listen on http" )
1296
+
1297
+ require .Eventually (t , func () bool {
1298
+ stat , err := os .Stat (fi1 )
1299
1299
return err == nil && stat .Size () > 0
1300
- }, testutil .WaitLong , testutil .IntervalMedium )
1301
- assert .Eventually (t , func () bool {
1302
- stat , err := os .Stat (fi2 . Name () )
1300
+ }, testutil .WaitShort , testutil .IntervalMedium , "log human size > 0" )
1301
+ require .Eventually (t , func () bool {
1302
+ stat , err := os .Stat (fi2 )
1303
1303
return err == nil && stat .Size () > 0
1304
- }, testutil .WaitLong , testutil .IntervalMedium )
1305
- assert .Eventually (t , func () bool {
1306
- stat , err := os .Stat (fi3 . Name () )
1304
+ }, testutil .WaitShort , testutil .IntervalMedium , "log json size > 0" )
1305
+ require .Eventually (t , func () bool {
1306
+ stat , err := os .Stat (fi3 )
1307
1307
return err == nil && stat .Size () > 0
1308
- }, testutil .WaitLong , testutil .IntervalMedium )
1309
-
1310
- cancelFunc ()
1311
- <- serverErr
1308
+ }, testutil .WaitShort , testutil .IntervalMedium , "log stackdriver size > 0" )
1312
1309
})
1313
1310
})
1314
1311
}
0 commit comments