- modified tests accordingly
- added extra tests for creating a couple of bridge nw and query them
Signed-off-by: Alessandro Boch <aboch@docker.com>
| ... | ... |
@@ -246,7 +246,14 @@ func TestGetNetworksAndEndpoints(t *testing.T) {
|
| 246 | 246 |
t.Fatal(err) |
| 247 | 247 |
} |
| 248 | 248 |
|
| 249 |
- nc := networkCreate{Name: "sh", NetworkType: bridgeNetType}
|
|
| 249 |
+ ops := options.Generic{
|
|
| 250 |
+ netlabel.GenericData: map[string]string{
|
|
| 251 |
+ "BridgeName": "api_test_nw", |
|
| 252 |
+ "AllowNonDefaultBridge": "true", |
|
| 253 |
+ }, |
|
| 254 |
+ } |
|
| 255 |
+ |
|
| 256 |
+ nc := networkCreate{Name: "sh", NetworkType: bridgeNetType, Options: ops}
|
|
| 250 | 257 |
body, err := json.Marshal(nc) |
| 251 | 258 |
if err != nil {
|
| 252 | 259 |
t.Fatal(err) |
| ... | ... |
@@ -166,8 +166,7 @@ func (c *networkConfiguration) Conflict(o *networkConfiguration) bool {
|
| 166 | 166 |
} |
| 167 | 167 |
|
| 168 | 168 |
// They must be in different subnets |
| 169 |
- |
|
| 170 |
- if (c.AddressIPv4 != nil && o.AddressIPv4.IP != nil) && |
|
| 169 |
+ if (c.AddressIPv4 != nil && o.AddressIPv4 != nil) && |
|
| 171 | 170 |
(c.AddressIPv4.Contains(o.AddressIPv4.IP) || o.AddressIPv4.Contains(c.AddressIPv4.IP)) {
|
| 172 | 171 |
return true |
| 173 | 172 |
} |
| ... | ... |
@@ -496,7 +495,7 @@ func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) err
|
| 496 | 496 |
// Basically we are checking if the two original configs were both empty. |
| 497 | 497 |
if nw.config.BridgeName == config.BridgeName {
|
| 498 | 498 |
d.Unlock() |
| 499 |
- return types.ForbiddenErrorf("conflicts with network %s (%s)", nw.id, nw.config.BridgeName)
|
|
| 499 |
+ return types.ForbiddenErrorf("conflicts with network %s (%s) by bridge name", nw.id, nw.config.BridgeName)
|
|
| 500 | 500 |
} |
| 501 | 501 |
// If this network config specifies the AddressIPv4, we need |
| 502 | 502 |
// to make sure it does not conflict with any previously allocated |
| ... | ... |
@@ -507,7 +506,7 @@ func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) err
|
| 507 | 507 |
if nw.bridge.bridgeIPv4.Contains(config.AddressIPv4.IP) || |
| 508 | 508 |
config.AddressIPv4.Contains(nw.bridge.bridgeIPv4.IP) {
|
| 509 | 509 |
d.Unlock() |
| 510 |
- return types.ForbiddenErrorf("conflicts with network %s (%s)", nw.id, nw.config.BridgeName)
|
|
| 510 |
+ return types.ForbiddenErrorf("conflicts with network %s (%s) by ip network", nw.id, nw.config.BridgeName)
|
|
| 511 | 511 |
} |
| 512 | 512 |
} |
| 513 | 513 |
} |
| ... | ... |
@@ -595,6 +594,12 @@ func (d *driver) DeleteNetwork(nid types.UUID) error {
|
| 595 | 595 |
d.Unlock() |
| 596 | 596 |
return types.InternalMaskableErrorf("network %s does not exist", nid)
|
| 597 | 597 |
} |
| 598 |
+ |
|
| 599 |
+ if n.config.BridgeName == DefaultBridgeName {
|
|
| 600 |
+ d.Unlock() |
|
| 601 |
+ return types.ForbiddenErrorf("default network of type \"%s\" cannot be deleted", networkType)
|
|
| 602 |
+ } |
|
| 603 |
+ |
|
| 598 | 604 |
delete(d.networks, nid) |
| 599 | 605 |
d.Unlock() |
| 600 | 606 |
|
| ... | ... |
@@ -57,6 +57,22 @@ func TestCreate(t *testing.T) {
|
| 57 | 57 |
if err := d.CreateNetwork("dummy", genericOption); err != nil {
|
| 58 | 58 |
t.Fatalf("Failed to create bridge: %v", err)
|
| 59 | 59 |
} |
| 60 |
+ |
|
| 61 |
+ err := d.CreateNetwork("dummy", genericOption)
|
|
| 62 |
+ if err == nil {
|
|
| 63 |
+ t.Fatalf("Expected bridge driver to refuse creation of second network with default name")
|
|
| 64 |
+ } |
|
| 65 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 66 |
+ t.Fatalf("Creation of second network with default name failed with unexpected error type")
|
|
| 67 |
+ } |
|
| 68 |
+ |
|
| 69 |
+ err = d.DeleteNetwork("dummy")
|
|
| 70 |
+ if err == nil {
|
|
| 71 |
+ t.Fatalf("deletion of network with default name should fail on this driver")
|
|
| 72 |
+ } |
|
| 73 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 74 |
+ t.Fatalf("deletion of network with default name failed with unexpected error type")
|
|
| 75 |
+ } |
|
| 60 | 76 |
} |
| 61 | 77 |
|
| 62 | 78 |
func TestCreateFail(t *testing.T) {
|
| ... | ... |
@@ -1,13 +1,18 @@ |
| 1 | 1 |
package host |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
+ "sync" |
|
| 5 |
+ |
|
| 4 | 6 |
"github.com/docker/libnetwork/driverapi" |
| 5 | 7 |
"github.com/docker/libnetwork/types" |
| 6 | 8 |
) |
| 7 | 9 |
|
| 8 | 10 |
const networkType = "host" |
| 9 | 11 |
|
| 10 |
-type driver struct{}
|
|
| 12 |
+type driver struct {
|
|
| 13 |
+ network types.UUID |
|
| 14 |
+ sync.Mutex |
|
| 15 |
+} |
|
| 11 | 16 |
|
| 12 | 17 |
// Init registers a new instance of host driver |
| 13 | 18 |
func Init(dc driverapi.DriverCallback) error {
|
| ... | ... |
@@ -19,11 +24,20 @@ func (d *driver) Config(option map[string]interface{}) error {
|
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 | 21 |
func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) error {
|
| 22 |
+ d.Lock() |
|
| 23 |
+ defer d.Unlock() |
|
| 24 |
+ |
|
| 25 |
+ if d.network != "" {
|
|
| 26 |
+ return types.ForbiddenErrorf("only one instance of \"%s\" network is allowed", networkType)
|
|
| 27 |
+ } |
|
| 28 |
+ |
|
| 29 |
+ d.network = id |
|
| 30 |
+ |
|
| 22 | 31 |
return nil |
| 23 | 32 |
} |
| 24 | 33 |
|
| 25 | 34 |
func (d *driver) DeleteNetwork(nid types.UUID) error {
|
| 26 |
- return nil |
|
| 35 |
+ return types.ForbiddenErrorf("network of type \"%s\" cannot be deleted", networkType)
|
|
| 27 | 36 |
} |
| 28 | 37 |
|
| 29 | 38 |
func (d *driver) CreateEndpoint(nid, eid types.UUID, epInfo driverapi.EndpointInfo, epOptions map[string]interface{}) error {
|
| 30 | 39 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,50 @@ |
| 0 |
+package host |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "testing" |
|
| 4 |
+ |
|
| 5 |
+ _ "github.com/docker/libnetwork/netutils" |
|
| 6 |
+ "github.com/docker/libnetwork/types" |
|
| 7 |
+) |
|
| 8 |
+ |
|
| 9 |
+func TestDriver(t *testing.T) {
|
|
| 10 |
+ d := &driver{}
|
|
| 11 |
+ |
|
| 12 |
+ if d.Type() != networkType {
|
|
| 13 |
+ t.Fatalf("Unexpected network type returned by driver")
|
|
| 14 |
+ } |
|
| 15 |
+ |
|
| 16 |
+ err := d.CreateNetwork("first", nil)
|
|
| 17 |
+ if err != nil {
|
|
| 18 |
+ t.Fatal(err) |
|
| 19 |
+ } |
|
| 20 |
+ |
|
| 21 |
+ if d.network != "first" {
|
|
| 22 |
+ t.Fatalf("Unexpected network id stored")
|
|
| 23 |
+ } |
|
| 24 |
+ |
|
| 25 |
+ err = d.CreateNetwork("second", nil)
|
|
| 26 |
+ if err == nil {
|
|
| 27 |
+ t.Fatalf("Second network creation should fail on this driver")
|
|
| 28 |
+ } |
|
| 29 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 30 |
+ t.Fatalf("Second network creation failed with unexpected error type")
|
|
| 31 |
+ } |
|
| 32 |
+ |
|
| 33 |
+ err = d.DeleteNetwork("first")
|
|
| 34 |
+ if err == nil {
|
|
| 35 |
+ t.Fatalf("network deletion should fail on this driver")
|
|
| 36 |
+ } |
|
| 37 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 38 |
+ t.Fatalf("network deletion failed with unexpected error type")
|
|
| 39 |
+ } |
|
| 40 |
+ |
|
| 41 |
+ // we don't really check if it is there or not, delete is not allowed for this driver, period. |
|
| 42 |
+ err = d.DeleteNetwork("unknown")
|
|
| 43 |
+ if err == nil {
|
|
| 44 |
+ t.Fatalf("any network deletion should fail on this driver")
|
|
| 45 |
+ } |
|
| 46 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 47 |
+ t.Fatalf("any network deletion failed with unexpected error type")
|
|
| 48 |
+ } |
|
| 49 |
+} |
| ... | ... |
@@ -1,13 +1,18 @@ |
| 1 | 1 |
package null |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
+ "sync" |
|
| 5 |
+ |
|
| 4 | 6 |
"github.com/docker/libnetwork/driverapi" |
| 5 | 7 |
"github.com/docker/libnetwork/types" |
| 6 | 8 |
) |
| 7 | 9 |
|
| 8 | 10 |
const networkType = "null" |
| 9 | 11 |
|
| 10 |
-type driver struct{}
|
|
| 12 |
+type driver struct {
|
|
| 13 |
+ network types.UUID |
|
| 14 |
+ sync.Mutex |
|
| 15 |
+} |
|
| 11 | 16 |
|
| 12 | 17 |
// Init registers a new instance of null driver |
| 13 | 18 |
func Init(dc driverapi.DriverCallback) error {
|
| ... | ... |
@@ -19,11 +24,20 @@ func (d *driver) Config(option map[string]interface{}) error {
|
| 19 | 19 |
} |
| 20 | 20 |
|
| 21 | 21 |
func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) error {
|
| 22 |
+ d.Lock() |
|
| 23 |
+ defer d.Unlock() |
|
| 24 |
+ |
|
| 25 |
+ if d.network != "" {
|
|
| 26 |
+ return types.ForbiddenErrorf("only one instance of \"%s\" network is allowed", networkType)
|
|
| 27 |
+ } |
|
| 28 |
+ |
|
| 29 |
+ d.network = id |
|
| 30 |
+ |
|
| 22 | 31 |
return nil |
| 23 | 32 |
} |
| 24 | 33 |
|
| 25 | 34 |
func (d *driver) DeleteNetwork(nid types.UUID) error {
|
| 26 |
- return nil |
|
| 35 |
+ return types.ForbiddenErrorf("network of type \"%s\" cannot be deleted", networkType)
|
|
| 27 | 36 |
} |
| 28 | 37 |
|
| 29 | 38 |
func (d *driver) CreateEndpoint(nid, eid types.UUID, epInfo driverapi.EndpointInfo, epOptions map[string]interface{}) error {
|
| 30 | 39 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,50 @@ |
| 0 |
+package null |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "testing" |
|
| 4 |
+ |
|
| 5 |
+ _ "github.com/docker/libnetwork/netutils" |
|
| 6 |
+ "github.com/docker/libnetwork/types" |
|
| 7 |
+) |
|
| 8 |
+ |
|
| 9 |
+func TestDriver(t *testing.T) {
|
|
| 10 |
+ d := &driver{}
|
|
| 11 |
+ |
|
| 12 |
+ if d.Type() != networkType {
|
|
| 13 |
+ t.Fatalf("Unexpected network type returned by driver")
|
|
| 14 |
+ } |
|
| 15 |
+ |
|
| 16 |
+ err := d.CreateNetwork("first", nil)
|
|
| 17 |
+ if err != nil {
|
|
| 18 |
+ t.Fatal(err) |
|
| 19 |
+ } |
|
| 20 |
+ |
|
| 21 |
+ if d.network != "first" {
|
|
| 22 |
+ t.Fatalf("Unexpected network id stored")
|
|
| 23 |
+ } |
|
| 24 |
+ |
|
| 25 |
+ err = d.CreateNetwork("second", nil)
|
|
| 26 |
+ if err == nil {
|
|
| 27 |
+ t.Fatalf("Second network creation should fail on this driver")
|
|
| 28 |
+ } |
|
| 29 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 30 |
+ t.Fatalf("Second network creation failed with unexpected error type")
|
|
| 31 |
+ } |
|
| 32 |
+ |
|
| 33 |
+ err = d.DeleteNetwork("first")
|
|
| 34 |
+ if err == nil {
|
|
| 35 |
+ t.Fatalf("network deletion should fail on this driver")
|
|
| 36 |
+ } |
|
| 37 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 38 |
+ t.Fatalf("network deletion failed with unexpected error type")
|
|
| 39 |
+ } |
|
| 40 |
+ |
|
| 41 |
+ // we don't really check if it is there or not, delete is not allowed for this driver, period. |
|
| 42 |
+ err = d.DeleteNetwork("unknown")
|
|
| 43 |
+ if err == nil {
|
|
| 44 |
+ t.Fatalf("any network deletion should fail on this driver")
|
|
| 45 |
+ } |
|
| 46 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 47 |
+ t.Fatalf("any network deletion failed with unexpected error type")
|
|
| 48 |
+ } |
|
| 49 |
+} |
| ... | ... |
@@ -30,7 +30,6 @@ import ( |
| 30 | 30 |
|
| 31 | 31 |
const ( |
| 32 | 32 |
bridgeNetType = "bridge" |
| 33 |
- bridgeName = "docker0" |
|
| 34 | 33 |
) |
| 35 | 34 |
|
| 36 | 35 |
var controller libnetwork.NetworkController |
| ... | ... |
@@ -97,7 +96,7 @@ func getPortMapping() []types.PortBinding {
|
| 97 | 97 |
} |
| 98 | 98 |
|
| 99 | 99 |
func TestNull(t *testing.T) {
|
| 100 |
- network, err := createTestNetwork("null", "testnetwork", options.Generic{})
|
|
| 100 |
+ network, err := createTestNetwork("null", "testnull", options.Generic{})
|
|
| 101 | 101 |
if err != nil {
|
| 102 | 102 |
t.Fatal(err) |
| 103 | 103 |
} |
| ... | ... |
@@ -124,13 +123,18 @@ func TestNull(t *testing.T) {
|
| 124 | 124 |
t.Fatal(err) |
| 125 | 125 |
} |
| 126 | 126 |
|
| 127 |
- if err := network.Delete(); err != nil {
|
|
| 127 |
+ // host type is special network. Cannot be removed. |
|
| 128 |
+ err = network.Delete() |
|
| 129 |
+ if err == nil {
|
|
| 128 | 130 |
t.Fatal(err) |
| 129 | 131 |
} |
| 132 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 133 |
+ t.Fatalf("Unexpected error type")
|
|
| 134 |
+ } |
|
| 130 | 135 |
} |
| 131 | 136 |
|
| 132 | 137 |
func TestHost(t *testing.T) {
|
| 133 |
- network, err := createTestNetwork("host", "testnetwork", options.Generic{})
|
|
| 138 |
+ network, err := createTestNetwork("host", "testhost", options.Generic{})
|
|
| 134 | 139 |
if err != nil {
|
| 135 | 140 |
t.Fatal(err) |
| 136 | 141 |
} |
| ... | ... |
@@ -205,9 +209,14 @@ func TestHost(t *testing.T) {
|
| 205 | 205 |
t.Fatal(err) |
| 206 | 206 |
} |
| 207 | 207 |
|
| 208 |
- if err := network.Delete(); err != nil {
|
|
| 208 |
+ // host type is special network. Cannot be removed. |
|
| 209 |
+ err = network.Delete() |
|
| 210 |
+ if err == nil {
|
|
| 209 | 211 |
t.Fatal(err) |
| 210 | 212 |
} |
| 213 |
+ if _, ok := err.(types.ForbiddenError); !ok {
|
|
| 214 |
+ t.Fatalf("Unexpected error type")
|
|
| 215 |
+ } |
|
| 211 | 216 |
} |
| 212 | 217 |
|
| 213 | 218 |
func TestBridge(t *testing.T) {
|
| ... | ... |
@@ -237,7 +246,7 @@ func TestBridge(t *testing.T) {
|
| 237 | 237 |
|
| 238 | 238 |
netOption := options.Generic{
|
| 239 | 239 |
netlabel.GenericData: options.Generic{
|
| 240 |
- "BridgeName": bridgeName, |
|
| 240 |
+ "BridgeName": "testnetwork", |
|
| 241 | 241 |
"AddressIPv4": subnet, |
| 242 | 242 |
"FixedCIDR": cidr, |
| 243 | 243 |
"FixedCIDRv6": cidrv6, |
| ... | ... |
@@ -316,17 +325,13 @@ func TestDuplicateNetwork(t *testing.T) {
|
| 316 | 316 |
defer netutils.SetupTestNetNS(t)() |
| 317 | 317 |
} |
| 318 | 318 |
|
| 319 |
- n, err := controller.NewNetwork(bridgeNetType, "testnetwork", nil) |
|
| 319 |
+ // Creating a default bridge name network (can't be removed) |
|
| 320 |
+ _, err := controller.NewNetwork(bridgeNetType, "testdup") |
|
| 320 | 321 |
if err != nil {
|
| 321 | 322 |
t.Fatal(err) |
| 322 | 323 |
} |
| 323 |
- defer func() {
|
|
| 324 |
- if err := n.Delete(); err != nil {
|
|
| 325 |
- t.Fatal(err) |
|
| 326 |
- } |
|
| 327 |
- }() |
|
| 328 | 324 |
|
| 329 |
- _, err = controller.NewNetwork(bridgeNetType, "testnetwork") |
|
| 325 |
+ _, err = controller.NewNetwork(bridgeNetType, "testdup") |
|
| 330 | 326 |
if err == nil {
|
| 331 | 327 |
t.Fatal("Expected to fail. But instead succeeded")
|
| 332 | 328 |
} |
| ... | ... |
@@ -341,7 +346,14 @@ func TestNetworkName(t *testing.T) {
|
| 341 | 341 |
defer netutils.SetupTestNetNS(t)() |
| 342 | 342 |
} |
| 343 | 343 |
|
| 344 |
- _, err := createTestNetwork(bridgeNetType, "", options.Generic{})
|
|
| 344 |
+ netOption := options.Generic{
|
|
| 345 |
+ netlabel.GenericData: options.Generic{
|
|
| 346 |
+ "BridgeName": "testnetwork", |
|
| 347 |
+ "AllowNonDefaultBridge": true, |
|
| 348 |
+ }, |
|
| 349 |
+ } |
|
| 350 |
+ |
|
| 351 |
+ _, err := createTestNetwork(bridgeNetType, "", netOption) |
|
| 345 | 352 |
if err == nil {
|
| 346 | 353 |
t.Fatal("Expected to fail. But instead succeeded")
|
| 347 | 354 |
} |
| ... | ... |
@@ -351,7 +363,7 @@ func TestNetworkName(t *testing.T) {
|
| 351 | 351 |
} |
| 352 | 352 |
|
| 353 | 353 |
networkName := "testnetwork" |
| 354 |
- n, err := createTestNetwork(bridgeNetType, networkName, options.Generic{})
|
|
| 354 |
+ n, err := createTestNetwork(bridgeNetType, networkName, netOption) |
|
| 355 | 355 |
if err != nil {
|
| 356 | 356 |
t.Fatal(err) |
| 357 | 357 |
} |
| ... | ... |
@@ -371,7 +383,14 @@ func TestNetworkType(t *testing.T) {
|
| 371 | 371 |
defer netutils.SetupTestNetNS(t)() |
| 372 | 372 |
} |
| 373 | 373 |
|
| 374 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 374 |
+ netOption := options.Generic{
|
|
| 375 |
+ netlabel.GenericData: options.Generic{
|
|
| 376 |
+ "BridgeName": "testnetwork", |
|
| 377 |
+ "AllowNonDefaultBridge": true, |
|
| 378 |
+ }, |
|
| 379 |
+ } |
|
| 380 |
+ |
|
| 381 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", netOption) |
|
| 375 | 382 |
if err != nil {
|
| 376 | 383 |
t.Fatal(err) |
| 377 | 384 |
} |
| ... | ... |
@@ -391,7 +410,14 @@ func TestNetworkID(t *testing.T) {
|
| 391 | 391 |
defer netutils.SetupTestNetNS(t)() |
| 392 | 392 |
} |
| 393 | 393 |
|
| 394 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 394 |
+ netOption := options.Generic{
|
|
| 395 |
+ netlabel.GenericData: options.Generic{
|
|
| 396 |
+ "BridgeName": "testnetwork", |
|
| 397 |
+ "AllowNonDefaultBridge": true, |
|
| 398 |
+ }, |
|
| 399 |
+ } |
|
| 400 |
+ |
|
| 401 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", netOption) |
|
| 395 | 402 |
if err != nil {
|
| 396 | 403 |
t.Fatal(err) |
| 397 | 404 |
} |
| ... | ... |
@@ -412,7 +438,7 @@ func TestDeleteNetworkWithActiveEndpoints(t *testing.T) {
|
| 412 | 412 |
} |
| 413 | 413 |
|
| 414 | 414 |
netOption := options.Generic{
|
| 415 |
- "BridgeName": bridgeName, |
|
| 415 |
+ "BridgeName": "testnetwork", |
|
| 416 | 416 |
"AllowNonDefaultBridge": true} |
| 417 | 417 |
option := options.Generic{
|
| 418 | 418 |
netlabel.GenericData: netOption, |
| ... | ... |
@@ -453,7 +479,7 @@ func TestUnknownNetwork(t *testing.T) {
|
| 453 | 453 |
} |
| 454 | 454 |
|
| 455 | 455 |
netOption := options.Generic{
|
| 456 |
- "BridgeName": bridgeName, |
|
| 456 |
+ "BridgeName": "testnetwork", |
|
| 457 | 457 |
"AllowNonDefaultBridge": true} |
| 458 | 458 |
option := options.Generic{
|
| 459 | 459 |
netlabel.GenericData: netOption, |
| ... | ... |
@@ -491,7 +517,7 @@ func TestUnknownEndpoint(t *testing.T) {
|
| 491 | 491 |
subnet.IP = ip |
| 492 | 492 |
|
| 493 | 493 |
netOption := options.Generic{
|
| 494 |
- "BridgeName": bridgeName, |
|
| 494 |
+ "BridgeName": "testnetwork", |
|
| 495 | 495 |
"AddressIPv4": subnet, |
| 496 | 496 |
"AllowNonDefaultBridge": true} |
| 497 | 497 |
option := options.Generic{
|
| ... | ... |
@@ -542,7 +568,14 @@ func TestNetworkEndpointsWalkers(t *testing.T) {
|
| 542 | 542 |
} |
| 543 | 543 |
|
| 544 | 544 |
// Create network 1 and add 2 endpoint: ep11, ep12 |
| 545 |
- net1, err := controller.NewNetwork(bridgeNetType, "network1") |
|
| 545 |
+ netOption := options.Generic{
|
|
| 546 |
+ netlabel.GenericData: options.Generic{
|
|
| 547 |
+ "BridgeName": "network1", |
|
| 548 |
+ "AllowNonDefaultBridge": true, |
|
| 549 |
+ }, |
|
| 550 |
+ } |
|
| 551 |
+ |
|
| 552 |
+ net1, err := createTestNetwork(bridgeNetType, "network1", netOption) |
|
| 546 | 553 |
if err != nil {
|
| 547 | 554 |
t.Fatal(err) |
| 548 | 555 |
} |
| ... | ... |
@@ -605,6 +638,31 @@ func TestNetworkEndpointsWalkers(t *testing.T) {
|
| 605 | 605 |
t.Fatal(err) |
| 606 | 606 |
} |
| 607 | 607 |
|
| 608 |
+ current := len(controller.Networks()) |
|
| 609 |
+ |
|
| 610 |
+ // Create network 2 |
|
| 611 |
+ netOption = options.Generic{
|
|
| 612 |
+ netlabel.GenericData: options.Generic{
|
|
| 613 |
+ "BridgeName": "network2", |
|
| 614 |
+ "AllowNonDefaultBridge": true, |
|
| 615 |
+ }, |
|
| 616 |
+ } |
|
| 617 |
+ |
|
| 618 |
+ net2, err := createTestNetwork(bridgeNetType, "network2", netOption) |
|
| 619 |
+ if err != nil {
|
|
| 620 |
+ t.Fatal(err) |
|
| 621 |
+ } |
|
| 622 |
+ defer func() {
|
|
| 623 |
+ if err := net2.Delete(); err != nil {
|
|
| 624 |
+ t.Fatal(err) |
|
| 625 |
+ } |
|
| 626 |
+ }() |
|
| 627 |
+ |
|
| 628 |
+ // Test Networks method |
|
| 629 |
+ if len(controller.Networks()) != current+1 {
|
|
| 630 |
+ t.Fatalf("Did not find the expected number of networks")
|
|
| 631 |
+ } |
|
| 632 |
+ |
|
| 608 | 633 |
// Test Network Walk method |
| 609 | 634 |
var netName string |
| 610 | 635 |
var netWanted libnetwork.Network |
| ... | ... |
@@ -616,7 +674,7 @@ func TestNetworkEndpointsWalkers(t *testing.T) {
|
| 616 | 616 |
return false |
| 617 | 617 |
} |
| 618 | 618 |
|
| 619 |
- // Look for network named "network1" |
|
| 619 |
+ // Look for network named "network1" and "network2" |
|
| 620 | 620 |
netName = "network1" |
| 621 | 621 |
controller.WalkNetworks(nwWlk) |
| 622 | 622 |
if netWanted == nil {
|
| ... | ... |
@@ -625,6 +683,15 @@ func TestNetworkEndpointsWalkers(t *testing.T) {
|
| 625 | 625 |
if net1 != netWanted {
|
| 626 | 626 |
t.Fatal(err) |
| 627 | 627 |
} |
| 628 |
+ |
|
| 629 |
+ netName = "network2" |
|
| 630 |
+ controller.WalkNetworks(nwWlk) |
|
| 631 |
+ if netWanted == nil {
|
|
| 632 |
+ t.Fatal(err) |
|
| 633 |
+ } |
|
| 634 |
+ if net2 != netWanted {
|
|
| 635 |
+ t.Fatal(err) |
|
| 636 |
+ } |
|
| 628 | 637 |
} |
| 629 | 638 |
|
| 630 | 639 |
func TestDuplicateEndpoint(t *testing.T) {
|
| ... | ... |
@@ -632,7 +699,13 @@ func TestDuplicateEndpoint(t *testing.T) {
|
| 632 | 632 |
defer netutils.SetupTestNetNS(t)() |
| 633 | 633 |
} |
| 634 | 634 |
|
| 635 |
- n, err := controller.NewNetwork(bridgeNetType, "testnetwork", nil) |
|
| 635 |
+ netOption := options.Generic{
|
|
| 636 |
+ netlabel.GenericData: options.Generic{
|
|
| 637 |
+ "BridgeName": "testnetwork", |
|
| 638 |
+ "AllowNonDefaultBridge": true, |
|
| 639 |
+ }, |
|
| 640 |
+ } |
|
| 641 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", netOption) |
|
| 636 | 642 |
if err != nil {
|
| 637 | 643 |
t.Fatal(err) |
| 638 | 644 |
} |
| ... | ... |
@@ -677,7 +750,13 @@ func TestControllerQuery(t *testing.T) {
|
| 677 | 677 |
} |
| 678 | 678 |
|
| 679 | 679 |
// Create network 1 |
| 680 |
- net1, err := controller.NewNetwork(bridgeNetType, "network1") |
|
| 680 |
+ netOption := options.Generic{
|
|
| 681 |
+ netlabel.GenericData: options.Generic{
|
|
| 682 |
+ "BridgeName": "network1", |
|
| 683 |
+ "AllowNonDefaultBridge": true, |
|
| 684 |
+ }, |
|
| 685 |
+ } |
|
| 686 |
+ net1, err := createTestNetwork(bridgeNetType, "network1", netOption) |
|
| 681 | 687 |
if err != nil {
|
| 682 | 688 |
t.Fatal(err) |
| 683 | 689 |
} |
| ... | ... |
@@ -687,6 +766,23 @@ func TestControllerQuery(t *testing.T) {
|
| 687 | 687 |
} |
| 688 | 688 |
}() |
| 689 | 689 |
|
| 690 |
+ // Create network 2 |
|
| 691 |
+ netOption = options.Generic{
|
|
| 692 |
+ netlabel.GenericData: options.Generic{
|
|
| 693 |
+ "BridgeName": "network2", |
|
| 694 |
+ "AllowNonDefaultBridge": true, |
|
| 695 |
+ }, |
|
| 696 |
+ } |
|
| 697 |
+ net2, err := createTestNetwork(bridgeNetType, "network2", netOption) |
|
| 698 |
+ if err != nil {
|
|
| 699 |
+ t.Fatal(err) |
|
| 700 |
+ } |
|
| 701 |
+ defer func() {
|
|
| 702 |
+ if err := net2.Delete(); err != nil {
|
|
| 703 |
+ t.Fatal(err) |
|
| 704 |
+ } |
|
| 705 |
+ }() |
|
| 706 |
+ |
|
| 690 | 707 |
_, err = controller.NetworkByName("")
|
| 691 | 708 |
if err == nil {
|
| 692 | 709 |
t.Fatalf("NetworkByName() succeeded with invalid target name")
|
| ... | ... |
@@ -730,6 +826,26 @@ func TestControllerQuery(t *testing.T) {
|
| 730 | 730 |
if net1 != g {
|
| 731 | 731 |
t.Fatalf("NetworkByID() returned unexpected element: %v", g)
|
| 732 | 732 |
} |
| 733 |
+ |
|
| 734 |
+ g, err = controller.NetworkByName("network2")
|
|
| 735 |
+ if err != nil {
|
|
| 736 |
+ t.Fatalf("Unexpected failure for NetworkByName(): %v", err)
|
|
| 737 |
+ } |
|
| 738 |
+ if g == nil {
|
|
| 739 |
+ t.Fatalf("NetworkByName() did not find the network")
|
|
| 740 |
+ } |
|
| 741 |
+ |
|
| 742 |
+ if g != net2 {
|
|
| 743 |
+ t.Fatalf("NetworkByName() returned the wrong network")
|
|
| 744 |
+ } |
|
| 745 |
+ |
|
| 746 |
+ g, err = controller.NetworkByID(net2.ID()) |
|
| 747 |
+ if err != nil {
|
|
| 748 |
+ t.Fatalf("Unexpected failure for NetworkByID(): %v", err)
|
|
| 749 |
+ } |
|
| 750 |
+ if net2 != g {
|
|
| 751 |
+ t.Fatalf("NetworkByID() returned unexpected element: %v", g)
|
|
| 752 |
+ } |
|
| 733 | 753 |
} |
| 734 | 754 |
|
| 735 | 755 |
func TestNetworkQuery(t *testing.T) {
|
| ... | ... |
@@ -738,7 +854,13 @@ func TestNetworkQuery(t *testing.T) {
|
| 738 | 738 |
} |
| 739 | 739 |
|
| 740 | 740 |
// Create network 1 and add 2 endpoint: ep11, ep12 |
| 741 |
- net1, err := controller.NewNetwork(bridgeNetType, "network1") |
|
| 741 |
+ netOption := options.Generic{
|
|
| 742 |
+ netlabel.GenericData: options.Generic{
|
|
| 743 |
+ "BridgeName": "network1", |
|
| 744 |
+ "AllowNonDefaultBridge": true, |
|
| 745 |
+ }, |
|
| 746 |
+ } |
|
| 747 |
+ net1, err := createTestNetwork(bridgeNetType, "network1", netOption) |
|
| 742 | 748 |
if err != nil {
|
| 743 | 749 |
t.Fatal(err) |
| 744 | 750 |
} |
| ... | ... |
@@ -853,7 +975,13 @@ func TestEndpointJoin(t *testing.T) {
|
| 853 | 853 |
defer netutils.SetupTestNetNS(t)() |
| 854 | 854 |
} |
| 855 | 855 |
|
| 856 |
- n1, err := createTestNetwork(bridgeNetType, "testnetwork1", options.Generic{})
|
|
| 856 |
+ // Create network 1 and add 2 endpoint: ep11, ep12 |
|
| 857 |
+ n1, err := createTestNetwork(bridgeNetType, "testnetwork1", options.Generic{
|
|
| 858 |
+ netlabel.GenericData: options.Generic{
|
|
| 859 |
+ "BridgeName": "testnetwork1", |
|
| 860 |
+ "AllowNonDefaultBridge": true, |
|
| 861 |
+ }, |
|
| 862 |
+ }) |
|
| 857 | 863 |
if err != nil {
|
| 858 | 864 |
t.Fatal(err) |
| 859 | 865 |
} |
| ... | ... |
@@ -894,12 +1022,14 @@ func TestEndpointJoin(t *testing.T) {
|
| 894 | 894 |
libnetwork.JoinOptionHostname("test"),
|
| 895 | 895 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 896 | 896 |
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
|
| 897 |
+ runtime.LockOSThread() |
|
| 897 | 898 |
if err != nil {
|
| 898 | 899 |
t.Fatal(err) |
| 899 | 900 |
} |
| 900 | 901 |
|
| 901 | 902 |
defer func() {
|
| 902 | 903 |
err = ep1.Leave(containerID) |
| 904 |
+ runtime.LockOSThread() |
|
| 903 | 905 |
if err != nil {
|
| 904 | 906 |
t.Fatal(err) |
| 905 | 907 |
} |
| ... | ... |
@@ -919,7 +1049,7 @@ func TestEndpointJoin(t *testing.T) {
|
| 919 | 919 |
n2, err := createTestNetwork(bridgeNetType, "testnetwork2", |
| 920 | 920 |
options.Generic{
|
| 921 | 921 |
netlabel.GenericData: options.Generic{
|
| 922 |
- "BridgeName": "secondary", |
|
| 922 |
+ "BridgeName": "testnetwork2", |
|
| 923 | 923 |
"AllowNonDefaultBridge": true, |
| 924 | 924 |
}, |
| 925 | 925 |
}) |
| ... | ... |
@@ -962,7 +1092,12 @@ func TestEndpointJoinInvalidContainerId(t *testing.T) {
|
| 962 | 962 |
defer netutils.SetupTestNetNS(t)() |
| 963 | 963 |
} |
| 964 | 964 |
|
| 965 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 965 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{
|
|
| 966 |
+ netlabel.GenericData: options.Generic{
|
|
| 967 |
+ "BridgeName": "testnetwork", |
|
| 968 |
+ "AllowNonDefaultBridge": true, |
|
| 969 |
+ }, |
|
| 970 |
+ }) |
|
| 966 | 971 |
if err != nil {
|
| 967 | 972 |
t.Fatal(err) |
| 968 | 973 |
} |
| ... | ... |
@@ -997,7 +1132,12 @@ func TestEndpointDeleteWithActiveContainer(t *testing.T) {
|
| 997 | 997 |
defer netutils.SetupTestNetNS(t)() |
| 998 | 998 |
} |
| 999 | 999 |
|
| 1000 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 1000 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{
|
|
| 1001 |
+ netlabel.GenericData: options.Generic{
|
|
| 1002 |
+ "BridgeName": "testnetwork", |
|
| 1003 |
+ "AllowNonDefaultBridge": true, |
|
| 1004 |
+ }, |
|
| 1005 |
+ }) |
|
| 1001 | 1006 |
if err != nil {
|
| 1002 | 1007 |
t.Fatal(err) |
| 1003 | 1008 |
} |
| ... | ... |
@@ -1016,11 +1156,13 @@ func TestEndpointDeleteWithActiveContainer(t *testing.T) {
|
| 1016 | 1016 |
libnetwork.JoinOptionHostname("test"),
|
| 1017 | 1017 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 1018 | 1018 |
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
|
| 1019 |
+ runtime.LockOSThread() |
|
| 1019 | 1020 |
if err != nil {
|
| 1020 | 1021 |
t.Fatal(err) |
| 1021 | 1022 |
} |
| 1022 | 1023 |
defer func() {
|
| 1023 | 1024 |
err = ep.Leave(containerID) |
| 1025 |
+ runtime.LockOSThread() |
|
| 1024 | 1026 |
if err != nil {
|
| 1025 | 1027 |
t.Fatal(err) |
| 1026 | 1028 |
} |
| ... | ... |
@@ -1046,7 +1188,12 @@ func TestEndpointMultipleJoins(t *testing.T) {
|
| 1046 | 1046 |
defer netutils.SetupTestNetNS(t)() |
| 1047 | 1047 |
} |
| 1048 | 1048 |
|
| 1049 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 1049 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{
|
|
| 1050 |
+ netlabel.GenericData: options.Generic{
|
|
| 1051 |
+ "BridgeName": "testnetwork", |
|
| 1052 |
+ "AllowNonDefaultBridge": true, |
|
| 1053 |
+ }, |
|
| 1054 |
+ }) |
|
| 1050 | 1055 |
if err != nil {
|
| 1051 | 1056 |
t.Fatal(err) |
| 1052 | 1057 |
} |
| ... | ... |
@@ -1070,12 +1217,13 @@ func TestEndpointMultipleJoins(t *testing.T) {
|
| 1070 | 1070 |
libnetwork.JoinOptionHostname("test"),
|
| 1071 | 1071 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 1072 | 1072 |
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
|
| 1073 |
- |
|
| 1073 |
+ runtime.LockOSThread() |
|
| 1074 | 1074 |
if err != nil {
|
| 1075 | 1075 |
t.Fatal(err) |
| 1076 | 1076 |
} |
| 1077 | 1077 |
defer func() {
|
| 1078 | 1078 |
err = ep.Leave(containerID) |
| 1079 |
+ runtime.LockOSThread() |
|
| 1079 | 1080 |
if err != nil {
|
| 1080 | 1081 |
t.Fatal(err) |
| 1081 | 1082 |
} |
| ... | ... |
@@ -1096,7 +1244,12 @@ func TestEndpointInvalidLeave(t *testing.T) {
|
| 1096 | 1096 |
defer netutils.SetupTestNetNS(t)() |
| 1097 | 1097 |
} |
| 1098 | 1098 |
|
| 1099 |
- n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{})
|
|
| 1099 |
+ n, err := createTestNetwork(bridgeNetType, "testnetwork", options.Generic{
|
|
| 1100 |
+ netlabel.GenericData: options.Generic{
|
|
| 1101 |
+ "BridgeName": "testnetwork", |
|
| 1102 |
+ "AllowNonDefaultBridge": true, |
|
| 1103 |
+ }, |
|
| 1104 |
+ }) |
|
| 1100 | 1105 |
if err != nil {
|
| 1101 | 1106 |
t.Fatal(err) |
| 1102 | 1107 |
} |
| ... | ... |
@@ -1131,12 +1284,13 @@ func TestEndpointInvalidLeave(t *testing.T) {
|
| 1131 | 1131 |
libnetwork.JoinOptionHostname("test"),
|
| 1132 | 1132 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 1133 | 1133 |
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
|
| 1134 |
- |
|
| 1134 |
+ runtime.LockOSThread() |
|
| 1135 | 1135 |
if err != nil {
|
| 1136 | 1136 |
t.Fatal(err) |
| 1137 | 1137 |
} |
| 1138 | 1138 |
defer func() {
|
| 1139 | 1139 |
err = ep.Leave(containerID) |
| 1140 |
+ runtime.LockOSThread() |
|
| 1140 | 1141 |
if err != nil {
|
| 1141 | 1142 |
t.Fatal(err) |
| 1142 | 1143 |
} |
| ... | ... |
@@ -1167,7 +1321,12 @@ func TestEndpointUpdateParent(t *testing.T) {
|
| 1167 | 1167 |
defer netutils.SetupTestNetNS(t)() |
| 1168 | 1168 |
} |
| 1169 | 1169 |
|
| 1170 |
- n, err := createTestNetwork("bridge", "testnetwork", options.Generic{})
|
|
| 1170 |
+ n, err := createTestNetwork("bridge", "testnetwork", options.Generic{
|
|
| 1171 |
+ netlabel.GenericData: options.Generic{
|
|
| 1172 |
+ "BridgeName": "testnetwork", |
|
| 1173 |
+ "AllowNonDefaultBridge": true, |
|
| 1174 |
+ }, |
|
| 1175 |
+ }) |
|
| 1171 | 1176 |
if err != nil {
|
| 1172 | 1177 |
t.Fatal(err) |
| 1173 | 1178 |
} |
| ... | ... |
@@ -1191,12 +1350,13 @@ func TestEndpointUpdateParent(t *testing.T) {
|
| 1191 | 1191 |
libnetwork.JoinOptionHostname("test1"),
|
| 1192 | 1192 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 1193 | 1193 |
libnetwork.JoinOptionExtraHost("web", "192.168.0.1"))
|
| 1194 |
- |
|
| 1194 |
+ runtime.LockOSThread() |
|
| 1195 | 1195 |
if err != nil {
|
| 1196 | 1196 |
t.Fatal(err) |
| 1197 | 1197 |
} |
| 1198 | 1198 |
defer func() {
|
| 1199 | 1199 |
err = ep1.Leave(containerID) |
| 1200 |
+ runtime.LockOSThread() |
|
| 1200 | 1201 |
if err != nil {
|
| 1201 | 1202 |
t.Fatal(err) |
| 1202 | 1203 |
} |
| ... | ... |
@@ -1217,13 +1377,14 @@ func TestEndpointUpdateParent(t *testing.T) {
|
| 1217 | 1217 |
libnetwork.JoinOptionDomainname("docker.io"),
|
| 1218 | 1218 |
libnetwork.JoinOptionHostsPath("/var/lib/docker/test_network/container2/hosts"),
|
| 1219 | 1219 |
libnetwork.JoinOptionParentUpdate(ep1.ID(), "web", "192.168.0.2")) |
| 1220 |
- |
|
| 1220 |
+ runtime.LockOSThread() |
|
| 1221 | 1221 |
if err != nil {
|
| 1222 | 1222 |
t.Fatal(err) |
| 1223 | 1223 |
} |
| 1224 | 1224 |
|
| 1225 | 1225 |
defer func() {
|
| 1226 | 1226 |
err = ep2.Leave("container2")
|
| 1227 |
+ runtime.LockOSThread() |
|
| 1227 | 1228 |
if err != nil {
|
| 1228 | 1229 |
t.Fatal(err) |
| 1229 | 1230 |
} |
| ... | ... |
@@ -1258,7 +1419,9 @@ func TestEnableIPv6(t *testing.T) {
|
| 1258 | 1258 |
netOption := options.Generic{
|
| 1259 | 1259 |
netlabel.EnableIPv6: true, |
| 1260 | 1260 |
netlabel.GenericData: options.Generic{
|
| 1261 |
- "FixedCIDRv6": cidrv6, |
|
| 1261 |
+ "BridgeName": "testnetwork", |
|
| 1262 |
+ "FixedCIDRv6": cidrv6, |
|
| 1263 |
+ "AllowNonDefaultBridge": true, |
|
| 1262 | 1264 |
}, |
| 1263 | 1265 |
} |
| 1264 | 1266 |
|
| ... | ... |
@@ -1291,12 +1454,13 @@ func TestEnableIPv6(t *testing.T) {
|
| 1291 | 1291 |
|
| 1292 | 1292 |
err = ep1.Join(containerID, |
| 1293 | 1293 |
libnetwork.JoinOptionResolvConfPath(resolvConfPath)) |
| 1294 |
- |
|
| 1294 |
+ runtime.LockOSThread() |
|
| 1295 | 1295 |
if err != nil {
|
| 1296 | 1296 |
t.Fatal(err) |
| 1297 | 1297 |
} |
| 1298 | 1298 |
defer func() {
|
| 1299 | 1299 |
err = ep1.Leave(containerID) |
| 1300 |
+ runtime.LockOSThread() |
|
| 1300 | 1301 |
if err != nil {
|
| 1301 | 1302 |
t.Fatal(err) |
| 1302 | 1303 |
} |
| ... | ... |
@@ -1339,7 +1503,13 @@ func TestResolvConf(t *testing.T) {
|
| 1339 | 1339 |
} |
| 1340 | 1340 |
}() |
| 1341 | 1341 |
|
| 1342 |
- n, err := createTestNetwork("bridge", "testnetwork", options.Generic{})
|
|
| 1342 |
+ netOption := options.Generic{
|
|
| 1343 |
+ netlabel.GenericData: options.Generic{
|
|
| 1344 |
+ "BridgeName": "testnetwork", |
|
| 1345 |
+ "AllowNonDefaultBridge": true, |
|
| 1346 |
+ }, |
|
| 1347 |
+ } |
|
| 1348 |
+ n, err := createTestNetwork("bridge", "testnetwork", netOption)
|
|
| 1343 | 1349 |
if err != nil {
|
| 1344 | 1350 |
t.Fatal(err) |
| 1345 | 1351 |
} |
| ... | ... |
@@ -1368,11 +1538,13 @@ func TestResolvConf(t *testing.T) {
|
| 1368 | 1368 |
|
| 1369 | 1369 |
err = ep1.Join(containerID, |
| 1370 | 1370 |
libnetwork.JoinOptionResolvConfPath(resolvConfPath)) |
| 1371 |
+ runtime.LockOSThread() |
|
| 1371 | 1372 |
if err != nil {
|
| 1372 | 1373 |
t.Fatal(err) |
| 1373 | 1374 |
} |
| 1374 | 1375 |
defer func() {
|
| 1375 | 1376 |
err = ep1.Leave(containerID) |
| 1377 |
+ runtime.LockOSThread() |
|
| 1376 | 1378 |
if err != nil {
|
| 1377 | 1379 |
t.Fatal(err) |
| 1378 | 1380 |
} |
| ... | ... |
@@ -1398,6 +1570,7 @@ func TestResolvConf(t *testing.T) {
|
| 1398 | 1398 |
} |
| 1399 | 1399 |
|
| 1400 | 1400 |
err = ep1.Leave(containerID) |
| 1401 |
+ runtime.LockOSThread() |
|
| 1401 | 1402 |
if err != nil {
|
| 1402 | 1403 |
t.Fatal(err) |
| 1403 | 1404 |
} |
| ... | ... |
@@ -1408,6 +1581,7 @@ func TestResolvConf(t *testing.T) {
|
| 1408 | 1408 |
|
| 1409 | 1409 |
err = ep1.Join(containerID, |
| 1410 | 1410 |
libnetwork.JoinOptionResolvConfPath(resolvConfPath)) |
| 1411 |
+ runtime.LockOSThread() |
|
| 1411 | 1412 |
if err != nil {
|
| 1412 | 1413 |
t.Fatal(err) |
| 1413 | 1414 |
} |
| ... | ... |
@@ -1426,12 +1600,14 @@ func TestResolvConf(t *testing.T) {
|
| 1426 | 1426 |
} |
| 1427 | 1427 |
|
| 1428 | 1428 |
err = ep1.Leave(containerID) |
| 1429 |
+ runtime.LockOSThread() |
|
| 1429 | 1430 |
if err != nil {
|
| 1430 | 1431 |
t.Fatal(err) |
| 1431 | 1432 |
} |
| 1432 | 1433 |
|
| 1433 | 1434 |
err = ep1.Join(containerID, |
| 1434 | 1435 |
libnetwork.JoinOptionResolvConfPath(resolvConfPath)) |
| 1436 |
+ runtime.LockOSThread() |
|
| 1435 | 1437 |
if err != nil {
|
| 1436 | 1438 |
t.Fatal(err) |
| 1437 | 1439 |
} |
| ... | ... |
@@ -1584,7 +1760,13 @@ func createGlobalInstance(t *testing.T) {
|
| 1584 | 1584 |
} |
| 1585 | 1585 |
} |
| 1586 | 1586 |
|
| 1587 |
- net, err := controller.NewNetwork(bridgeNetType, "network1") |
|
| 1587 |
+ netOption := options.Generic{
|
|
| 1588 |
+ netlabel.GenericData: options.Generic{
|
|
| 1589 |
+ "BridgeName": "network", |
|
| 1590 |
+ "AllowNonDefaultBridge": true, |
|
| 1591 |
+ }, |
|
| 1592 |
+ } |
|
| 1593 |
+ net, err := createTestNetwork(bridgeNetType, "network", netOption) |
|
| 1588 | 1594 |
if err != nil {
|
| 1589 | 1595 |
t.Fatal("new network")
|
| 1590 | 1596 |
} |
| ... | ... |
@@ -1677,12 +1859,12 @@ func runParallelTests(t *testing.T, thrNumber int) {
|
| 1677 | 1677 |
} |
| 1678 | 1678 |
defer netns.Set(origns) |
| 1679 | 1679 |
|
| 1680 |
- net, err := controller.NetworkByName("network1")
|
|
| 1680 |
+ net, err := controller.NetworkByName("network")
|
|
| 1681 | 1681 |
if err != nil {
|
| 1682 | 1682 |
t.Fatal(err) |
| 1683 | 1683 |
} |
| 1684 | 1684 |
if net == nil {
|
| 1685 |
- t.Fatal("Could not find network1")
|
|
| 1685 |
+ t.Fatal("Could not find network")
|
|
| 1686 | 1686 |
} |
| 1687 | 1687 |
|
| 1688 | 1688 |
ep, err := net.EndpointByName("ep1")
|