From f1dbfda807a43d3e976ef5468831441821137e2b Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 2 Dec 2022 10:36:02 +0100 Subject: [PATCH] Add some tests for transient store Signed-off-by: Alexander Larsson --- test/e2e/run_transient_test.go | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 test/e2e/run_transient_test.go diff --git a/test/e2e/run_transient_test.go b/test/e2e/run_transient_test.go new file mode 100644 index 0000000000..febd6304cf --- /dev/null +++ b/test/e2e/run_transient_test.go @@ -0,0 +1,90 @@ +package integration + +import ( + "os" + "path/filepath" + + . "github.com/containers/podman/v4/test/utils" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gexec" +) + +var _ = Describe("Podman run with volumes", func() { + var ( + tempdir string + err error + podmanTest *PodmanTestIntegration + + containerStorageDir string + dbDir string + runContainerStorageDir string + runDBDir string + ) + + BeforeEach(func() { + tempdir, err = CreateTempDirInTempDir() + if err != nil { + os.Exit(1) + } + podmanTest = PodmanTestCreate(tempdir) + podmanTest.Setup() + + containerStorageDir = filepath.Join(podmanTest.Root, podmanTest.ImageCacheFS+"-containers") + dbDir = filepath.Join(podmanTest.Root, "libpod") + runContainerStorageDir = filepath.Join(podmanTest.RunRoot, podmanTest.ImageCacheFS+"-containers") + runDBDir = tempdir + }) + + AfterEach(func() { + podmanTest.Cleanup() + f := CurrentGinkgoTestDescription() + processTestResult(f) + }) + + It("podman run with no transient-store", func() { + session := podmanTest.Podman([]string{"run", ALPINE, "true"}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + + _ = SystemExec("ls", []string{"-l", containerStorageDir}) + + // All files should be in permament store, not volatile + Expect(filepath.Join(containerStorageDir, "containers.json")).Should(BeARegularFile()) + Expect(filepath.Join(containerStorageDir, "volatile-containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runContainerStorageDir, "containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runContainerStorageDir, "volatile-containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(dbDir, "bolt_state.db")).Should(BeARegularFile()) + Expect(filepath.Join(runDBDir, "bolt_state.db")).Should(Not(BeAnExistingFile())) + }) + + It("podman run --rm with no transient-store", func() { + session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "true"}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + + // All files should be in permament store, volatile + Expect(filepath.Join(containerStorageDir, "containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(containerStorageDir, "volatile-containers.json")).Should(BeARegularFile()) + Expect(filepath.Join(runContainerStorageDir, "containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runContainerStorageDir, "volatile-containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(dbDir, "bolt_state.db")).Should(BeARegularFile()) + Expect(filepath.Join(runDBDir, "bolt_state.db")).Should(Not(BeAnExistingFile())) + }) + + It("podman run --transient-store", func() { + SkipIfRemote("Can't change store options remotely") + session := podmanTest.Podman([]string{"run", "--transient-store", ALPINE, "true"}) + session.WaitWithDefaultTimeout() + Expect(session).Should(Exit(0)) + + // All files should be in runroot store, volatile + Expect(filepath.Join(containerStorageDir, "containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(containerStorageDir, "volatile-containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runContainerStorageDir, "containers.json")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runContainerStorageDir, "volatile-containers.json")).Should(BeARegularFile()) + Expect(filepath.Join(dbDir, "bolt_state.db")).Should(Not(BeAnExistingFile())) + Expect(filepath.Join(runDBDir, "bolt_state.db")).Should(BeARegularFile()) + }) + +})