@@ -35,6 +35,7 @@ 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"
38
39
"github.com/coder/coder/pty/ptytest"
39
40
"github.com/coder/coder/testutil"
40
41
)
@@ -1122,6 +1123,194 @@ func TestServer(t *testing.T) {
1122
1123
<- serverErr
1123
1124
})
1124
1125
})
1126
+
1127
+ t .Run ("Logging" , func (t * testing.T ) {
1128
+ t .Parallel ()
1129
+
1130
+ t .Run ("CreatesFile" , func (t * testing.T ) {
1131
+ t .Parallel ()
1132
+ ctx , cancelFunc := context .WithCancel (context .Background ())
1133
+ defer cancelFunc ()
1134
+
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
+ }()
1141
+
1142
+ root , _ := clitest .New (t ,
1143
+ "server" ,
1144
+ "--verbose" ,
1145
+ "--in-memory" ,
1146
+ "--http-address" , ":0" ,
1147
+ "--access-url" , "http://example.com" ,
1148
+ "--log-human" , fiName ,
1149
+ )
1150
+ serverErr := make (chan error , 1 )
1151
+ go func () {
1152
+ serverErr <- root .ExecuteContext (ctx )
1153
+ }()
1154
+
1155
+ assert .Eventually (t , func () bool {
1156
+ stat , err := os .Stat (fiName )
1157
+ return err == nil && stat .Size () > 0
1158
+ }, testutil .WaitShort , testutil .IntervalFast )
1159
+ cancelFunc ()
1160
+ <- serverErr
1161
+ })
1162
+
1163
+ t .Run ("Human" , func (t * testing.T ) {
1164
+ t .Parallel ()
1165
+ ctx , cancelFunc := context .WithCancel (context .Background ())
1166
+ defer cancelFunc ()
1167
+
1168
+ fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1169
+ require .NoError (t , err )
1170
+ defer func () {
1171
+ _ = os .Remove (fi .Name ())
1172
+ }()
1173
+
1174
+ root , _ := clitest .New (t ,
1175
+ "server" ,
1176
+ "--verbose" ,
1177
+ "--in-memory" ,
1178
+ "--http-address" , ":0" ,
1179
+ "--access-url" , "http://example.com" ,
1180
+ "--log-human" , fi .Name (),
1181
+ )
1182
+ serverErr := make (chan error , 1 )
1183
+ go func () {
1184
+ serverErr <- root .ExecuteContext (ctx )
1185
+ }()
1186
+
1187
+ assert .Eventually (t , func () bool {
1188
+ stat , err := os .Stat (fi .Name ())
1189
+ return err == nil && stat .Size () > 0
1190
+ }, testutil .WaitShort , testutil .IntervalFast )
1191
+ cancelFunc ()
1192
+ <- serverErr
1193
+ })
1194
+
1195
+ t .Run ("JSON" , func (t * testing.T ) {
1196
+ t .Parallel ()
1197
+ ctx , cancelFunc := context .WithCancel (context .Background ())
1198
+ defer cancelFunc ()
1199
+
1200
+ fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1201
+ require .NoError (t , err )
1202
+ defer func () {
1203
+ _ = os .Remove (fi .Name ())
1204
+ }()
1205
+
1206
+ root , _ := clitest .New (t ,
1207
+ "server" ,
1208
+ "--verbose" ,
1209
+ "--in-memory" ,
1210
+ "--http-address" , ":0" ,
1211
+ "--access-url" , "http://example.com" ,
1212
+ "--log-json" , fi .Name (),
1213
+ )
1214
+ serverErr := make (chan error , 1 )
1215
+ go func () {
1216
+ serverErr <- root .ExecuteContext (ctx )
1217
+ }()
1218
+
1219
+ assert .Eventually (t , func () bool {
1220
+ stat , err := os .Stat (fi .Name ())
1221
+ return err == nil && stat .Size () > 0
1222
+ }, testutil .WaitShort , testutil .IntervalFast )
1223
+ cancelFunc ()
1224
+ <- serverErr
1225
+ })
1226
+
1227
+ t .Run ("Stackdriver" , func (t * testing.T ) {
1228
+ t .Parallel ()
1229
+ ctx , cancelFunc := context .WithCancel (context .Background ())
1230
+ defer cancelFunc ()
1231
+
1232
+ fi , err := os .CreateTemp ("" , "coder-logging-test-*" )
1233
+ require .NoError (t , err )
1234
+ defer func () {
1235
+ _ = os .Remove (fi .Name ())
1236
+ }()
1237
+
1238
+ root , _ := clitest .New (t ,
1239
+ "server" ,
1240
+ "--verbose" ,
1241
+ "--in-memory" ,
1242
+ "--http-address" , ":0" ,
1243
+ "--access-url" , "http://example.com" ,
1244
+ "--log-stackdriver" , fi .Name (),
1245
+ )
1246
+ serverErr := make (chan error , 1 )
1247
+ go func () {
1248
+ serverErr <- root .ExecuteContext (ctx )
1249
+ }()
1250
+
1251
+ assert .Eventually (t , func () bool {
1252
+ stat , err := os .Stat (fi .Name ())
1253
+ return err == nil && stat .Size () > 0
1254
+ }, testutil .WaitLong , testutil .IntervalMedium )
1255
+ cancelFunc ()
1256
+ <- serverErr
1257
+ })
1258
+
1259
+ t .Run ("Multiple" , func (t * testing.T ) {
1260
+ t .Parallel ()
1261
+ ctx , cancelFunc := context .WithCancel (context .Background ())
1262
+ defer cancelFunc ()
1263
+
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
+ }()
1281
+
1282
+ root , _ := clitest .New (t ,
1283
+ "server" ,
1284
+ "--verbose" ,
1285
+ "--in-memory" ,
1286
+ "--http-address" , ":0" ,
1287
+ "--access-url" , "http://example.com" ,
1288
+ "--log-human" , fi1 .Name (),
1289
+ "--log-json" , fi2 .Name (),
1290
+ "--log-stackdriver" , fi3 .Name (),
1291
+ )
1292
+ serverErr := make (chan error , 1 )
1293
+ go func () {
1294
+ serverErr <- root .ExecuteContext (ctx )
1295
+ }()
1296
+
1297
+ assert .Eventually (t , func () bool {
1298
+ stat , err := os .Stat (fi1 .Name ())
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 ())
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 ())
1307
+ return err == nil && stat .Size () > 0
1308
+ }, testutil .WaitLong , testutil .IntervalMedium )
1309
+
1310
+ cancelFunc ()
1311
+ <- serverErr
1312
+ })
1313
+ })
1125
1314
}
1126
1315
1127
1316
func generateTLSCertificate (t testing.TB , commonName ... string ) (certPath , keyPath string ) {
0 commit comments