Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb44ae40

Browse files
authored
test(cli): speed up stackdriver logging tests by setting GCE env (#16298)
1 parentab92306 commitb44ae40

File tree

1 file changed

+116
-93
lines changed

1 file changed

+116
-93
lines changed

‎cli/server_test.go

Lines changed: 116 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,26 +1387,6 @@ func TestServer(t *testing.T) {
13871387
})
13881388
})
13891389

1390-
waitFile:=func(t*testing.T,fiNamestring,dur time.Duration) {
1391-
varlastStat os.FileInfo
1392-
require.Eventually(t,func()bool {
1393-
varerrerror
1394-
lastStat,err=os.Stat(fiName)
1395-
iferr!=nil {
1396-
if!os.IsNotExist(err) {
1397-
t.Fatalf("unexpected error: %v",err)
1398-
}
1399-
returnfalse
1400-
}
1401-
returnlastStat.Size()>0
1402-
},
1403-
dur,//nolint:gocritic
1404-
testutil.IntervalFast,
1405-
"file at %s should exist, last stat: %+v",
1406-
fiName,lastStat,
1407-
)
1408-
}
1409-
14101390
t.Run("Logging",func(t*testing.T) {
14111391
t.Parallel()
14121392

@@ -1426,7 +1406,7 @@ func TestServer(t *testing.T) {
14261406
)
14271407
clitest.Start(t,root)
14281408

1429-
waitFile(t,fiName,testutil.WaitLong)
1409+
loggingWaitFile(t,fiName,testutil.WaitLong)
14301410
})
14311411

14321412
t.Run("Human",func(t*testing.T) {
@@ -1445,7 +1425,7 @@ func TestServer(t *testing.T) {
14451425
)
14461426
clitest.Start(t,root)
14471427

1448-
waitFile(t,fi,testutil.WaitShort)
1428+
loggingWaitFile(t,fi,testutil.WaitShort)
14491429
})
14501430

14511431
t.Run("JSON",func(t*testing.T) {
@@ -1464,77 +1444,7 @@ func TestServer(t *testing.T) {
14641444
)
14651445
clitest.Start(t,root)
14661446

1467-
waitFile(t,fi,testutil.WaitShort)
1468-
})
1469-
1470-
t.Run("Stackdriver",func(t*testing.T) {
1471-
t.Parallel()
1472-
ctx,cancelFunc:=context.WithTimeout(context.Background(),testutil.WaitSuperLong)
1473-
defercancelFunc()
1474-
1475-
fi:=testutil.TempFile(t,"","coder-logging-test-*")
1476-
1477-
inv,_:=clitest.New(t,
1478-
"server",
1479-
"--log-filter=.*",
1480-
"--in-memory",
1481-
"--http-address",":0",
1482-
"--access-url","http://example.com",
1483-
"--provisioner-daemons=3",
1484-
"--provisioner-types=echo",
1485-
"--log-stackdriver",fi,
1486-
)
1487-
// Attach pty so we get debug output from the command if this test
1488-
// fails.
1489-
pty:=ptytest.New(t).Attach(inv)
1490-
1491-
clitest.Start(t,inv.WithContext(ctx))
1492-
1493-
// Wait for server to listen on HTTP, this is a good
1494-
// starting point for expecting logs.
1495-
_=pty.ExpectMatchContext(ctx,"Started HTTP listener at")
1496-
1497-
waitFile(t,fi,testutil.WaitSuperLong)
1498-
})
1499-
1500-
t.Run("Multiple",func(t*testing.T) {
1501-
t.Parallel()
1502-
ctx,cancelFunc:=context.WithTimeout(context.Background(),testutil.WaitSuperLong)
1503-
defercancelFunc()
1504-
1505-
fi1:=testutil.TempFile(t,"","coder-logging-test-*")
1506-
fi2:=testutil.TempFile(t,"","coder-logging-test-*")
1507-
fi3:=testutil.TempFile(t,"","coder-logging-test-*")
1508-
1509-
// NOTE(mafredri): This test might end up downloading Terraform
1510-
// which can take a long time and end up failing the test.
1511-
// This is why we wait extra long below for server to listen on
1512-
// HTTP.
1513-
inv,_:=clitest.New(t,
1514-
"server",
1515-
"--log-filter=.*",
1516-
"--in-memory",
1517-
"--http-address",":0",
1518-
"--access-url","http://example.com",
1519-
"--provisioner-daemons=3",
1520-
"--provisioner-types=echo",
1521-
"--log-human",fi1,
1522-
"--log-json",fi2,
1523-
"--log-stackdriver",fi3,
1524-
)
1525-
// Attach pty so we get debug output from the command if this test
1526-
// fails.
1527-
pty:=ptytest.New(t).Attach(inv)
1528-
1529-
clitest.Start(t,inv)
1530-
1531-
// Wait for server to listen on HTTP, this is a good
1532-
// starting point for expecting logs.
1533-
_=pty.ExpectMatchContext(ctx,"Started HTTP listener at")
1534-
1535-
waitFile(t,fi1,testutil.WaitSuperLong)
1536-
waitFile(t,fi2,testutil.WaitSuperLong)
1537-
waitFile(t,fi3,testutil.WaitSuperLong)
1447+
loggingWaitFile(t,fi,testutil.WaitShort)
15381448
})
15391449
})
15401450

@@ -1629,6 +1539,119 @@ func TestServer(t *testing.T) {
16291539
})
16301540
}
16311541

1542+
//nolint:tparallel,paralleltest // This test sets environment variables.
1543+
funcTestServer_Logging_NoParallel(t*testing.T) {
1544+
server:=httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter,r*http.Request) {
1545+
_,_=io.Copy(io.Discard,r.Body)
1546+
_=r.Body.Close()
1547+
w.WriteHeader(http.StatusOK)
1548+
}))
1549+
t.Cleanup(func() {server.Close() })
1550+
1551+
// Speed up stackdriver test by using custom host. This is like
1552+
// saying we're running on GCE, so extra checks are skipped.
1553+
//
1554+
// Note, that the server isn't actually hit by the test, unsure why
1555+
// but kept just in case.
1556+
//
1557+
// From cloud.google.com/go/compute/metadata/metadata.go (used by coder/slog):
1558+
//
1559+
// metadataHostEnv is the environment variable specifying the
1560+
// GCE metadata hostname. If empty, the default value of
1561+
// metadataIP ("169.254.169.254") is used instead.
1562+
// This is variable name is not defined by any spec, as far as
1563+
// I know; it was made up for the Go package.
1564+
t.Setenv("GCE_METADATA_HOST",server.URL)
1565+
1566+
t.Run("Stackdriver",func(t*testing.T) {
1567+
ctx,cancelFunc:=context.WithTimeout(context.Background(),testutil.WaitSuperLong)
1568+
defercancelFunc()
1569+
1570+
fi:=testutil.TempFile(t,"","coder-logging-test-*")
1571+
1572+
inv,_:=clitest.New(t,
1573+
"server",
1574+
"--log-filter=.*",
1575+
"--in-memory",
1576+
"--http-address",":0",
1577+
"--access-url","http://example.com",
1578+
"--provisioner-daemons=3",
1579+
"--provisioner-types=echo",
1580+
"--log-stackdriver",fi,
1581+
)
1582+
// Attach pty so we get debug output from the command if this test
1583+
// fails.
1584+
pty:=ptytest.New(t).Attach(inv)
1585+
1586+
clitest.Start(t,inv.WithContext(ctx))
1587+
1588+
// Wait for server to listen on HTTP, this is a good
1589+
// starting point for expecting logs.
1590+
_=pty.ExpectMatchContext(ctx,"Started HTTP listener at")
1591+
1592+
loggingWaitFile(t,fi,testutil.WaitSuperLong)
1593+
})
1594+
1595+
t.Run("Multiple",func(t*testing.T) {
1596+
ctx,cancelFunc:=context.WithTimeout(context.Background(),testutil.WaitSuperLong)
1597+
defercancelFunc()
1598+
1599+
fi1:=testutil.TempFile(t,"","coder-logging-test-*")
1600+
fi2:=testutil.TempFile(t,"","coder-logging-test-*")
1601+
fi3:=testutil.TempFile(t,"","coder-logging-test-*")
1602+
1603+
// NOTE(mafredri): This test might end up downloading Terraform
1604+
// which can take a long time and end up failing the test.
1605+
// This is why we wait extra long below for server to listen on
1606+
// HTTP.
1607+
inv,_:=clitest.New(t,
1608+
"server",
1609+
"--log-filter=.*",
1610+
"--in-memory",
1611+
"--http-address",":0",
1612+
"--access-url","http://example.com",
1613+
"--provisioner-daemons=3",
1614+
"--provisioner-types=echo",
1615+
"--log-human",fi1,
1616+
"--log-json",fi2,
1617+
"--log-stackdriver",fi3,
1618+
)
1619+
// Attach pty so we get debug output from the command if this test
1620+
// fails.
1621+
pty:=ptytest.New(t).Attach(inv)
1622+
1623+
clitest.Start(t,inv)
1624+
1625+
// Wait for server to listen on HTTP, this is a good
1626+
// starting point for expecting logs.
1627+
_=pty.ExpectMatchContext(ctx,"Started HTTP listener at")
1628+
1629+
loggingWaitFile(t,fi1,testutil.WaitSuperLong)
1630+
loggingWaitFile(t,fi2,testutil.WaitSuperLong)
1631+
loggingWaitFile(t,fi3,testutil.WaitSuperLong)
1632+
})
1633+
}
1634+
1635+
funcloggingWaitFile(t*testing.T,fiNamestring,dur time.Duration) {
1636+
varlastStat os.FileInfo
1637+
require.Eventually(t,func()bool {
1638+
varerrerror
1639+
lastStat,err=os.Stat(fiName)
1640+
iferr!=nil {
1641+
if!os.IsNotExist(err) {
1642+
t.Fatalf("unexpected error: %v",err)
1643+
}
1644+
returnfalse
1645+
}
1646+
returnlastStat.Size()>0
1647+
},
1648+
dur,//nolint:gocritic
1649+
testutil.IntervalFast,
1650+
"file at %s should exist, last stat: %+v",
1651+
fiName,lastStat,
1652+
)
1653+
}
1654+
16321655
funcTestServer_Production(t*testing.T) {
16331656
t.Parallel()
16341657
ifruntime.GOOS!="linux"||testing.Short() {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp