setup_device_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package bridge
  2. import (
  3. "bytes"
  4. "net"
  5. "testing"
  6. "github.com/docker/libnetwork/netutils"
  7. "github.com/vishvananda/netlink"
  8. )
  9. func TestSetupNewBridge(t *testing.T) {
  10. defer netutils.SetupTestNetNS(t)()
  11. config := &networkConfiguration{BridgeName: DefaultBridgeName}
  12. br := &bridgeInterface{}
  13. if err := setupDevice(config, br); err != nil {
  14. t.Fatalf("Bridge creation failed: %v", err)
  15. }
  16. if br.Link == nil {
  17. t.Fatal("bridgeInterface link is nil (expected valid link)")
  18. }
  19. if _, err := netlink.LinkByName(DefaultBridgeName); err != nil {
  20. t.Fatalf("Failed to retrieve bridge device: %v", err)
  21. }
  22. if br.Link.Attrs().Flags&net.FlagUp == net.FlagUp {
  23. t.Fatalf("bridgeInterface should be created down")
  24. }
  25. }
  26. func TestSetupNewNonDefaultBridge(t *testing.T) {
  27. defer netutils.SetupTestNetNS(t)()
  28. config := &networkConfiguration{BridgeName: "test0"}
  29. br := &bridgeInterface{}
  30. err := setupDevice(config, br)
  31. if err == nil {
  32. t.Fatal("Expected bridge creation failure with \"non default name\", succeeded")
  33. }
  34. if _, ok := err.(NonDefaultBridgeExistError); !ok {
  35. t.Fatalf("Did not fail with expected error. Actual error: %v", err)
  36. }
  37. }
  38. func TestSetupDeviceUp(t *testing.T) {
  39. defer netutils.SetupTestNetNS(t)()
  40. config := &networkConfiguration{BridgeName: DefaultBridgeName}
  41. br := &bridgeInterface{}
  42. if err := setupDevice(config, br); err != nil {
  43. t.Fatalf("Bridge creation failed: %v", err)
  44. }
  45. if err := setupDeviceUp(config, br); err != nil {
  46. t.Fatalf("Failed to up bridge device: %v", err)
  47. }
  48. lnk, _ := netlink.LinkByName(DefaultBridgeName)
  49. if lnk.Attrs().Flags&net.FlagUp != net.FlagUp {
  50. t.Fatalf("bridgeInterface should be up")
  51. }
  52. }
  53. func TestGenerateRandomMAC(t *testing.T) {
  54. defer netutils.SetupTestNetNS(t)()
  55. mac1 := netutils.GenerateRandomMAC()
  56. mac2 := netutils.GenerateRandomMAC()
  57. if bytes.Compare(mac1, mac2) == 0 {
  58. t.Fatalf("Generated twice the same MAC address %v", mac1)
  59. }
  60. }