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

Commit7eb4119

Browse files
authored
test: fix TestSSHServer_ClosesStdin to handle non-atomic write (#19174)
fixescoder/internal#863We read an output file in a loop, but this could lead to races where the other process has created the file but not written, or a partial write in progress. Fix is to retry if the content is shorter than we expect.
1 parentb0ba798 commit7eb4119

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

‎agent/agentssh/agentssh_test.go‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,9 @@ func TestSSHServer_ClosesStdin(t *testing.T) {
413413

414414
ctx:=testutil.Context(t,testutil.WaitMedium)
415415
logger:=testutil.Logger(t)
416-
s,err:=agentssh.NewServer(ctx,logger,prometheus.NewRegistry(),afero.NewMemMapFs(),agentexec.DefaultExecer,nil)
416+
s,err:=agentssh.NewServer(ctx,logger.Named("ssh-server"),prometheus.NewRegistry(),afero.NewMemMapFs(),agentexec.DefaultExecer,nil)
417417
require.NoError(t,err)
418+
logger=logger.Named("test")
418419
defers.Close()
419420
err=s.UpdateHostSigner(42)
420421
assert.NoError(t,err)
@@ -469,15 +470,25 @@ func TestSSHServer_ClosesStdin(t *testing.T) {
469470
err=testutil.RequireReceive(ctx,t,readCh)
470471
require.NoError(t,err)
471472

472-
sess.Close()
473+
err=sess.Close()
474+
require.NoError(t,err)
473475

474476
varcontent []byte
477+
expected:= []byte("read exit code: 1\n")
475478
testutil.Eventually(ctx,t,func(_ context.Context)bool {
476479
content,err=os.ReadFile(filePath)
477-
returnerr==nil
480+
iferr!=nil {
481+
logger.Debug(ctx,"failed to read file; will retry",slog.Error(err))
482+
returnfalse
483+
}
484+
iflen(content)!=len(expected) {
485+
logger.Debug(ctx,"file is partially written",slog.F("content",content))
486+
returnfalse
487+
}
488+
returntrue
478489
},testutil.IntervalFast)
479490
require.NoError(t,err)
480-
require.Equal(t,"read exit code: 1\n",string(content))
491+
require.Equal(t,string(expected),string(content))
481492
}
482493

483494
funcsshClient(t*testing.T,addrstring)*ssh.Client {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp