Ver código fonte

Add FixedCIDRv6 test

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Arnaud Porterie 10 anos atrás
pai
commit
882f4d7e74

+ 7 - 1
libnetwork/drivers/bridge/setup_fixedcidrv6.go

@@ -1,11 +1,17 @@
 package bridge
 
 import (
+	"fmt"
+
 	log "github.com/Sirupsen/logrus"
 	"github.com/docker/docker/daemon/networkdriver/ipallocator"
 )
 
 func SetupFixedCIDRv6(i *Interface) error {
 	log.Debugf("Using IPv6 subnet: %v", i.Config.FixedCIDRv6)
-	return ipallocator.RegisterSubnet(i.Config.FixedCIDRv6, i.Config.FixedCIDRv6)
+	if err := ipallocator.RegisterSubnet(i.Config.FixedCIDRv6, i.Config.FixedCIDRv6); err != nil {
+		return fmt.Errorf("Setup FixedCIDRv6 failed for subnet %s in %s: %v", i.Config.FixedCIDRv6, i.Config.FixedCIDRv6, err)
+	}
+
+	return nil
 }

+ 37 - 0
libnetwork/drivers/bridge/setup_fixedcidrv6_test.go

@@ -0,0 +1,37 @@
+package bridge
+
+import (
+	"net"
+	"testing"
+
+	"github.com/docker/docker/daemon/networkdriver/ipallocator"
+	"github.com/docker/libnetwork"
+)
+
+func TestSetupFixedCIDRv6(t *testing.T) {
+	defer libnetwork.SetupTestNetNS(t)()
+
+	br := NewInterface(&Configuration{})
+
+	_, br.Config.FixedCIDRv6, _ = net.ParseCIDR("2002:db8::/48")
+	if err := SetupDevice(br); err != nil {
+		t.Fatalf("Bridge creation failed: %v", err)
+	}
+	if err := SetupBridgeIPv4(br); err != nil {
+		t.Fatalf("Assign IPv4 to bridge failed: %v", err)
+	}
+
+	if err := SetupBridgeIPv6(br); err != nil {
+		t.Fatalf("Assign IPv4 to bridge failed: %v", err)
+	}
+
+	if err := SetupFixedCIDRv6(br); err != nil {
+		t.Fatalf("Failed to setup bridge FixedCIDRv6: %v", err)
+	}
+
+	if ip, err := ipallocator.RequestIP(br.Config.FixedCIDRv6, nil); err != nil {
+		t.Fatalf("Failed to request IP to allocator: %v", err)
+	} else if expected := "2002:db8::1"; ip.String() != expected {
+		t.Fatalf("Expected allocated IP %s, got %s", expected, ip)
+	}
+}