From 4ac519f7b6a3795d743926fb510519e8ca1109cb Mon Sep 17 00:00:00 2001 From: Jana Radhakrishnan Date: Fri, 20 Mar 2015 20:54:49 +0000 Subject: [PATCH] - Added initial test cases for libnetwork api - Introduce delete api Signed-off-by: Jana Radhakrishnan --- libnetwork/drivers/bridge/bridge.go | 2 +- libnetwork/drivers/bridge/network.go | 11 ++++- libnetwork/libnetwork_test.go | 64 ++++++++++++++++++++++++++++ libnetwork/network.go | 2 + 4 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 libnetwork/libnetwork_test.go diff --git a/libnetwork/drivers/bridge/bridge.go b/libnetwork/drivers/bridge/bridge.go index edb752477d..fb62bfa9d4 100644 --- a/libnetwork/drivers/bridge/bridge.go +++ b/libnetwork/drivers/bridge/bridge.go @@ -84,5 +84,5 @@ func (d *driver) CreateNetwork(name string, opaqueConfig interface{}) (libnetwor return nil, err } - return &bridgeNetwork{NetworkName: name, Config: *config}, nil + return &bridgeNetwork{NetworkName: name, bridge: bridgeIntfc}, nil } diff --git a/libnetwork/drivers/bridge/network.go b/libnetwork/drivers/bridge/network.go index 9c80a77b88..d9a8858645 100644 --- a/libnetwork/drivers/bridge/network.go +++ b/libnetwork/drivers/bridge/network.go @@ -1,10 +1,13 @@ package bridge -import "github.com/docker/libnetwork" +import ( + "github.com/docker/libnetwork" + "github.com/vishvananda/netlink" +) type bridgeNetwork struct { - Config Configuration NetworkName string + bridge *bridgeInterface } func (b *bridgeNetwork) Name() string { @@ -19,3 +22,7 @@ func (b *bridgeNetwork) Link(name string) ([]*libnetwork.Interface, error) { // TODO return nil, nil } + +func (b *bridgeNetwork) Delete() error { + return netlink.LinkDel(b.bridge.Link) +} diff --git a/libnetwork/libnetwork_test.go b/libnetwork/libnetwork_test.go new file mode 100644 index 0000000000..bdcd6523b9 --- /dev/null +++ b/libnetwork/libnetwork_test.go @@ -0,0 +1,64 @@ +package libnetwork_test + +import ( + "net" + "os" + "testing" + + log "github.com/Sirupsen/logrus" + "github.com/docker/libnetwork" + _ "github.com/docker/libnetwork/drivers/bridge" + "github.com/vishvananda/netlink" +) + +var bridgeName = "docker0" + +func TestMain(m *testing.M) { + // Cleanup any existing docker0 bridge if needed. Ignore errors + bridge := &netlink.Bridge{LinkAttrs: netlink.LinkAttrs{Name: bridgeName}} + netlink.LinkDel(bridge) + + os.Exit(m.Run()) +} + +func TestSimplebridge(t *testing.T) { + + ip, subnet, err := net.ParseCIDR("192.168.100.1/24") + if err != nil { + t.Fatal(err) + } + subnet.IP = ip + + ip, cidr, err := net.ParseCIDR("192.168.100.2/28") + if err != nil { + t.Fatal(err) + } + cidr.IP = ip + + ip, cidrv6, err := net.ParseCIDR("fe90::1/96") + if err != nil { + t.Fatal(err) + } + cidrv6.IP = ip + + log.Debug("Adding a simple bridge") + options := libnetwork.DriverParams{ + "BridgeName": bridgeName, + "AddressIPv4": subnet, + "FixedCIDR": cidr, + "FixedCIDRv6": cidrv6, + "EnableIPv6": true, + "EnableIPTables": true, + "EnableIPMasquerade": true, + "EnableICC": true, + "EnableIPForwarding": true} + + network, err := libnetwork.NewNetwork("simplebridge", "dummy", options) + if err != nil { + t.Fatal(err) + } + + if err := network.Delete(); err != nil { + t.Fatal(err) + } +} diff --git a/libnetwork/network.go b/libnetwork/network.go index cb44a6a60a..ccb0a10546 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -76,6 +76,8 @@ type Network interface { // Create a new link to this network symbolically identified by the // specified unique name. Link(name string) ([]*Interface, error) + + Delete() error } // Namespace represents a network namespace, mounted on a specific Path. It