mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-25 07:01:09 +00:00
https://origsvn.digium.com/svn/asterisk/branches/2.0 ................ r328992 | twilson | 2011-07-20 15:18:25 -0500 (Wed, 20 Jul 2011) | 12 lines Merged revisions 328987 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r328987 | twilson | 2011-07-20 15:16:58 -0500 (Wed, 20 Jul 2011) | 5 lines We can't guarantee an eth0 is present FreeBSD test fails on this case presumably because there is no eth0 on the test machine. Better to just remove this test for now. ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@328996 65c4cc65-6c06-0410-ace0-fbb531ad65f3
127 lines
3.3 KiB
C
127 lines
3.3 KiB
C
/*
|
|
* Asterisk -- An open source telephony toolkit.
|
|
*
|
|
* Copyright (C) 2011, Digium, Inc.
|
|
*
|
|
* Terry Wilson <twilson@digium.com>
|
|
*
|
|
* See http://www.asterisk.org for more information about
|
|
* the Asterisk project. Please do not directly contact
|
|
* any of the maintainers of this project for assistance;
|
|
* the project provides a web site, mailing lists and IRC
|
|
* channels for your use.
|
|
*
|
|
* This program is free software, distributed under the terms of
|
|
* the GNU General Public License Version 2. See the LICENSE file
|
|
* at the top of the source tree.
|
|
*/
|
|
|
|
/*!
|
|
* \file
|
|
* \brief Netsock2 Unit Tests
|
|
*
|
|
* \author Terry Wilson <twilson@digium.com>
|
|
*
|
|
*/
|
|
|
|
/*** MODULEINFO
|
|
<depend>TEST_FRAMEWORK</depend>
|
|
***/
|
|
|
|
#include "asterisk.h"
|
|
|
|
ASTERISK_FILE_VERSION(__FILE__, "")
|
|
|
|
#include "asterisk/test.h"
|
|
#include "asterisk/module.h"
|
|
#include "asterisk/netsock2.h"
|
|
#include "asterisk/logger.h"
|
|
struct parse_test {
|
|
const char *address;
|
|
int expected_result;
|
|
};
|
|
|
|
AST_TEST_DEFINE(parsing)
|
|
{
|
|
int res = AST_TEST_PASS;
|
|
struct parse_test test_vals[] = {
|
|
{ "192.168.1.0", 1 },
|
|
{ "10.255.255.254", 1 },
|
|
{ "172.18.5.4", 1 },
|
|
{ "8.8.4.4", 1 },
|
|
{ "0.0.0.0", 1 },
|
|
{ "127.0.0.1", 1 },
|
|
{ "1.256.3.4", 0 },
|
|
{ "256.0.0.1", 0 },
|
|
{ "1.2.3.4:5060", 1 },
|
|
{ "::ffff:5.6.7.8", 1 },
|
|
{ "fdf8:f53b:82e4::53", 1 },
|
|
{ "fe80::200:5aee:feaa:20a2", 1 },
|
|
{ "2001::1", 1 },
|
|
{ "2001:0000:4136:e378:8000:63bf:3fff:fdd2", 1 },
|
|
{ "2001:0002:6c::430", 1 },
|
|
{ "2001:10:240:ab::a", 1 },
|
|
{ "2002:cb0a:3cdd:1::1", 1 },
|
|
{ "2001:db8:8:4::2", 1 }, /* Documentation only, should never be used */
|
|
{ "ff01:0:0:0:0:0:0:2", 1 }, /* Multicast */
|
|
{ "[fdf8:f53b:82e4::53]", 1 },
|
|
{ "[fe80::200:5aee:feaa:20a2]", 1 },
|
|
{ "[2001::1]", 1 },
|
|
{ "[2001:0000:4136:e378:8000:63bf:3fff:fdd2]:5060", 1 },
|
|
{ "2001:0000:4136:e378:8000:63bf:3fff:fdd2:5060", 0 }, /* port, but no brackets */
|
|
{ "[fe80::200::abcd", 0 }, /* multiple zero expansions */
|
|
};
|
|
|
|
size_t x;
|
|
struct ast_sockaddr addr = { { 0, 0, } };
|
|
int parse_result;
|
|
|
|
switch (cmd) {
|
|
case TEST_INIT:
|
|
info->name = "parsing";
|
|
info->category = "/main/netsock2/";
|
|
info->summary = "netsock2 parsing unit test";
|
|
info->description =
|
|
"Test parsing of IPv4 and IPv6 network addresses";
|
|
return AST_TEST_NOT_RUN;
|
|
case TEST_EXECUTE:
|
|
break;
|
|
}
|
|
|
|
for (x = 0; x < ARRAY_LEN(test_vals); x++) {
|
|
if ((parse_result = ast_sockaddr_parse(&addr, test_vals[x].address, 0)) != test_vals[x].expected_result) {
|
|
ast_test_status_update(test, "On '%s' expected %d but got %d\n", test_vals[x].address, test_vals[x].expected_result, parse_result);
|
|
res = AST_TEST_FAIL;
|
|
}
|
|
if (parse_result) {
|
|
struct ast_sockaddr tmp_addr = { { 0, 0, } };
|
|
const char *tmp;
|
|
|
|
tmp = ast_sockaddr_stringify(&addr);
|
|
ast_sockaddr_parse(&tmp_addr, tmp, 0);
|
|
if (ast_sockaddr_cmp_addr(&addr, &tmp_addr)) {
|
|
char buf[64];
|
|
ast_copy_string(buf, ast_sockaddr_stringify(&addr), sizeof(buf));
|
|
ast_test_status_update(test, "Re-parsed stringification of '%s' did not match: '%s' vs '%s'\n", test_vals[x].address, buf, ast_sockaddr_stringify(&tmp_addr));
|
|
res = AST_TEST_FAIL;
|
|
}
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
static int unload_module(void)
|
|
{
|
|
AST_TEST_UNREGISTER(parsing);
|
|
return 0;
|
|
}
|
|
|
|
static int load_module(void)
|
|
{
|
|
AST_TEST_REGISTER(parsing);
|
|
return AST_MODULE_LOAD_SUCCESS;
|
|
}
|
|
|
|
AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Netsock2 test module");
|