github.com/dmaizel/tests@v0.0.0-20210728163746-cae6a2d9cee8/integration/docker/cp_test.go (about) 1 // Copyright (c) 2018 Intel Corporation 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 5 package docker 6 7 import ( 8 "io/ioutil" 9 "os" 10 "path" 11 12 "github.com/kata-containers/tests" 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 ) 16 17 var _ = Describe("docker cp", func() { 18 var ( 19 id string 20 exitCode int 21 stdout string 22 ) 23 24 BeforeEach(func() { 25 id = randomDockerName() 26 _, _, exitCode = dockerRun("-td", "--name", id, Image, "sh") 27 Expect(exitCode).To(Equal(0)) 28 }) 29 30 AfterEach(func() { 31 Expect(RemoveDockerContainer(id)).To(BeTrue()) 32 Expect(ExistDockerContainer(id)).NotTo(BeTrue()) 33 }) 34 35 Context("check files after a docker cp", func() { 36 It("should have the corresponding files", func() { 37 file, err := ioutil.TempFile(os.TempDir(), "file") 38 Expect(err).ToNot(HaveOccurred()) 39 err = file.Close() 40 Expect(err).ToNot(HaveOccurred()) 41 defer os.Remove(file.Name()) 42 Expect(file.Name()).To(BeAnExistingFile()) 43 44 _, _, exitCode = dockerCp(file.Name(), id+":/root/") 45 Expect(exitCode).To(Equal(0)) 46 47 stdout, _, exitCode = dockerExec(id, "ls", "/root/") 48 Expect(exitCode).To(Equal(0)) 49 testFile := path.Base(file.Name()) 50 Expect(stdout).To(ContainSubstring(testFile)) 51 }) 52 }) 53 }) 54 55 var _ = Describe("[Serial Test] docker cp with volume attached", func() { 56 var ( 57 id string 58 exitCode int 59 hostPath string 60 cmd *tests.Command 61 dirBeforeCp string 62 dirAfterCp string 63 ) 64 65 BeforeEach(func() { 66 hostPath = "/dev" 67 id = randomDockerName() 68 }) 69 70 AfterEach(func() { 71 Expect(ExistDockerContainer(id)).NotTo(BeTrue()) 72 }) 73 74 Context("check host path integrity", func() { 75 It("should not be modified", func() { 76 file, err := ioutil.TempFile(os.TempDir(), "file") 77 Expect(err).ToNot(HaveOccurred()) 78 err = file.Close() 79 Expect(err).ToNot(HaveOccurred()) 80 defer os.Remove(file.Name()) 81 Expect(file.Name()).To(BeAnExistingFile()) 82 83 // check hostPath before running docker cp 84 cmd = tests.NewCommand("ls", hostPath) 85 dirBeforeCp, _, exitCode = cmd.Run() 86 Expect(exitCode).To(BeZero()) 87 88 _, _, exitCode = dockerRun("-td", "-v", hostPath+":"+hostPath, "--name", id, Image, "sh") 89 Expect(exitCode).To(Equal(0)) 90 _, _, exitCode = dockerCp(file.Name(), id+":/") 91 Expect(exitCode).To(BeZero()) 92 Expect(RemoveDockerContainer(id)).To(BeTrue()) 93 94 // check hostPath after running docker cp 95 cmd = tests.NewCommand("ls", hostPath) 96 dirAfterCp, _, exitCode = cmd.Run() 97 Expect(exitCode).To(BeZero()) 98 99 // hostPath files and directories should be the same 100 Expect(dirBeforeCp).To(Equal(dirAfterCp)) 101 }) 102 }) 103 }) 104 105 var _ = Describe("[Serial Test] docker cp with volume", func() { 106 var ( 107 id string 108 exitCode int 109 hostPath string 110 cmd *tests.Command 111 mountBeforeCp string 112 mountAfterCp string 113 ) 114 115 BeforeEach(func() { 116 hostPath = "/dev" 117 id = randomDockerName() 118 }) 119 120 AfterEach(func() { 121 Expect(ExistDockerContainer(id)).NotTo(BeTrue()) 122 }) 123 124 Context("check mount points", func() { 125 It("should be removed", func() { 126 file, err := ioutil.TempFile(os.TempDir(), "file") 127 Expect(err).ToNot(HaveOccurred()) 128 err = file.Close() 129 Expect(err).ToNot(HaveOccurred()) 130 defer os.Remove(file.Name()) 131 Expect(file.Name()).To(BeAnExistingFile()) 132 133 // check mount before cp 134 cmd = tests.NewCommand("mount") 135 mountBeforeCp, _, exitCode = cmd.Run() 136 Expect(exitCode).To(BeZero()) 137 138 _, _, exitCode = dockerRun("-td", "-v", hostPath+":"+hostPath, "--name", id, Image, "sh") 139 Expect(exitCode).To(BeZero()) 140 141 _, _, exitCode = dockerCp(file.Name(), id+":"+hostPath) 142 Expect(exitCode).To(BeZero()) 143 144 // remove container 145 Expect(RemoveDockerContainer(id)).To(BeTrue()) 146 147 // check mount points 148 cmd = tests.NewCommand("mount") 149 mountAfterCp, _, exitCode = cmd.Run() 150 Expect(exitCode).To(BeZero()) 151 152 // check variables have the same content 153 Expect(mountBeforeCp).To(Equal(mountAfterCp)) 154 }) 155 }) 156 })