summaryrefslogtreecommitdiffhomepage
path: root/runsc/container/container_test.go
diff options
context:
space:
mode:
authorFabricio Voznika <fvoznika@google.com>2018-09-05 13:12:15 -0700
committerShentubot <shentubot@google.com>2018-09-05 13:13:26 -0700
commit1d22d87fdc464b0641eca69f730777c27984c2ff (patch)
tree6d06b3da86c7135d70ee89fb4c96c184f9052d52 /runsc/container/container_test.go
parentf96b33c73c2150632a8a1ba22b1a420ec1f1214d (diff)
Move multi-container test to a single file
PiperOrigin-RevId: 211685288 Change-Id: I7872f2a83fcaaa54f385e6e567af6e72320c5aa0
Diffstat (limited to 'runsc/container/container_test.go')
-rw-r--r--runsc/container/container_test.go195
1 files changed, 0 insertions, 195 deletions
diff --git a/runsc/container/container_test.go b/runsc/container/container_test.go
index 5f452acbf..c00db3e91 100644
--- a/runsc/container/container_test.go
+++ b/runsc/container/container_test.go
@@ -38,7 +38,6 @@ import (
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel/auth"
"gvisor.googlesource.com/gvisor/pkg/unet"
"gvisor.googlesource.com/gvisor/runsc/boot"
- "gvisor.googlesource.com/gvisor/runsc/specutils"
"gvisor.googlesource.com/gvisor/runsc/test/testutil"
)
@@ -1366,200 +1365,6 @@ func TestAbbreviatedIDs(t *testing.T) {
}
}
-// TestMultiContainerSanity checks that it is possible to run 2 dead-simple
-// containers in the same sandbox.
-func TestMultiContainerSanity(t *testing.T) {
- for _, conf := range configs(all...) {
- t.Logf("Running test with conf: %+v", conf)
-
- containerIDs := []string{
- testutil.UniqueContainerID(),
- testutil.UniqueContainerID(),
- }
- containerAnnotations := []map[string]string{
- // The first container creates a sandbox.
- map[string]string{
- specutils.ContainerdContainerTypeAnnotation: specutils.ContainerdContainerTypeSandbox,
- },
- // The second container creates a container within the first
- // container's sandbox.
- map[string]string{
- specutils.ContainerdContainerTypeAnnotation: specutils.ContainerdContainerTypeContainer,
- specutils.ContainerdSandboxIDAnnotation: containerIDs[0],
- },
- }
-
- rootDir, err := testutil.SetupRootDir()
- if err != nil {
- t.Fatalf("error creating root dir: %v", err)
- }
- defer os.RemoveAll(rootDir)
-
- // Setup the containers.
- containers := make([]*Container, 0, len(containerIDs))
- for i, annotations := range containerAnnotations {
- spec := testutil.NewSpecWithArgs("sleep", "100")
- spec.Annotations = annotations
- bundleDir, err := testutil.SetupContainerInRoot(rootDir, spec, conf)
- if err != nil {
- t.Fatalf("error setting up container: %v", err)
- }
- defer os.RemoveAll(bundleDir)
- cont, err := Create(containerIDs[i], spec, conf, bundleDir, "", "")
- if err != nil {
- t.Fatalf("error creating container: %v", err)
- }
- defer cont.Destroy()
- if err := cont.Start(conf); err != nil {
- t.Fatalf("error starting container: %v", err)
- }
- containers = append(containers, cont)
- }
-
- expectedPL := []*control.Process{
- {
- UID: 0,
- PID: 1,
- PPID: 0,
- C: 0,
- Cmd: "sleep",
- },
- {
- UID: 0,
- PID: 2,
- PPID: 0,
- C: 0,
- Cmd: "sleep",
- },
- }
-
- // Check via ps that multiple processes are running.
- if err := waitForProcessList(containers[0], expectedPL); err != nil {
- t.Errorf("failed to wait for sleep to start: %v", err)
- }
- }
-}
-
-func TestMultiContainerWait(t *testing.T) {
- t.Skip("Test is flakey.") // TODO: Remove.
- containerIDs := []string{
- testutil.UniqueContainerID(),
- testutil.UniqueContainerID(),
- }
- containerAnnotations := []map[string]string{
- // The first container creates a sandbox.
- map[string]string{
- specutils.ContainerdContainerTypeAnnotation: specutils.ContainerdContainerTypeSandbox,
- },
- // The second container creates a container within the first
- // container's sandbox.
- map[string]string{
- specutils.ContainerdContainerTypeAnnotation: specutils.ContainerdContainerTypeContainer,
- specutils.ContainerdSandboxIDAnnotation: containerIDs[0],
- },
- }
- args := [][]string{
- // The first container should run the entire duration of the
- // test.
- {"sleep", "100"},
- // We'll wait on the second container, which is much shorter
- // lived.
- {"sleep", "1"},
- }
-
- rootDir, err := testutil.SetupRootDir()
- if err != nil {
- t.Fatalf("error creating root dir: %v", err)
- }
- defer os.RemoveAll(rootDir)
-
- // Setup the containers.
- containers := make([]*Container, 0, len(containerIDs))
- for i, annotations := range containerAnnotations {
- spec := testutil.NewSpecWithArgs(args[i][0], args[i][1])
- spec.Annotations = annotations
- conf := testutil.TestConfig()
- bundleDir, err := testutil.SetupContainerInRoot(rootDir, spec, conf)
- if err != nil {
- t.Fatalf("error setting up container: %v", err)
- }
- defer os.RemoveAll(bundleDir)
- cont, err := Create(containerIDs[i], spec, conf, bundleDir, "", "")
- if err != nil {
- t.Fatalf("error creating container: %v", err)
- }
- defer cont.Destroy()
- if err := cont.Start(conf); err != nil {
- t.Fatalf("error starting container: %v", err)
- }
- containers = append(containers, cont)
- }
-
- expectedPL := []*control.Process{
- {
- UID: 0,
- PID: 1,
- PPID: 0,
- C: 0,
- Cmd: "sleep",
- },
- {
- UID: 0,
- PID: 2,
- PPID: 0,
- C: 0,
- Cmd: "sleep",
- },
- }
-
- // Check via ps that multiple processes are running.
- if err := waitForProcessList(containers[0], expectedPL); err != nil {
- t.Errorf("failed to wait for sleep to start: %v", err)
- }
-
- // Wait on the short lived container from multiple goroutines.
- wg := sync.WaitGroup{}
- for i := 0; i < 3; i++ {
- wg.Add(1)
- go func() {
- defer wg.Done()
- if ws, err := containers[1].Wait(); err != nil {
- t.Errorf("failed to wait for process %q: %v", strings.Join(containers[1].Spec.Process.Args, " "), err)
- } else if es := ws.ExitStatus(); es != 0 {
- t.Errorf("process %q exited with non-zero status %d", strings.Join(containers[1].Spec.Process.Args, " "), es)
- }
- if _, err := containers[1].Wait(); err == nil {
- t.Errorf("wait for stopped process %q should fail", strings.Join(containers[1].Spec.Process.Args, " "))
- }
-
- // After Wait returns, ensure that the root container is running and
- // the child has finished.
- if err := waitForProcessList(containers[0], expectedPL[:1]); err != nil {
- t.Errorf("failed to wait for %q to start: %v", strings.Join(containers[0].Spec.Process.Args, " "), err)
- }
- }()
- }
-
- // Also wait via PID.
- for i := 0; i < 3; i++ {
- wg.Add(1)
- go func() {
- defer wg.Done()
- const pid = 2
- if ws, err := containers[0].WaitPID(pid); err != nil {
- t.Errorf("failed to wait for PID %d: %v", pid, err)
- } else if es := ws.ExitStatus(); es != 0 {
- t.Errorf("PID %d exited with non-zero status %d", pid, es)
- }
- if _, err := containers[0].WaitPID(pid); err == nil {
- t.Errorf("wait for stopped PID %d should fail", pid)
- }
- }()
- }
-
- wg.Wait()
-}
-
// Check that modifications to a volume mount are propigated into and out of
// the sandbox.
func TestContainerVolumeContentsShared(t *testing.T) {