Author: file
Date: Thu Mar 26 13:48:29 2015
New Revision: 433491

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=433491
Log:
NAPTR test? Bah. SRV test!

Modified:
    team/group/dns_srv/res/res_resolver_unbound.c

Modified: team/group/dns_srv/res/res_resolver_unbound.c
URL: 
http://svnview.digium.com/svn/asterisk/team/group/dns_srv/res/res_resolver_unbound.c?view=diff&rev=433491&r1=433490&r2=433491
==============================================================================
--- team/group/dns_srv/res/res_resolver_unbound.c (original)
+++ team/group/dns_srv/res/res_resolver_unbound.c Thu Mar 26 13:48:29 2015
@@ -35,6 +35,10 @@
 #include "asterisk/config.h"
 #include "asterisk/config_options.h"
 #include "asterisk/test.h"
+
+#ifdef TEST_FRAMEWORK
+#include "asterisk/dns_srv.h"
+#endif
 
 /*** DOCUMENTATION
        <configInfo name="res_resolver_unbound" language="en_US">
@@ -299,6 +303,7 @@
 
        ao2_ref(data, -1);
        ao2_ref(cfg, -1);
+
        return res;
 }
 
@@ -487,8 +492,6 @@
 }
 
 #ifdef TEST_FRAMEWORK
-
-#include "asterisk/dns_naptr.h"
 
 /*!
  * \brief A DNS record to be used during a test
@@ -1183,23 +1186,25 @@
        return AST_TEST_PASS;
 }
 
-AST_TEST_DEFINE(resolve_naptr)
+AST_TEST_DEFINE(resolve_srv)
 {
        RAII_VAR(struct unbound_resolver *, resolver, NULL, ao2_cleanup);
        RAII_VAR(struct unbound_config *, cfg, NULL, ao2_cleanup);
        RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
-
        const struct ast_dns_record *record;
-
-       static const char * DOMAIN1 = "goose.feathers";
+       static const char *DOMAIN1 = "taco.bananas";
+       static const char *DOMAIN1_SRV = "taco.bananas 12345 IN SRV 10 20 5060 
sip.taco.bananas";
+       enum ast_test_result_state res = AST_TEST_PASS;
 
        switch (cmd) {
        case TEST_INIT:
-               info->name = "resolve_naptr";
+               info->name = "resolve_srv";
                info->category = "/res/res_resolver_unbound/";
-               info->summary = "Attempt resolution of NAPTR record\n";
-               info->description = "This test performs a NAPTR lookup and 
ensures that\n"
-                       "the returned record has the appropriate values set\n";
+               info->summary = "Test synchronous SRV resolution using 
libunbound\n";
+               info->description = "This test performs the following:\n"
+                       "\t* Set one SRV record on one domain\n"
+                       "\t* Perform an SRV lookup on the domain\n"
+                       "\t* Ensure that the SRV record returned matches the 
expected value\n";
                return AST_TEST_NOT_RUN;
        case TEST_EXECUTE:
                break;
@@ -1209,43 +1214,44 @@
        resolver = ao2_bump(cfg->global->state->resolver);
 
        ub_ctx_zone_add(resolver->context, DOMAIN1, "static");
-
-       ub_ctx_data_add(resolver->context, "goose.feathers 12345 IN NAPTR 200 
200 A \"Fake service\" \"\" goose.down");
-       ub_ctx_data_add(resolver->context, "goose.feathers 12345 IN NAPTR 200 
100 A \"Fake service\" \"\" duck.down");
-       ub_ctx_data_add(resolver->context, "goose.feathers 12345 IN NAPTR 100 
200 A \"Fake service\" \"\" pheasant.down");
-       ub_ctx_data_add(resolver->context, "goose.feathers 12345 IN NAPTR 100 
100 A \"Fake service\" \"\" platypus.fur");
-
-       if (ast_dns_resolve(DOMAIN1, ns_t_naptr, ns_c_in, &result)) {
-               ast_test_status_update(test, "Failed to resolve domain\n");
-               return AST_TEST_FAIL;
-       }
-
-       if (!result) {
-               ast_test_status_update(test, "Successful resolution set a NULL 
result\n");
-               return AST_TEST_FAIL;
+       ub_ctx_data_add(resolver->context, DOMAIN1_SRV);
+
+       if (ast_dns_resolve(DOMAIN1, ns_t_srv, ns_c_in, &result)) {
+               ast_test_status_update(test, "Failed to synchronously resolve 
SRV for domain '%s'\n", DOMAIN1);
+               res = AST_TEST_FAIL;
+               goto cleanup;
        }
 
        record = ast_dns_result_get_records(result);
-       if (!record) {
-               ast_test_status_update(test, "Failed to get any DNS records 
from the result\n");
-               return AST_TEST_FAIL;
-       }
-
-       for (record = ast_dns_result_get_records(result); record; record = 
ast_dns_record_get_next(record)) {
-               /* XXX This just prints data for my own inspection right now. 
It will need to actually
-                * perform a check in order to really pass. This will be done 
once more NAPTR records
-                * are added so I can check ordering as well as individual data
-                */
-               ast_log(LOG_NOTICE, "order is %hu\n", 
ast_dns_naptr_get_order(record));
-               ast_log(LOG_NOTICE, "preference is %hu\n", 
ast_dns_naptr_get_preference(record));
-               ast_log(LOG_NOTICE, "flags is %s\n", 
ast_dns_naptr_get_flags(record));
-               ast_log(LOG_NOTICE, "service is %s\n", 
ast_dns_naptr_get_service(record));
-               ast_log(LOG_NOTICE, "regexp is %s\n", 
ast_dns_naptr_get_regexp(record));
-               ast_log(LOG_NOTICE, "replacement is %s\n", 
ast_dns_naptr_get_replacement(record));
-       }
-
-       return AST_TEST_PASS;
-
+       if (ast_dns_srv_get_priority(record) != 10) {
+               ast_test_status_update(test, "SRV Record returned priority '%d' 
when we expected 10\n", ast_dns_srv_get_priority(record));
+               res = AST_TEST_FAIL;
+               goto cleanup;
+       }
+
+       if (ast_dns_srv_get_weight(record) != 20) {
+               ast_test_status_update(test, "SRV Record returned weight '%d' 
when we expected 20\n", ast_dns_srv_get_weight(record));
+               res = AST_TEST_FAIL;
+               goto cleanup;
+       }
+
+       if (ast_dns_srv_get_port(record) != 5060) {
+               ast_test_status_update(test, "SRV Record returned port '%d' 
when we expected 5060\n", ast_dns_srv_get_port(record));
+               res = AST_TEST_FAIL;
+               goto cleanup;
+       }
+
+       if (strcmp(ast_dns_srv_get_host(record), "sip.taco.bananas")) {
+               ast_test_status_update(test, "SRV Record returned host '%s' 
when we expected sip.taco.bananas\n", ast_dns_srv_get_host(record));
+               res = AST_TEST_FAIL;
+               goto cleanup;
+       }
+
+cleanup:
+       ub_ctx_data_remove(resolver->context, DOMAIN1_SRV);
+       ub_ctx_zone_remove(resolver->context, DOMAIN1);
+
+       return res;
 }
 #endif
 
@@ -1268,7 +1274,7 @@
        AST_TEST_UNREGISTER(resolve_sync_off_nominal);
        AST_TEST_UNREGISTER(resolve_sync_off_nominal);
        AST_TEST_UNREGISTER(resolve_cancel_off_nominal);
-       AST_TEST_UNREGISTER(resolve_naptr);
+       AST_TEST_UNREGISTER(resolve_srv);
        return 0;
 }
 
@@ -1325,7 +1331,7 @@
        AST_TEST_REGISTER(resolve_sync_off_nominal);
        AST_TEST_REGISTER(resolve_async_off_nominal);
        AST_TEST_REGISTER(resolve_cancel_off_nominal);
-       AST_TEST_REGISTER(resolve_naptr);
+       AST_TEST_REGISTER(resolve_srv);
 
        return AST_MODULE_LOAD_SUCCESS;
 }


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to