setup_device_test.go 1.9 KB

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