File: testResolver.js

package info (click to toggle)
event-dance 0.2.0-8~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,096 kB
  • sloc: ansic: 29,033; javascript: 2,709; makefile: 434; xml: 247; sh: 30; python: 27
file content (118 lines) | stat: -rw-r--r-- 3,731 bytes parent folder | download | duplicates (5)
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);