github.com/dmaizel/tests@v0.0.0-20210728163746-cae6a2d9cee8/integration/docker/package_manager_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 "fmt" 9 "os" 10 11 . "github.com/kata-containers/tests" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 const ( 17 packageManagerTimeout = 900 18 packageManagerMaxTries = 5 19 ) 20 21 func tryPackageManagerCommand(container string, command []string, expectedExitCode int) int { 22 cmd := []string{container} 23 exitCode := int(-1) 24 for i := 0; i < packageManagerMaxTries; i++ { 25 _, _, exitCode = runDockerCommandWithTimeout(packageManagerTimeout, "exec", append(cmd, command...)...) 26 if exitCode == expectedExitCode { 27 break 28 } 29 } 30 return exitCode 31 } 32 33 var _ = Describe("[Serial Test] package manager update test", func() { 34 var ( 35 id string 36 args []string 37 proxyVar string 38 proxyValue string 39 ) 40 41 BeforeEach(func() { 42 id = randomDockerName() 43 args = []string{} 44 proxyVar = "http_proxy" 45 proxyValue = os.Getenv(proxyVar) 46 if proxyValue != "" { 47 args = append(args, "-e", proxyVar+"="+proxyValue) 48 } 49 }) 50 51 AfterEach(func() { 52 Expect(ExistDockerContainer(id)).NotTo(BeTrue()) 53 }) 54 55 Context("check apt-get update and upgrade", func() { 56 It("should not fail", func() { 57 args = append(args, "-td", "--name", id, DebianImage, "sh") 58 _, _, exitCode := dockerRun(args...) 59 Expect(exitCode).To(BeZero()) 60 61 exitCode = tryPackageManagerCommand(id, []string{"apt-get", "-y", "update"}, 0) 62 Expect(exitCode).To(BeZero()) 63 64 exitCode = tryPackageManagerCommand(id, []string{"apt-get", "-y", "upgrade"}, 0) 65 Expect(exitCode).To(BeZero()) 66 67 Expect(RemoveDockerContainer(id)).To(BeTrue()) 68 }) 69 }) 70 71 Context("check dnf update", func() { 72 It("should not fail", func() { 73 if KataConfig.Hypervisor[KataHypervisor].SharedFS == "virtio-fs" { 74 Skip("Skip issue: https://github.com/kata-containers/tests/issues/2008") 75 } 76 77 // This Fedora version is used mainly because of https://github.com/kata-containers/tests/issues/2358 78 args = append(args, "-td", "--name", id, Fedora30Image, "sh") 79 _, _, exitCode := dockerRun(args...) 80 Expect(exitCode).To(BeZero()) 81 82 if proxyValue != "" { 83 _, _, exitCode = dockerExec(id, "sed", "-i", fmt.Sprintf("$ a proxy=%s", proxyValue), "/etc/dnf/dnf.conf") 84 Expect(exitCode).To(BeZero()) 85 } 86 87 exitCode = tryPackageManagerCommand(id, []string{"dnf", "-y", "update"}, 0) 88 Expect(exitCode).To(BeZero()) 89 90 Expect(RemoveDockerContainer(id)).To(BeTrue()) 91 }) 92 }) 93 94 Context("check yum update", func() { 95 It("should not fail", func() { 96 if KataConfig.Hypervisor[KataHypervisor].SharedFS == "virtio-fs" { 97 Skip("Skip issue: https://github.com/kata-containers/tests/issues/2008") 98 } 99 args = append(args, "--rm", "-td", "--name", id, CentosImage, "sh") 100 _, _, exitCode := dockerRun(args...) 101 Expect(exitCode).To(BeZero()) 102 103 exitCode = tryPackageManagerCommand(id, []string{"yum", "-y", "update"}, 0) 104 Expect(exitCode).To(BeZero()) 105 106 Expect(RemoveDockerContainer(id)).To(BeTrue()) 107 }) 108 }) 109 })