[asterisk-commits] file: branch group/dns_srv r433422 - /team/group/dns_srv/tests/test_dns_srv.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Mar 25 14:11:20 CDT 2015
Author: file
Date: Wed Mar 25 14:11:19 2015
New Revision: 433422
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=433422
Log:
Reduce code duplication.
Modified:
team/group/dns_srv/tests/test_dns_srv.c
Modified: team/group/dns_srv/tests/test_dns_srv.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns_srv/tests/test_dns_srv.c?view=diff&rev=433422&r1=433421&r2=433422
==============================================================================
--- team/group/dns_srv/tests/test_dns_srv.c (original)
+++ team/group/dns_srv/tests/test_dns_srv.c Wed Mar 25 14:11:19 2015
@@ -230,17 +230,76 @@
.cancel = srv_cancel,
};
-AST_TEST_DEFINE(srv_resolve_single_record)
+static enum ast_test_result_state nominal_test(struct ast_test *test, struct srv_record *records,
+ int *srv_record_order, int num_records)
{
RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
const struct ast_dns_record *record;
- struct srv_record records[] = {
- { 10, 10, 5060, "goose.down" },
- };
-
- int srv_record_order[] = { 0, };
enum ast_test_result_state res = AST_TEST_PASS;
int i;
+
+ test_records = records;
+ num_test_records = num_records;
+ memset(ans_buffer, 0, sizeof(ans_buffer));
+
+ ast_dns_resolver_register(&srv_resolver);
+
+ if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
+ ast_test_status_update(test, "DNS resolution failed\n");
+ res = AST_TEST_FAIL;
+ goto cleanup;
+ }
+
+ if (!result) {
+ ast_test_status_update(test, "DNS resolution returned no result\n");
+ res = AST_TEST_FAIL;
+ goto cleanup;
+ }
+
+ i = 0;
+ for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
+ if (ast_dns_srv_get_priority(record) != records[srv_record_order[i]].priority) {
+ ast_test_status_update(test, "Unexpected priority in returned SRV record\n");
+ res = AST_TEST_FAIL;
+ }
+ if (ast_dns_srv_get_weight(record) != records[srv_record_order[i]].weight) {
+ ast_test_status_update(test, "Unexpected weight in returned SRV record\n");
+ res = AST_TEST_FAIL;
+ }
+ if (ast_dns_srv_get_port(record) != records[srv_record_order[i]].port) {
+ ast_test_status_update(test, "Unexpected port in returned SRV record\n");
+ res = AST_TEST_FAIL;
+ }
+ if (strcmp(ast_dns_srv_get_host(record), records[srv_record_order[i]].host)) {
+ ast_test_status_update(test, "Unexpected host in returned SRV record\n");
+ res = AST_TEST_FAIL;
+ }
+ ++i;
+ }
+
+ if (i != num_records) {
+ ast_test_status_update(test, "Unexpected number of records returned in SRV lookup\n");
+ res = AST_TEST_FAIL;
+ }
+
+cleanup:
+
+ ast_dns_resolver_unregister(&srv_resolver);
+
+ test_records = NULL;
+ num_test_records = 0;
+ memset(ans_buffer, 0, sizeof(ans_buffer));
+
+ return res;
+}
+
+AST_TEST_DEFINE(srv_resolve_single_record)
+{
+ struct srv_record records[] = {
+ { 10, 10, 5060, "goose.down" },
+ };
+
+ int srv_record_order[] = { 0, };
switch (cmd) {
case TEST_INIT:
@@ -255,73 +314,16 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- i = 0;
- for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
- if (ast_dns_srv_get_priority(record) != records[srv_record_order[i]].priority) {
- ast_test_status_update(test, "Unexpected priority in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_weight(record) != records[srv_record_order[i]].weight) {
- ast_test_status_update(test, "Unexpected weight in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_port(record) != records[srv_record_order[i]].port) {
- ast_test_status_update(test, "Unexpected port in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (strcmp(ast_dns_srv_get_host(record), records[srv_record_order[i]].host)) {
- ast_test_status_update(test, "Unexpected host in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- ++i;
- }
-
- if (i != ARRAY_LEN(records)) {
- ast_test_status_update(test, "Unexpected number of records returned in SRV lookup\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return nominal_test(test, records, srv_record_order, ARRAY_LEN(records));
}
AST_TEST_DEFINE(srv_resolve_sort_priority)
{
- RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
- const struct ast_dns_record *record;
struct srv_record records[] = {
{ 20, 10, 5060, "tacos" },
{ 10, 10, 5060, "goose.down" },
};
-
int srv_record_order[] = { 1, 0};
- enum ast_test_result_state res = AST_TEST_PASS;
- int i;
switch (cmd) {
case TEST_INIT:
@@ -337,73 +339,16 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- i = 0;
- for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
- if (ast_dns_srv_get_priority(record) != records[srv_record_order[i]].priority) {
- ast_test_status_update(test, "Unexpected priority in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_weight(record) != records[srv_record_order[i]].weight) {
- ast_test_status_update(test, "Unexpected weight in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_port(record) != records[srv_record_order[i]].port) {
- ast_test_status_update(test, "Unexpected port in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (strcmp(ast_dns_srv_get_host(record), records[srv_record_order[i]].host)) {
- ast_test_status_update(test, "Unexpected host in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- ++i;
- }
-
- if (i != ARRAY_LEN(records)) {
- ast_test_status_update(test, "Unexpected number of records returned in SRV lookup\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return nominal_test(test, records, srv_record_order, ARRAY_LEN(records));
}
AST_TEST_DEFINE(srv_resolve_same_priority_zero_weight)
{
- RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
- const struct ast_dns_record *record;
struct srv_record records[] = {
{ 10, 0, 5060, "tacos" },
{ 10, 10, 5060, "goose.down" },
};
-
int srv_record_order[] = { 1, 0};
- enum ast_test_result_state res = AST_TEST_PASS;
- int i;
switch (cmd) {
case TEST_INIT:
@@ -419,59 +364,7 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- i = 0;
- for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
- if (ast_dns_srv_get_priority(record) != records[srv_record_order[i]].priority) {
- ast_test_status_update(test, "Unexpected priority in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_weight(record) != records[srv_record_order[i]].weight) {
- ast_test_status_update(test, "Unexpected weight in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (ast_dns_srv_get_port(record) != records[srv_record_order[i]].port) {
- ast_test_status_update(test, "Unexpected port in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- if (strcmp(ast_dns_srv_get_host(record), records[srv_record_order[i]].host)) {
- ast_test_status_update(test, "Unexpected host in returned SRV record\n");
- res = AST_TEST_FAIL;
- }
- ++i;
- }
-
- if (i != ARRAY_LEN(records)) {
- ast_test_status_update(test, "Unexpected number of records returned in SRV lookup\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return nominal_test(test, records, srv_record_order, ARRAY_LEN(records));
}
AST_TEST_DEFINE(srv_resolve_same_priority_different_weights)
@@ -664,15 +557,53 @@
return res;
}
-AST_TEST_DEFINE(srv_resolve_record_missing_weight_port_host)
+static enum ast_test_result_state invalid_record_test(struct ast_test *test, struct srv_record *records,
+ int num_records)
{
RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
const struct ast_dns_record *record;
+ enum ast_test_result_state res = AST_TEST_PASS;
+
+ test_records = records;
+ num_test_records = num_records;
+ memset(ans_buffer, 0, sizeof(ans_buffer));
+
+ ast_dns_resolver_register(&srv_resolver);
+
+ if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
+ ast_test_status_update(test, "DNS resolution failed\n");
+ res = AST_TEST_FAIL;
+ goto cleanup;
+ }
+
+ if (!result) {
+ ast_test_status_update(test, "DNS resolution returned no result\n");
+ res = AST_TEST_FAIL;
+ goto cleanup;
+ }
+
+ record = ast_dns_result_get_records(result);
+ if (record) {
+ ast_test_status_update(test, "Unexpected record returned from SRV query\n");
+ res = AST_TEST_FAIL;
+ }
+
+cleanup:
+
+ ast_dns_resolver_unregister(&srv_resolver);
+
+ test_records = NULL;
+ num_test_records = 0;
+ memset(ans_buffer, 0, sizeof(ans_buffer));
+
+ return res;
+}
+
+AST_TEST_DEFINE(srv_resolve_record_missing_weight_port_host)
+{
struct srv_record records[] = {
{ 10, 10, 5060, "tacos.com", 0, 1, 1, 1 },
};
-
- enum ast_test_result_state res = AST_TEST_PASS;
switch (cmd) {
case TEST_INIT:
@@ -687,50 +618,14 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- record = ast_dns_result_get_records(result);
- if (record) {
- ast_test_status_update(test, "Unexpected record returned from SRV query\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return invalid_record_test(test, records, ARRAY_LEN(records));
}
AST_TEST_DEFINE(srv_resolve_record_missing_port_host)
{
- RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
- const struct ast_dns_record *record;
struct srv_record records[] = {
{ 10, 10, 5060, "tacos.com", 0, 0, 1, 1 },
};
-
- enum ast_test_result_state res = AST_TEST_PASS;
switch (cmd) {
case TEST_INIT:
@@ -745,50 +640,14 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- record = ast_dns_result_get_records(result);
- if (record) {
- ast_test_status_update(test, "Unexpected record returned from SRV query\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return invalid_record_test(test, records, ARRAY_LEN(records));
}
AST_TEST_DEFINE(srv_resolve_record_missing_host)
{
- RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
- const struct ast_dns_record *record;
struct srv_record records[] = {
{ 10, 10, 5060, "tacos.com", 0, 0, 0, 1 },
};
-
- enum ast_test_result_state res = AST_TEST_PASS;
switch (cmd) {
case TEST_INIT:
@@ -804,39 +663,7 @@
break;
}
- test_records = records;
- num_test_records = ARRAY_LEN(records);
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- ast_dns_resolver_register(&srv_resolver);
-
- if (ast_dns_resolve("goose.feathers", ns_t_srv, ns_c_in, &result)) {
- ast_test_status_update(test, "DNS resolution failed\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- if (!result) {
- ast_test_status_update(test, "DNS resolution returned no result\n");
- res = AST_TEST_FAIL;
- goto cleanup;
- }
-
- record = ast_dns_result_get_records(result);
- if (record) {
- ast_test_status_update(test, "Unexpected record returned from SRV query\n");
- res = AST_TEST_FAIL;
- }
-
-cleanup:
-
- ast_dns_resolver_unregister(&srv_resolver);
-
- test_records = NULL;
- num_test_records = 0;
- memset(ans_buffer, 0, sizeof(ans_buffer));
-
- return res;
+ return invalid_record_test(test, records, ARRAY_LEN(records));
}
static int unload_module(void)
More information about the asterisk-commits
mailing list