Exemplo n.º 1
0
 it("findFree", function(done) {
   this.timeout(100000);
   let ips = IpStore.fromJson({
       ipv4Range: [["192.168.176.100/24", "192.168.176.200/24"]],
       ipv6Range: [["fd00::100/112", "fd00::164/112"]],
       ipAssigned: new IpAssigned()
   });
   // console.log("ipstore:-1:", ips);
   ips.assignGateWay([IPAddress.parse("192.168.176.254/24"), IPAddress.parse("fd00::1/112")]);
   // console.log("ipstore:-2:", ips);
   let ipes : IpEntry[] = [];
   for(let i = 0; i <= 100; ++i) {
     // console.log("ipstore:-3:", i);
     let ipe = ips.findFree(null, null);
     ipes.push(ipe);
     // console.log("ipstore:-4:", i);
     let ipe_a = ipe.ifAddr.getAddrs().map(s => s.to_string());
     // console.log("ipstore:-5:", i, `192.168.176.${i+100}/24`, `fd00::${i+100}/112`);
     assert.deepEqual([ '192.168.176.254', 'fd00::1' ], IPAddress.to_s_vec(ipe.ifAddr.getDests()));
     assert.deepEqual([
       IPAddress.parse(`192.168.176.${i+100}/24`).to_string(),
       IPAddress.parse(`fd00::${(i+0x100).toString(16)}/112`).to_string()
     ], ipe_a);
   }
   let ff = ips.findFree(null, null);
   console.log(ff);
   assert.isNull(ff);
   let first = ipes.shift();
   let release = ips.release(first);
   assert.equal(first, release);
   let found = ips.findFree(null, null);
   // console.log("found:", found);
   assert.deepEqual(first.ifAddr.getAddrs(), found.ifAddr.getAddrs());
   assert.isNull(ips.findFree(null, null));
   // free one
   // find one != null
   // find one == null
   done();
 });
Exemplo n.º 2
0
  it("IsUsable", () => {
    let ia = new IfAddrs();
    ia.addAddr(IPAddress.parse("10.1.0.1/24"));
    assert.isNotNull(ia.addAddr(IPAddress.parse("10.2.0.1/24")), "ia.addAddr failed");
    assert.isNull(ia.addAddr(IPAddress.parse("256.2.0.1/24")), "ia.addAddr failed");
    assert.isNotNull(ia.addRoute(RouteVia.parse(IPAddress.parse("172.16.0.1/24"), 
      IPAddress.parse("172.16.0.254"))));

    assert.isNull(ia.addDest(IPAddress.parse("172.316.0.1/24")));
    assert.isNotNull(ia.addDest(IPAddress.parse("172.16.0.1/24"))); 

    assert.isNotNull(ia.addRoute(RouteVia.parse(IPAddress.parse("172.17.0.1/24"), 
      IPAddress.parse("172.17.0.254"))), "ia.addRoute 1 failed");
    assert.isNull(ia.addRoute(RouteVia.parse(IPAddress.parse("300.17.0.1/24"), 
      IPAddress.parse("172.17.0.254"))), "ia.addRoute 2 failed");
    assert.isNull(ia.addRoute(RouteVia.parse(IPAddress.parse("300.17.0.1/24"), 
      IPAddress.parse("172.17.0.254/23"))), "ia.addRoute 3 failed"); 
    assert.isNull(ia.addRoute(RouteVia.parse(IPAddress.parse("300.17.0.1/24"), 
      IPAddress.parse("172.17.0.354"))), "ia.addRoute 4 failed");
    let ret = ia.asCommands("DEV");
    let ref = ["ip addr add 10.1.0.1/24 dev DEV",
               "ip addr add 10.2.0.1/24 dev DEV",
               "ip route add 172.16.0.1/24 via 172.16.0.254 dev DEV",
               "ip route add 172.17.0.1/24 via 172.17.0.254 dev DEV",
               "ip link set dev DEV mtu 1360 up"].join("\n");
    assert.equal(ret, ref, "wrong string");           
    let objIa = JSON.stringify(ia.asJson());
    let other = JSON.parse(objIa);
    let otherIa = IfAddrs.fromJson(other);
    // console.log("other:", other);
    // console.log("otherIa:", otherIa);
    assert.equal(objIa, JSON.stringify(otherIa.asJson()));
  });