(t *testing.T)
| 64 | } |
| 65 | |
| 66 | func TestMountAtRuntime(t *testing.T) { |
| 67 | client, err := newClient(t, address) |
| 68 | if err != nil { |
| 69 | t.Fatal(err) |
| 70 | } |
| 71 | defer client.Close() |
| 72 | |
| 73 | var ( |
| 74 | ctx, cancel = testContext(t) |
| 75 | id1 = fmt.Sprintf("%s-1", t.Name()) |
| 76 | id2 = fmt.Sprintf("%s-2", t.Name()) |
| 77 | testDev = createImgFile(t, "test-dev.img") |
| 78 | workDir = filepath.Join(t.TempDir(), "work") |
| 79 | ) |
| 80 | defer cancel() |
| 81 | |
| 82 | require.NoError(t, os.MkdirAll(workDir, 0755)) |
| 83 | |
| 84 | ctx, done, err := client.WithLease(ctx) |
| 85 | require.NoError(t, err) |
| 86 | defer done(ctx) |
| 87 | |
| 88 | img, err := client.GetImage(ctx, testImage) |
| 89 | require.NoError(t, err) |
| 90 | |
| 91 | snapshotter := client.SnapshotService(defaults.DefaultSnapshotter) |
| 92 | diffIDs, err := img.RootFS(ctx) |
| 93 | require.NoError(t, err) |
| 94 | |
| 95 | mnt, err := snapshotter.View(ctx, id1, identity.ChainID(diffIDs).String()) |
| 96 | require.NoError(t, err) |
| 97 | if len(mnt) > 1 { |
| 98 | t.Skipf("Test can only be run with single mount") |
| 99 | } |
| 100 | m := append(mnt, mount.Mount{ |
| 101 | Type: "xfs", |
| 102 | Source: testDev, |
| 103 | Options: []string{"loop"}, |
| 104 | }, mount.Mount{ |
| 105 | Type: "format/overlay", |
| 106 | Source: "overlay", |
| 107 | Options: []string{"lowerdir={{ mount 0 }}", "upperdir={{ mount 1 }}/root1", "workdir={{ mount 1 }}/work", "index=off"}, |
| 108 | }) |
| 109 | |
| 110 | container1, err := client.NewContainer(ctx, id1, containerd.WithNewSpec(withImage(img, "sh", "-c", `echo -n 'Test mount at runtime'> /etc/test-name.txt`))) |
| 111 | require.NoError(t, err) |
| 112 | defer func() { assert.NoError(t, container1.Delete(ctx)) }() |
| 113 | |
| 114 | task, err := container1.NewTask(ctx, empty(), containerd.WithRootFS(m)) |
| 115 | require.NoError(t, err) |
| 116 | defer func() { |
| 117 | if task != nil { |
| 118 | task.Delete(ctx) |
| 119 | } |
| 120 | }() |
| 121 | |
| 122 | info, err := client.MountManager().Info(ctx, id1) |
| 123 | require.NoError(t, err) |
nothing calls this directly
no test coverage detected
searching dependent graphs…