mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
test/syscall: run each test case in a separate network namespace
... when it is possible. The guitar gVisorKernel*Workflow-s runs test with the local execution_method. In this case, blaze runs test cases locally without sandboxes. This means that all tests run in the same network namespace. We have a few tests which use hard-coded network ports and they can fail if one of these port will be used by someone else or by another test cases. PiperOrigin-RevId: 323137254
This commit is contained in:
@@ -606,7 +606,7 @@ func (l *localFile) fillAttr(stat syscall.Stat_t) (p9.AttrMask, p9.Attr) {
|
||||
Mode: p9.FileMode(stat.Mode),
|
||||
UID: p9.UID(stat.Uid),
|
||||
GID: p9.GID(stat.Gid),
|
||||
NLink: stat.Nlink,
|
||||
NLink: uint64(stat.Nlink),
|
||||
RDev: stat.Rdev,
|
||||
Size: uint64(stat.Size),
|
||||
BlockSize: uint64(stat.Blksize),
|
||||
|
||||
@@ -17,6 +17,7 @@ go_binary(
|
||||
"//test/runner/gtest",
|
||||
"//test/uds",
|
||||
"@com_github_opencontainers_runtime_spec//specs-go:go_default_library",
|
||||
"@com_github_syndtr_gocapability//capability:go_default_library",
|
||||
"@org_golang_x_sys//unix:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ import (
|
||||
"time"
|
||||
|
||||
specs "github.com/opencontainers/runtime-spec/specs-go"
|
||||
"github.com/syndtr/gocapability/capability"
|
||||
"golang.org/x/sys/unix"
|
||||
"gvisor.dev/gvisor/pkg/log"
|
||||
"gvisor.dev/gvisor/pkg/test/testutil"
|
||||
@@ -105,6 +106,13 @@ func runTestCaseNative(testBin string, tc gtest.TestCase, t *testing.T) {
|
||||
cmd.Env = env
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
if specutils.HasCapabilities(capability.CAP_NET_ADMIN) {
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||
Cloneflags: syscall.CLONE_NEWNET,
|
||||
}
|
||||
}
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
ws := err.(*exec.ExitError).Sys().(syscall.WaitStatus)
|
||||
t.Errorf("test %q exited with status %d, want 0", tc.FullName(), ws.ExitStatus())
|
||||
|
||||
Reference in New Issue
Block a user