Test a URI query with multiple answers
authorMatt Rogers <mrogers@redhat.com>
Thu, 25 Aug 2016 16:59:31 +0000 (12:59 -0400)
committerMichael Adam <obnox@samba.org>
Thu, 1 Sep 2016 13:55:06 +0000 (15:55 +0200)
Signed-off-by: Matt Rogers <mrogers@redhat.com
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
tests/fake_hosts.in
tests/test_dns_fake.c

index 181297973c69ff9bad36963fba3fcddf8cf65c5a..824af57eeaa21fae0d6aa01cb61e46389aa22284 100644 (file)
@@ -13,5 +13,7 @@ A krb5.cwrap.org 127.0.0.23
 A ns1.cwrap.org 127.0.0.24
 A ns2.cwrap.org 127.0.0.25
 URI _vpn.cwrap.org https://vpn.cwrap.org/VPN 2 5
+URI _vpn.cwrap.org https://vpn2.cwrap.org/VPN 2 10
+URI _vpn.cwrap.org https://vpn3.cwrap.org/VPN 2 20
 URI _ftp.cwrap.org ftp://ftp.cwrap.org/public
 PTR 22.0.0.127.in-addr.arpa www.cwrap.org
index 348135cb239f0e03c883f0096911ce2e1d89edd4..28ee57a363b782e412ce2af9a6c6264b37a4cf9e 100644 (file)
@@ -371,20 +371,20 @@ static void test_res_fake_uri_query(void **state)
 
        rv = res_nquery(&dnsstate, "_vpn.cwrap.org", ns_c_in, ns_t_uri,
                        answer, sizeof(answer));
-       assert_in_range(rv, 1, 100);
+       assert_in_range(rv, 1, ANSIZE);
 
        ns_initparse(answer, sizeof(answer), &handle);
 
        /*
-        * The query must finish w/o an error, have one answer and the answer
-        * must be a parseable RR of type URI and have the priority, weight, and
-        * URI string as in the hosts file.
+        * The query must finish w/o an error, have three answers and they must be
+        * a parseable RR of type URI and have the priority, weight, and URI string
+        * as in the hosts file.
         */
        assert_int_equal(ns_msg_getflag(handle, ns_f_rcode), ns_r_noerror);
-       assert_int_equal(ns_msg_count(handle, ns_s_an), 1);
+       assert_int_equal(ns_msg_count(handle, ns_s_an), 3);
+
        assert_int_equal(ns_parserr(&handle, ns_s_an, 0, &rr), 0);
        assert_int_equal(ns_rr_type(rr), ns_t_uri);
-
        rrdata = ns_rr_rdata(rr);
        NS_GET16(prio, rrdata);
        NS_GET16(weight, rrdata);
@@ -392,6 +392,27 @@ static void test_res_fake_uri_query(void **state)
        assert_int_equal(prio, 2);
        assert_int_equal(weight, 5);
        assert_string_equal(rrdata, "https://vpn.cwrap.org/VPN");
+
+       assert_int_equal(ns_parserr(&handle, ns_s_an, 1, &rr), 0);
+       assert_int_equal(ns_rr_type(rr), ns_t_uri);
+       rrdata = ns_rr_rdata(rr);
+       NS_GET16(prio, rrdata);
+       NS_GET16(weight, rrdata);
+
+       assert_int_equal(prio, 2);
+       assert_int_equal(weight, 10);
+       assert_string_equal(rrdata, "https://vpn2.cwrap.org/VPN");
+
+       assert_int_equal(ns_parserr(&handle, ns_s_an, 2, &rr), 0);
+       assert_int_equal(ns_rr_type(rr), ns_t_uri);
+       rrdata = ns_rr_rdata(rr);
+       NS_GET16(prio, rrdata);
+       NS_GET16(weight, rrdata);
+
+       assert_int_equal(prio, 2);
+       assert_int_equal(weight, 20);
+       assert_string_equal(rrdata, "https://vpn3.cwrap.org/VPN");
+
 }
 
 /*