Exemple #1
0
  private void checkNic(VmInstanceVO vm, List<DhcpInfo> info) {
    VmNicVO nic = vm.getVmNics().iterator().next();
    DhcpInfo target = null;
    for (DhcpInfo i : info) {
      if (i.mac.equals(nic.getMac())) {
        target = i;
        break;
      }
    }

    Assert.assertNotNull(target);
    Assert.assertEquals(nic.getIp(), target.ip);
    Assert.assertEquals(nic.getNetmask(), target.netmask);
    Assert.assertEquals(nic.getGateway(), target.gateway);
    Assert.assertEquals(true, target.isDefaultL3Network);
    Assert.assertEquals(
        VmSystemTags.HOSTNAME.getTokenByResourceUuid(vm.getUuid(), VmSystemTags.HOSTNAME_TOKEN),
        target.hostname);
    L3NetworkVO l3 = dbf.findByUuid(nic.getL3NetworkUuid(), L3NetworkVO.class);
    Assert.assertEquals(l3.getDnsDomain(), target.dnsDomain);
    Assert.assertNotNull(target.dns);
    List<String> dns =
        CollectionUtils.transformToList(
            l3.getDns(),
            new Function<String, L3NetworkDnsVO>() {
              @Override
              public String call(L3NetworkDnsVO arg) {
                return arg.getDns();
              }
            });
    Assert.assertTrue(dns.containsAll(target.dns));
    Assert.assertTrue(target.dns.containsAll(dns));
  }
  @Test
  public void test() throws ApiSenderException, InterruptedException {
    final L3NetworkInventory l3 = deployer.l3Networks.get("TestL3Network4");
    VmInstanceInventory vm = deployer.vms.get("TestVm");

    APIGetIpAddressCapacityReply ipcap = api.getIpAddressCapacityByAll();
    long avail1 = ipcap.getAvailableCapacity();

    int num = 50;
    final CountDownLatch latch = new CountDownLatch(num);
    final String vmUuid = vm.getUuid();

    class Ret {
      int count;
    }

    final Ret ret = new Ret();
    for (int i = 0; i < num; i++) {
      new Runnable() {
        @Override
        @AsyncThread
        public void run() {
          try {
            VmInstanceInventory v = api.attachNic(vmUuid, l3.getUuid());
            ret.count += 1;
          } catch (Exception e) {
            logger.warn(e.getMessage(), e);
          } finally {
            latch.countDown();
          }
        }
      }.run();
    }

    latch.await(120, TimeUnit.SECONDS);

    VmInstanceVO vmvo = dbf.findByUuid(vmUuid, VmInstanceVO.class);
    final CountDownLatch latch1 = new CountDownLatch(vmvo.getVmNics().size());
    for (final VmNicVO nic : vmvo.getVmNics()) {
      new Runnable() {
        @Override
        @AsyncThread
        public void run() {
          try {
            api.detachNic(nic.getUuid());
          } catch (Exception e) {
            logger.warn(e.getMessage(), e);
          } finally {
            latch1.countDown();
          }
        }
      }.run();
    }

    latch1.await(120, TimeUnit.SECONDS);

    TimeUnit.SECONDS.sleep(5);
    ipcap = api.getIpAddressCapacityByAll();
    long avail2 = ipcap.getAvailableCapacity();

    Assert.assertEquals(avail1, avail2 - 3);
  }