MCPcopy Create free account
hub / github.com/containerd/nerdctl / TestCopyAcid

Function TestCopyAcid

cmd/nerdctl/container/container_cp_acid_linux_test.go:38–213  ·  view source on GitHub ↗

This is a separate set of tests for cp specifically meant to test corner or extreme cases that do not fit in the normal testing rig because of their complexity

(t *testing.T)

Source from the content-addressed store, hash-verified

36// because of their complexity
37
38func TestCopyAcid(t *testing.T) {
39 testCase := nerdtest.Setup()
40
41 testCase.Setup = func(data test.Data, helpers test.Helpers) {
42 testID := data.Identifier()
43 tempDir := t.TempDir()
44
45 sourceFile := filepath.Join(tempDir, "hostfile")
46 sourceFileContent := []byte(testID)
47
48 roContainer := testID + "-ro"
49 rwContainer := testID + "-rw"
50
51 data.Labels().Set("sourceFile", sourceFile)
52 data.Labels().Set("sourceFileContent", string(sourceFileContent))
53 data.Labels().Set("roContainer", roContainer)
54 data.Labels().Set("rwContainer", rwContainer)
55
56 helpers.Ensure("volume", "create", testID+"-1-ro")
57 helpers.Ensure("volume", "create", testID+"-2-ro")
58 helpers.Ensure("volume", "create", testID+"-3-ro")
59
60 helpers.Ensure("run", "-d", "-w", containerCwd, "--name", roContainer, "--read-only",
61 "-v", fmt.Sprintf("%s:%s:ro", testID+"-1-ro", "/vol1/dir1/ro"),
62 "-v", fmt.Sprintf("%s:%s", testID+"-2-rw", "/vol2/dir2/rw"),
63 testutil.CommonImage, "sleep", nerdtest.Infinity,
64 )
65 nerdtest.EnsureContainerStarted(helpers, roContainer)
66
67 helpers.Ensure("run", "-d", "-w", containerCwd, "--name", rwContainer,
68 "-v", fmt.Sprintf("%s:%s:ro", testID+"-1-ro", "/vol1/dir1/ro"),
69 "-v", fmt.Sprintf("%s:%s", testID+"-3-rw", "/vol3/dir3/rw"),
70 testutil.CommonImage, "sleep", nerdtest.Infinity,
71 )
72 nerdtest.EnsureContainerStarted(helpers, rwContainer)
73
74 helpers.Ensure("exec", rwContainer, "sh", "-euxc", "cd /vol3/dir3/rw; ln -s ../../../ relativelinktoroot")
75 helpers.Ensure("exec", rwContainer, "sh", "-euxc", "cd /vol3/dir3/rw; ln -s / absolutelinktoroot")
76 helpers.Ensure("exec", roContainer, "sh", "-euxc", "cd /vol2/dir2/rw; ln -s ../../../ relativelinktoroot")
77 helpers.Ensure("exec", roContainer, "sh", "-euxc", "cd /vol2/dir2/rw; ln -s / absolutelinktoroot")
78
79 // Create file on the host
80 err := os.WriteFile(sourceFile, sourceFileContent, filePerm)
81 assert.NilError(t, err)
82
83 expectedErr := containerutil.ErrTargetIsReadOnly.Error()
84 if nerdtest.IsDocker() {
85 expectedErr = ""
86 }
87 data.Labels().Set("expectedErr", expectedErr)
88 }
89
90 testCase.Cleanup = func(data test.Data, helpers test.Helpers) {
91 testID := data.Identifier()
92 helpers.Anyhow("rm", "-f", testID+"-ro")
93 helpers.Anyhow("rm", "-f", testID+"-rw")
94 helpers.Anyhow("volume", "rm", testID+"-1-ro")
95 helpers.Anyhow("volume", "rm", testID+"-2-rw")

Callers

nothing calls this directly

Calls 14

SetupFunction · 0.92
EnsureContainerStartedFunction · 0.92
IsDockerFunction · 0.92
WriteFileMethod · 0.80
IdentifierMethod · 0.65
TempDirMethod · 0.65
SetMethod · 0.65
LabelsMethod · 0.65
EnsureMethod · 0.65
AnyhowMethod · 0.65
CommandMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…