From 1a30688da02733aea171eeec4d2fab57b3b8a4ec Mon Sep 17 00:00:00 2001 From: Bruce Ma Date: Fri, 25 Oct 2019 20:00:23 +0800 Subject: [PATCH] add some testcases about invalid MTUs Signed-off-by: Bruce Ma --- plugins/main/vlan/vlan_test.go | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/plugins/main/vlan/vlan_test.go b/plugins/main/vlan/vlan_test.go index cdff984f..17e4f39d 100644 --- a/plugins/main/vlan/vlan_test.go +++ b/plugins/main/vlan/vlan_test.go @@ -408,4 +408,75 @@ var _ = Describe("vlan Operations", func() { }) Expect(err).NotTo(HaveOccurred()) }) + + Describe("fails to create vlan link with invalid MTU", func() { + conf := `{ + "cniVersion": "0.3.1", + "name": "mynet", + "type": "vlan", + "master": "%s", + "mtu": %d, + "ipam": { + "type": "host-local", + "subnet": "10.1.2.0/24" + } +}` + BeforeEach(func() { + var err error + err = originalNS.Do(func(ns.NetNS) error { + defer GinkgoRecover() + + // set master link's MTU to 1500 + link, err := netlink.LinkByName(MASTER_NAME) + Expect(err).NotTo(HaveOccurred()) + err = netlink.LinkSetMTU(link, 1500) + Expect(err).NotTo(HaveOccurred()) + + return nil + }) + Expect(err).NotTo(HaveOccurred()) + }) + + It("fails to create vlan link with greater MTU than master interface", func() { + var err error + + args := &skel.CmdArgs{ + ContainerID: "dummy", + Netns: "/var/run/netns/test", + IfName: "eth0", + StdinData: []byte(fmt.Sprintf(conf, MASTER_NAME, 1600)), + } + + _ = originalNS.Do(func(netNS ns.NetNS) error { + defer GinkgoRecover() + + _, _, err = testutils.CmdAddWithArgs(args, func() error { + return cmdAdd(args) + }) + Expect(err).To(Equal(fmt.Errorf("invalid MTU 1600, must be [0, master MTU(1500)]"))) + return nil + }) + }) + + It("fails to create vlan link with negative MTU", func() { + var err error + + args := &skel.CmdArgs{ + ContainerID: "dummy", + Netns: "/var/run/netns/test", + IfName: "eth0", + StdinData: []byte(fmt.Sprintf(conf, MASTER_NAME, -100)), + } + + _ = originalNS.Do(func(netNS ns.NetNS) error { + defer GinkgoRecover() + + _, _, err = testutils.CmdAddWithArgs(args, func() error { + return cmdAdd(args) + }) + Expect(err).To(Equal(fmt.Errorf("invalid MTU -100, must be [0, master MTU(1500)]"))) + return nil + }) + }) + }) })