Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tests calling terminating signals to func-e #372

Merged
merged 6 commits into from
Sep 14, 2021
Merged

Conversation

dio
Copy link
Collaborator

@dio dio commented Sep 13, 2021

This is a follow-up for #371 (review) to test a set of possible signals (SIGINT, SIGTERM, SIGKILL) to terminate func-e.

A minor change on checking the stderr: this PR uses a scanner instead of peeking on the buffer since for some reason redirecting cmd.Stderr to a buffer doesn't give complete stderr after the process is terminated. Hence here we use a scanner to io.ReadCloser returned by cmd.StderrPipe() instead.

Signed-off-by: Dhi Aurrahman dio@rockybars.com

dio added 2 commits September 13, 2021 15:37
This is a follow-up for
#371 (review)
to test all possible signals to func-e.

A minor change on checking the stderr: this uses scanner instead of peek
on the buffer since for some reason redirecting cmd.Stderr to a buffer
doesn't give complete stderr after the process is terminated. Hence here
we use scanner to io.ReadCloser of cmd.StderrPipe() instead.

Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
@dio
Copy link
Collaborator Author

dio commented Sep 13, 2021

Seems like adding more parallel tests gives Windows a hard time?

@dio dio marked this pull request as draft September 13, 2021 23:21
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
@dio dio marked this pull request as ready for review September 13, 2021 23:40
@dio dio requested a review from mathetake September 13, 2021 23:40
stop()

// Simulate handleShutdown like in envoy.Run.
_ = moreos.Interrupt(cmd.Process)
Copy link
Collaborator Author

@dio dio Sep 13, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably this one causing -1073741510 on Windows? If we don't have this, we waste 5 secs waiting for the child process to terminate.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is because I didn't set the cmd.SysProcAttr for windows.

dio added 2 commits September 13, 2021 20:21
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
Copy link
Member

@mathetake mathetake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall looks great!

requireFindProcessError(t, fakeEnvoyProcess, process.ErrorProcessNotRunning)
tc.signal(cmd.Process)
if tc.waitForExiting {
requireScannedWaitFor(t, stderrScanner, "exiting")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe adding comment about where "exiting" comes from would help future contributor :D

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. A good call. I added it.

internal/moreos/testdata/fake_func-e.go Outdated Show resolved Hide resolved
internal/moreos/testdata/fake_func-e.go Show resolved Hide resolved
internal/moreos/moreos_func-e_test.go Outdated Show resolved Hide resolved
Signed-off-by: Dhi Aurrahman <dio@rockybars.com>
Co-authored-by: Takeshi Yoneda <takeshi@tetrate.io>
@dio dio requested a review from mathetake September 14, 2021 09:06
Copy link
Member

@mathetake mathetake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@dio dio merged commit b71c3d1 into master Sep 14, 2021
@dio dio deleted the func-e-call-signal branch September 14, 2021 15:24
codefromthecrypt pushed a commit that referenced this pull request Sep 24, 2021
This addresses some fuzz to make sure the comments don't lie. Notably,
this defers contexts the same way between fake and real. This also pulls
out handleShutdown to accent notes from #372

Signed-off-by: Adrian Cole <adrian@tetrate.io>
@@ -136,3 +180,14 @@ func requireFindProcessError(t *testing.T, proc *os.Process, expectedErr error)
return err == expectedErr
}, 100*time.Millisecond, 5*time.Millisecond, "timeout waiting for expected error %v", expectedErr)
}

func requireScannedWaitFor(t *testing.T, s *bufio.Scanner, waitFor string) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

later I will make a refactoring PR as we use scanner in the e2e for the same reasons, even if it could be documented better. Most notably we also avoid require.Eventually as it makes crap error messages when it fails. In other words, we used to use require.Eventually, that caused very difficult troubleshooting in CI, then we switched off of it.

Even if we fail to do refactoring for whatever reason, when there is copy/paste or something very similar, it is worth commenting the other function or file this is almost the same as. That way we can know to look at it in worst case. Folks who read those comments can help prevent adding a third similar thing later. It also helps reviewers who may have forgotten the other thing.

codefromthecrypt pushed a commit that referenced this pull request Sep 27, 2021
This addresses some fuzz to make sure the comments don't lie. Notably,
this defers contexts the same way between fake and real. This also pulls
out handleShutdown to accent notes from #372

Signed-off-by: Adrian Cole <adrian@tetrate.io>
codefromthecrypt added a commit that referenced this pull request Sep 28, 2021
This addresses some fuzz to make sure the comments don't lie. Notably,
this defers contexts the same way between fake and real. This also pulls
out handleShutdown to accent notes from #372

Signed-off-by: Adrian Cole <adrian@tetrate.io>
Co-authored-by: Takeshi Yoneda <takeshi@tetrate.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants