mirror of
https://github.com/gravitational/teleport
synced 2024-10-20 01:03:40 +00:00
Disable disk-based recording for TestWebAgentForward (#19580)
Also improve the correctness of web tests that use waitForOutput by checking if the output was received even when the read fails with an error. Fixes #17918
This commit is contained in:
parent
c286e4cd94
commit
749dbcd5a2
|
@ -166,6 +166,8 @@ func newWebSuite(t *testing.T) *WebSuite {
|
|||
type webSuiteConfig struct {
|
||||
// AuthPreferenceSpec is custom initial AuthPreference spec for the test.
|
||||
authPreferenceSpec *types.AuthPreferenceSpecV2
|
||||
|
||||
disableDiskBasedRecording bool
|
||||
}
|
||||
|
||||
func newWebSuiteWithConfig(t *testing.T, cfg webSuiteConfig) *WebSuite {
|
||||
|
@ -190,17 +192,33 @@ func newWebSuiteWithConfig(t *testing.T, cfg webSuiteConfig) *WebSuite {
|
|||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
s.server, err = auth.NewTestServer(auth.TestServerConfig{
|
||||
authCfg := auth.TestServerConfig{
|
||||
Auth: auth.TestAuthServerConfig{
|
||||
ClusterName: "localhost",
|
||||
Dir: t.TempDir(),
|
||||
Clock: s.clock,
|
||||
ClusterNetworkingConfig: networkingConfig,
|
||||
AuthPreferenceSpec: cfg.authPreferenceSpec,
|
||||
|
||||
AuthPreferenceSpec: cfg.authPreferenceSpec,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if cfg.disableDiskBasedRecording {
|
||||
authCfg.Auth.AuditLog = events.NewDiscardAuditLog()
|
||||
}
|
||||
|
||||
s.server, err = auth.NewTestServer(authCfg)
|
||||
require.NoError(t, err)
|
||||
|
||||
if cfg.disableDiskBasedRecording {
|
||||
// use a sync recording mode because the disk-based uploader
|
||||
// that runs in the background introduces races with test cleanup
|
||||
recConfig := types.DefaultSessionRecordingConfig()
|
||||
recConfig.SetMode(types.RecordAtNodeSync)
|
||||
err := s.server.AuthServer.AuthServer.SetSessionRecordingConfig(context.Background(), recConfig)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
// Register the auth server, since test auth server doesn't start its own
|
||||
// heartbeat.
|
||||
err = s.server.Auth().UpsertAuthServer(&types.ServerV2{
|
||||
|
@ -1784,7 +1802,7 @@ func handleMFAWebauthnChallenge(t *testing.T, ws *websocket.Conn, dev *auth.Test
|
|||
|
||||
func TestWebAgentForward(t *testing.T) {
|
||||
t.Parallel()
|
||||
s := newWebSuite(t)
|
||||
s := newWebSuiteWithConfig(t, webSuiteConfig{disableDiskBasedRecording: true})
|
||||
ws, _, err := s.makeTerminal(t, s.authPack(t, "foo"))
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() { require.NoError(t, ws.Close()) })
|
||||
|
@ -6084,13 +6102,16 @@ func waitForOutput(stream *terminalStream, substr string) error {
|
|||
}
|
||||
|
||||
out := make([]byte, 100)
|
||||
_, err := stream.Read(out)
|
||||
n, err := stream.Read(out)
|
||||
|
||||
// check for the string before checking the error,
|
||||
// as it's valid for n > 0 even when there is an error
|
||||
if n > 0 && strings.Contains(removeSpace(string(out[:n])), substr) {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
return trace.Wrap(err)
|
||||
}
|
||||
if strings.Contains(removeSpace(string(out)), substr) {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue