|
6 | 6 | "github.com/Sirupsen/logrus"
|
7 | 7 | "github.com/contiv/contivmodel/client"
|
8 | 8 | . "gopkg.in/check.v1"
|
| 9 | + "strconv" |
| 10 | + "strings" |
9 | 11 | "sync"
|
10 | 12 | "time"
|
11 | 13 | )
|
@@ -183,3 +185,104 @@ func (s *systemtestSuite) testNetworkAddDeleteTenant(c *C, encap string) {
|
183 | 185 | }
|
184 | 186 | }
|
185 | 187 | }
|
| 188 | + |
| 189 | +/* |
| 190 | +func (s *systemtestSuite) TestNetworkAddDeleteMultiTenantVXLAN(c *C) { |
| 191 | + s.testNetworkAddDeleteMultiTenant(c, "vxlan") |
| 192 | +} |
| 193 | +
|
| 194 | +func (s *systemtestSuite) TestNetworkAddDeleteMultiTenantVLAN(c *C) { |
| 195 | + s.testNetworkAddDeleteMultiTenant(c, "vlan") |
| 196 | +} |
| 197 | +
|
| 198 | +func (s *systemtestSuite) testNetworkAddDeleteMultiTenant(c *C, encap string) { |
| 199 | + mutex := sync.Mutex{} |
| 200 | + tenantPort := map[string]int{} |
| 201 | +
|
| 202 | + if encap == "vlan" && s.fwdMode == "routing" { |
| 203 | +
|
| 204 | + s.SetupBgp(c, false) |
| 205 | + s.CheckBgpConnection(c) |
| 206 | + } |
| 207 | +
|
| 208 | + for i := 0; i < s.iterations; i++ { |
| 209 | + var ( |
| 210 | + tenantNames = map[string][]string{} |
| 211 | + netNames = []string{} |
| 212 | + containers = map[string][]*container{} |
| 213 | + pktTag = 0 |
| 214 | + ) |
| 215 | +
|
| 216 | + numContainer := s.containers |
| 217 | + if numContainer < 4 { |
| 218 | + numContainer = 4 |
| 219 | + } |
| 220 | +
|
| 221 | + for tenantNum := 0; tenantNum < (s.containers / 2); tenantNum++ { |
| 222 | + tenantName := fmt.Sprintf("tenant%d", tenantNum) |
| 223 | + tenantPort[tenantName], _ = strconv.Atoi(fmt.Sprintf("800%d", tenantNum)) |
| 224 | + c.Assert(s.cli.TenantPost(&client.Tenant{TenantName: tenantName}), IsNil) |
| 225 | + tenantNames[tenantName] = []string{} |
| 226 | +
|
| 227 | + for networkNum := 0; networkNum < numContainer/len(s.nodes); networkNum++ { |
| 228 | + network := &client.Network{ |
| 229 | + TenantName: tenantName, |
| 230 | + NetworkName: fmt.Sprintf("net%d-%d", networkNum, i), |
| 231 | + Subnet: fmt.Sprintf("10.1.%d.0/24", networkNum), |
| 232 | + Gateway: fmt.Sprintf("10.1.%d.254", networkNum), |
| 233 | + PktTag: pktTag + 1000, |
| 234 | + Encap: encap, |
| 235 | + } |
| 236 | +
|
| 237 | + logrus.Infof("Creating network %s on tenant %s", network.NetworkName, network.TenantName) |
| 238 | +
|
| 239 | + c.Assert(s.cli.NetworkPost(network), IsNil) |
| 240 | + netNames = append(netNames, network.NetworkName) |
| 241 | + tenantNames[tenantName] = append(tenantNames[tenantName], network.NetworkName) |
| 242 | + pktTag++ |
| 243 | + } |
| 244 | + } |
| 245 | +
|
| 246 | + for tenant, networks := range tenantNames { |
| 247 | + endChan := make(chan error) |
| 248 | + for _, network := range networks { |
| 249 | +
|
| 250 | + go func(network, tenant string, containers map[string][]*container) { |
| 251 | + var err error |
| 252 | + mutex.Lock() |
| 253 | + containers[tenant+":"+network], err = s.runContainers(numContainer, false, fmt.Sprintf("%s/%s", network, tenant), nil) |
| 254 | + mutex.Unlock() |
| 255 | + endChan <- err |
| 256 | + }(network, tenant, containers) |
| 257 | + } |
| 258 | + for i := 0; i < len(networks); i++ { |
| 259 | + c.Assert(<-endChan, IsNil) |
| 260 | + } |
| 261 | + } |
| 262 | +
|
| 263 | + for networkTenant, containerList := range containers { |
| 264 | + tenant := strings.Split(networkTenant, ":")[0] |
| 265 | + c.Assert(s.startListeners(containerList, []int{tenantPort[tenant]}), IsNil) |
| 266 | + c.Assert(s.checkConnections(containerList, tenantPort[tenant]), IsNil) |
| 267 | + } |
| 268 | + if s.fwdMode != "routing" && encap != "vlan" { |
| 269 | + for networkTenant, containerList := range containers { |
| 270 | + tenant := strings.Split(networkTenant, ":")[0] |
| 271 | + for networkTenant, _ := range containers { |
| 272 | + diffTenant := strings.Split(networkTenant, ":")[0] |
| 273 | + if tenant != diffTenant { |
| 274 | + c.Assert(s.checkNoConnections(containerList, tenantPort[tenant]), IsNil) |
| 275 | + } |
| 276 | + } |
| 277 | + } |
| 278 | + } |
| 279 | + for tenant, networks := range tenantNames { |
| 280 | + for _, network := range networks { |
| 281 | + c.Assert(s.removeContainers(containers[tenant+":"+network]), IsNil) |
| 282 | + c.Assert(s.cli.NetworkDelete(tenant, network), IsNil) |
| 283 | + } |
| 284 | + c.Assert(s.cli.TenantDelete(tenant), IsNil) |
| 285 | + } |
| 286 | +
|
| 287 | + } |
| 288 | +}*/ |
0 commit comments