1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
const MainLoop = imports.mainloop;
const Gio = imports.gi.Gio;
const Evd = imports.gi.Evd;
const Test = imports.common.test;
function abort_test_by_timeout () {
MainLoop.quit ("test");
Test.Assert.fail ("test timeout");
}
function testGetDefault (Assert) {
let resolver = Evd.Resolver.get_default ();
Assert.ok (resolver);
let resolver1 = Evd.Resolver.get_default ();
Assert.strictEqual (resolver, resolver1);
}
function testIPv4NoResolve (Assert) {
const ADDR = "127.0.0.1";
const PORT = 80;
let timeout_src_id = MainLoop.timeout_add (1000, abort_test_by_timeout);
let resolver = Evd.Resolver.get_default ();
let request = resolver.resolve_with_closure (ADDR + ":" + PORT,
function (res, req) {
Assert.equal (req.is_active (), false);
MainLoop.source_remove (timeout_src_id);
MainLoop.quit ("test");
Assert.strictEqual (resolver, res);
Assert.strictEqual (request, req);
let addresses = request.get_result ();
Assert.ok (addresses);
Assert.strictEqual (typeof (addresses), "object");
Assert.strictEqual (addresses.constructor, Array);
Assert.strictEqual (addresses.length, 1);
let addr = addresses[0];
Assert.strictEqual (addr.constructor, Gio.InetSocketAddress);
Assert.strictEqual (addr.get_port (), PORT);
let inet_addr = addresses[0].get_address ();
Assert.strictEqual (inet_addr.to_string (), ADDR);
});
Assert.equal (request.is_active (), true);
MainLoop.run ("test");
}
function testResolveLocalhost (Assert) {
const ADDR = "localhost";
const PORT = 22;
const NEW_PORT = 23;
let timeout_src_id = MainLoop.timeout_add (1000, abort_test_by_timeout);
let resolver = Evd.Resolver.get_default ();
let request = resolver.resolve_with_closure (ADDR + ":" + PORT,
function (res, req) {
MainLoop.source_remove (timeout_src_id);
MainLoop.quit ("test");
Assert.strictEqual (resolver, res);
Assert.strictEqual (request, req);
let addresses = request.get_result ();
Assert.ok (addresses);
Assert.strictEqual (typeof (addresses), "object");
Assert.strictEqual (addresses.constructor, Array);
Assert.ok (addresses.length >= 1);
for each (let addr in addresses) {
Assert.strictEqual (addr.constructor, Gio.InetSocketAddress);
Assert.strictEqual (addr.get_port (), NEW_PORT);
if (addr.family == Gio.SocketFamily.IPV4) {
let inet_addr = addr.get_address ();
Assert.strictEqual (inet_addr.to_string (), "127.0.0.1");
}
else if (addr.family == Gio.SocketFamily.IPV6) {
let inet_addr = addr.get_address ();
Assert.strictEqual (inet_addr.to_string (), "::1");
}
}
});
request.port = NEW_PORT;
MainLoop.run ("test");
}
function testCancel (Assert) {
const ADDR = "localhost:1024";
let resolver = Evd.Resolver.get_default ();
let request = resolver.resolve_with_closure (ADDR,
function (res, req) {
MainLoop.source_remove (timeout_src_id);
MainLoop.quit ("test");
Assert.fail ("request cancellation failed");
});
request.cancel ();
Assert.equal (request.is_active (), false);
let timeout_src_id = MainLoop.timeout_add (500,
function () {
MainLoop.quit ("test");
});
MainLoop.run ("test");
}
Test.run (this);
|