loopback: increase test coverage to 1.0.0 and older spec versions

Signed-off-by: Dan Williams <dcbw@redhat.com>
This commit is contained in:
Dan Williams 2021-01-27 15:22:02 -06:00
parent 5096b53918
commit 5eae558a8e

View File

@ -28,6 +28,10 @@ import (
"github.com/onsi/gomega/gexec" "github.com/onsi/gomega/gexec"
) )
func generateConfig(cniVersion string) *strings.Reader {
return strings.NewReader(fmt.Sprintf(`{ "name": "loopback-test", "cniVersion": "%s" }`, cniVersion))
}
var _ = Describe("Loopback", func() { var _ = Describe("Loopback", func() {
var ( var (
networkNS ns.NetNS networkNS ns.NetNS
@ -49,7 +53,6 @@ var _ = Describe("Loopback", func() {
fmt.Sprintf("CNI_ARGS=%s", "none"), fmt.Sprintf("CNI_ARGS=%s", "none"),
fmt.Sprintf("CNI_PATH=%s", "/some/test/path"), fmt.Sprintf("CNI_PATH=%s", "/some/test/path"),
} }
command.Stdin = strings.NewReader(`{ "name": "loopback-test", "cniVersion": "0.1.0" }`)
}) })
AfterEach(func() { AfterEach(func() {
@ -57,45 +60,53 @@ var _ = Describe("Loopback", func() {
Expect(testutils.UnmountNS(networkNS)).To(Succeed()) Expect(testutils.UnmountNS(networkNS)).To(Succeed())
}) })
Context("when given a network namespace", func() { for _, ver := range testutils.AllSpecVersions {
It("sets the lo device to UP", func() { // Redefine ver inside for scope so real value is picked up by each dynamically defined It()
command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "ADD")) // See Gingkgo's "Patterns for dynamically generating tests" documentation.
ver := ver
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter) Context("when given a network namespace", func() {
Expect(err).NotTo(HaveOccurred()) It(fmt.Sprintf("[%s] sets the lo device to UP", ver), func() {
command.Stdin = generateConfig(ver)
command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "ADD"))
Eventually(session).Should(gbytes.Say(`{.*}`)) session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
Eventually(session).Should(gexec.Exit(0)) Expect(err).NotTo(HaveOccurred())
var lo *net.Interface Eventually(session).Should(gbytes.Say(`{.*}`))
err = networkNS.Do(func(ns.NetNS) error { Eventually(session).Should(gexec.Exit(0))
var err error
lo, err = net.InterfaceByName("lo") var lo *net.Interface
return err err = networkNS.Do(func(ns.NetNS) error {
var err error
lo, err = net.InterfaceByName("lo")
return err
})
Expect(err).NotTo(HaveOccurred())
Expect(lo.Flags & net.FlagUp).To(Equal(net.FlagUp))
}) })
Expect(err).NotTo(HaveOccurred())
Expect(lo.Flags & net.FlagUp).To(Equal(net.FlagUp)) It(fmt.Sprintf("[%s] sets the lo device to DOWN", ver), func() {
}) command.Stdin = generateConfig(ver)
command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "DEL"))
It("sets the lo device to DOWN", func() { session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter)
command.Env = append(environ, fmt.Sprintf("CNI_COMMAND=%s", "DEL")) Expect(err).NotTo(HaveOccurred())
session, err := gexec.Start(command, GinkgoWriter, GinkgoWriter) Eventually(session).Should(gbytes.Say(``))
Expect(err).NotTo(HaveOccurred()) Eventually(session).Should(gexec.Exit(0))
Eventually(session).Should(gbytes.Say(``)) var lo *net.Interface
Eventually(session).Should(gexec.Exit(0)) err = networkNS.Do(func(ns.NetNS) error {
var err error
lo, err = net.InterfaceByName("lo")
return err
})
Expect(err).NotTo(HaveOccurred())
var lo *net.Interface Expect(lo.Flags & net.FlagUp).NotTo(Equal(net.FlagUp))
err = networkNS.Do(func(ns.NetNS) error {
var err error
lo, err = net.InterfaceByName("lo")
return err
}) })
Expect(err).NotTo(HaveOccurred())
Expect(lo.Flags & net.FlagUp).NotTo(Equal(net.FlagUp))
}) })
}) }
}) })