[infra] Consolidate all ubuntu tests into one image.

This makes it easier to add more tests that run on Ubuntu. We can now just
add a bash script and call that from integration_test without having to set up
another image.

PiperOrigin-RevId: 355000410
This commit is contained in:
Ayush Ranjan
2021-02-01 12:30:45 -08:00
committed by gVisor bot
parent ebd3912c0f
commit 0da3c72c9d
12 changed files with 25 additions and 85 deletions
-8
View File
@@ -1,8 +0,0 @@
FROM ubuntu:bionic
WORKDIR /root
COPY . .
RUN apt-get update && apt-get install -y gcc
RUN gcc -O2 -o test_copy_up test_copy_up.c
RUN gcc -O2 -o test_rewinddir test_rewinddir.c
+7
View File
@@ -0,0 +1,7 @@
FROM ubuntu:bionic
WORKDIR /root
COPY . .
RUN chmod +x *.sh
RUN apt-get update && apt-get install -y gcc iputils-ping iproute2
-7
View File
@@ -1,7 +0,0 @@
FROM ubuntu:bionic
WORKDIR /root
COPY . .
RUN apt-get update && apt-get install -y gcc
RUN gcc -O2 -o link_test link_test.c
-7
View File
@@ -1,7 +0,0 @@
FROM ubuntu:bionic
WORKDIR /root
COPY ping4.sh .
RUN chmod +x ping4.sh
RUN apt-get update && apt-get install -y iputils-ping
-7
View File
@@ -1,7 +0,0 @@
FROM ubuntu:bionic
WORKDIR /root
COPY ping6.sh .
RUN chmod +x ping6.sh
RUN apt-get update && apt-get install -y iputils-ping iproute2
+18 -56
View File
@@ -434,18 +434,7 @@ func TestTmpMount(t *testing.T) {
// runsc to hide the incoherence of FDs opened before and after overlayfs
// copy-up on the host.
func TestHostOverlayfsCopyUp(t *testing.T) {
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
defer d.CleanUp(ctx)
if got, err := d.Run(ctx, dockerutil.RunOpts{
Image: "basic/hostoverlaytest",
WorkDir: "/root",
}, "./test_copy_up"); err != nil {
t.Fatalf("docker run failed: %v", err)
} else if got != "" {
t.Errorf("test failed:\n%s", got)
}
runIntegrationTest(t, nil, "sh", "-c", "gcc -O2 -o test_copy_up test_copy_up.c && ./test_copy_up")
}
// TestHostOverlayfsRewindDir tests that rewinddir() "causes the directory
@@ -460,36 +449,14 @@ func TestHostOverlayfsCopyUp(t *testing.T) {
// automated tests yield newly-added files from readdir() even if the fsgofer
// does not explicitly rewinddir(), but overlayfs does not.
func TestHostOverlayfsRewindDir(t *testing.T) {
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
defer d.CleanUp(ctx)
if got, err := d.Run(ctx, dockerutil.RunOpts{
Image: "basic/hostoverlaytest",
WorkDir: "/root",
}, "./test_rewinddir"); err != nil {
t.Fatalf("docker run failed: %v", err)
} else if got != "" {
t.Errorf("test failed:\n%s", got)
}
runIntegrationTest(t, nil, "sh", "-c", "gcc -O2 -o test_rewinddir test_rewinddir.c && ./test_rewinddir")
}
// Basic test for linkat(2). Syscall tests requires CAP_DAC_READ_SEARCH and it
// cannot use tricks like userns as root. For this reason, run a basic link test
// to ensure some coverage.
func TestLink(t *testing.T) {
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
defer d.CleanUp(ctx)
if got, err := d.Run(ctx, dockerutil.RunOpts{
Image: "basic/linktest",
WorkDir: "/root",
}, "./link_test"); err != nil {
t.Fatalf("docker run failed: %v", err)
} else if got != "" {
t.Errorf("test failed:\n%s", got)
}
runIntegrationTest(t, nil, "sh", "-c", "gcc -O2 -o link_test link_test.c && ./link_test")
}
// This test ensures we can run ping without errors.
@@ -500,17 +467,7 @@ func TestPing4Loopback(t *testing.T) {
t.Skip("hostnet only supports TCP/UDP sockets, so ping is not supported.")
}
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
defer d.CleanUp(ctx)
if got, err := d.Run(ctx, dockerutil.RunOpts{
Image: "basic/ping4test",
}, "/root/ping4.sh"); err != nil {
t.Fatalf("docker run failed: %s", err)
} else if got != "" {
t.Errorf("test failed:\n%s", got)
}
runIntegrationTest(t, nil, "./ping4.sh")
}
// This test ensures we can enable ipv6 on loopback and run ping6 without
@@ -522,20 +479,25 @@ func TestPing6Loopback(t *testing.T) {
t.Skip("hostnet only supports TCP/UDP sockets, so ping6 is not supported.")
}
// The CAP_NET_ADMIN capability is required to use the `ip` utility, which
// we use to enable ipv6 on loopback.
//
// By default, ipv6 loopback is not enabled by runsc, because docker does
// not assign an ipv6 address to the test container.
runIntegrationTest(t, []string{"NET_ADMIN"}, "./ping6.sh")
}
func runIntegrationTest(t *testing.T, capAdd []string, args ...string) {
ctx := context.Background()
d := dockerutil.MakeContainer(ctx, t)
defer d.CleanUp(ctx)
if got, err := d.Run(ctx, dockerutil.RunOpts{
Image: "basic/ping6test",
// The CAP_NET_ADMIN capability is required to use the `ip` utility, which
// we use to enable ipv6 on loopback.
//
// By default, ipv6 loopback is not enabled by runsc, because docker does
// not assign an ipv6 address to the test container.
CapAdd: []string{"NET_ADMIN"},
}, "/root/ping6.sh"); err != nil {
t.Fatalf("docker run failed: %s", err)
Image: "basic/integrationtest",
WorkDir: "/root",
CapAdd: capAdd,
}, args...); err != nil {
t.Fatalf("docker run failed: %v", err)
} else if got != "" {
t.Errorf("test failed:\n%s", got)
}