tests: loopback DEL
authorStefan Junker <mail@stefanjunker.de>
Wed, 2 Mar 2016 16:56:44 +0000 (17:56 +0100)
committerStefan Junker <mail@stefanjunker.de>
Wed, 2 Mar 2016 16:56:44 +0000 (17:56 +0100)
plugins/main/loopback/loopback_test.go

index cf10e1a..9436e9a 100644 (file)
@@ -19,30 +19,21 @@ var _ = Describe("Loopback", func() {
                networkNS   string
                containerID string
                command     *exec.Cmd
+               environ     []string
        )
 
        BeforeEach(func() {
                command = exec.Command(pathToLoPlugin)
-
-               environ := os.Environ()
-
                containerID = "some-container-id"
                networkNS = makeNetworkNS(containerID)
 
-               cniEnvVars := []string{
-                       fmt.Sprintf("CNI_COMMAND=%s", "ADD"),
+               environ = []string{
                        fmt.Sprintf("CNI_CONTAINERID=%s", containerID),
                        fmt.Sprintf("CNI_NETNS=%s", networkNS),
                        fmt.Sprintf("CNI_IFNAME=%s", "this is ignored"),
                        fmt.Sprintf("CNI_ARGS=%s", "none"),
                        fmt.Sprintf("CNI_PATH=%s", "/some/test/path"),
                }
-
-               for _, v := range cniEnvVars {
-                       environ = append(environ, v)
-               }
-
-               command.Env = environ
                command.Stdin = strings.NewReader("this doesn't matter")
        })
 
@@ -52,6 +43,8 @@ var _ = Describe("Loopback", func() {
 
        Context("when given a network namespace", func() {
                It("sets the lo device to UP", func() {
+                       command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "ADD"))
+
                        session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
                        Expect(err).NotTo(HaveOccurred())
 
@@ -68,5 +61,25 @@ var _ = Describe("Loopback", func() {
 
                        Expect(lo.Flags & net.FlagUp).To(Equal(net.FlagUp))
                })
+
+               It("sets the lo device to DOWN", func() {
+                       command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "DEL"))
+
+                       session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
+                       Expect(err).NotTo(HaveOccurred())
+
+                       Eventually(session).Should(gbytes.Say(``))
+                       Eventually(session).Should(gexec.Exit(0))
+
+                       var lo *net.Interface
+                       err = ns.WithNetNSPath(networkNS, true, func(hostNS *os.File) error {
+                               var err error
+                               lo, err = net.InterfaceByName("lo")
+                               return err
+                       })
+                       Expect(err).NotTo(HaveOccurred())
+
+                       Expect(lo.Flags & net.FlagUp).NotTo(Equal(net.FlagUp))
+               })
        })
 })