switch (cmd) {
case TEST_INIT:
info->name = "meetme_get_data_test";
- info->category = "main/data/app_meetme/list";
+ info->category = "/main/data/app_meetme/list/";
info->summary = "Meetme data provider unit test";
info->description =
"Tests whether the Meetme data provider implementation works as expected.";
switch (cmd) {
case TEST_INIT:
info->name = "vmuser";
- info->category = "apps/app_voicemail/";
+ info->category = "/apps/app_voicemail/";
info->summary = "Vmuser unit test";
info->description =
"This tests passing all supported parameters to apply_options, the voicemail user config parser";
switch (cmd) {
case TEST_INIT:
info->name = "vmsayname_exec";
- info->category = "apps/app_voicemail/";
+ info->category = "/apps/app_voicemail/";
info->summary = "Vmsayname unit test";
info->description =
"This tests passing various parameters to vmsayname";
switch (cmd) {
case TEST_INIT:
info->name = "test_voicemail_msgcount";
- info->category = "apps/app_voicemail/";
+ info->category = "/apps/app_voicemail/";
info->summary = "Test Voicemail status checks";
info->description =
"Verify that message counts are correct when retrieved through the public API";
switch (cmd) {
case TEST_INIT:
info->name = "test_voicemail_notify_endl";
- info->category = "apps/app_voicemail/";
+ info->category = "/apps/app_voicemail/";
info->summary = "Test Voicemail notification end-of-line";
info->description =
"Verify that notification emails use a consistent end-of-line character";
switch (cmd) {
case TEST_INIT:
info->name = "iax2_peers_get_data_test";
- info->category = "main/data/iax2/peers";
+ info->category = "/main/data/iax2/peers/";
info->summary = "IAX2 peers data providers unit test";
info->description =
"Tests whether the IAX2 peers data provider implementation works as expected.";
switch (cmd) {
case TEST_INIT:
info->name = "iax2_users_get_data_test";
- info->category = "main/data/iax2/users";
+ info->category = "/main/data/iax2/users/";
info->summary = "IAX2 users data providers unit test";
info->description =
"Tests whether the IAX2 users data provider implementation works as expected.";
switch (cmd) {
case TEST_INIT:
info->name = "sip_peers_get_data_test";
- info->category = "main/data/sip/peers";
+ info->category = "/main/data/sip/peers/";
info->summary = "SIP peers data providers unit test";
info->description =
"Tests whether the SIP peers data provider implementation works as expected.";
switch (cmd) {
case TEST_INIT:
info->name = "sip_parse_register_line_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests sip register line parsing";
info->description =
"Tests parsing of various register line configurations. "
switch (cmd) {
case TEST_INIT:
info->name = "sip_parse_host_line_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests sip.conf host line parsing";
info->description =
"Tests parsing of various host line configurations. "
switch (cmd) {
case TEST_INIT:
info->name = "test_sip_rtpqos";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "Test retrieval of SIP RTP QOS stats";
info->description =
"Verify values in the RTP instance structure can be accessed through the dialplan.";
switch (cmd) {
case TEST_INIT:
info->name = "sip_uri_full_parse_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests sip full uri parsing";
info->description =
"Tests full parsing of various URIs "
switch (cmd) {
case TEST_INIT:
info->name = "sip_uri_parse_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests sip uri parsing";
info->description =
"Tests parsing of various URIs "
switch (cmd) {
case TEST_INIT:
info->name = "sip_get_calleridname_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "decodes callerid name from sip header";
info->description = "Decodes display-name field of sip header. Checks for valid output and expected failure cases.";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "sip_get_name_and_number_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "Tests getting name and number from sip header";
info->description =
"Runs through various test situations in which a name and "
switch (cmd) {
case TEST_INIT:
info->name = "sip_get_in_brackets_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "Tests getting a sip uri in <> brackets within a sip header.";
info->description =
"Runs through various test situations in which a sip uri "
switch (cmd) {
case TEST_INIT:
info->name = "parse_name_andor_addr_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests parsing of name_andor_addr abnf structure";
info->description =
"Tests parsing of abnf name-andor-addr = name-addr / addr-spec "
switch (cmd) {
case TEST_INIT:
info->name = "parse_contact_header_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "tests parsing of sip contact header";
info->description =
"Tests parsing of a contact header including those with multiple contacts "
switch (cmd) {
case TEST_INIT:
info->name = "sip_parse_options_test";
- info->category = "channels/chan_sip/";
+ info->category = "/channels/chan_sip/";
info->summary = "Tests parsing of sip options";
info->description =
"Tests parsing of SIP options from supported and required "
switch (cmd) {
case TEST_INIT:
info->name = "test_MATH_function";
- info->category = "main/pbx/";
+ info->category = "/main/pbx/";
info->summary = "Test MATH function substitution";
info->description =
"Executes a series of variable substitutions using the MATH function and ensures that the expected results are received.";
switch (cmd) {
case TEST_INIT:
info->name = "func_FILTER_test";
- info->category = "funcs/func_strings/";
+ info->category = "/funcs/func_strings/";
info->summary = "Test FILTER function";
info->description = "Verify FILTER behavior";
return AST_TEST_NOT_RUN;
unsigned int flags; /*!< channel flags of AST_FLAG_ type */
int alertpipe[2];
format_t nativeformats; /*!< Kinds of data this channel can natively handle */
- format_t readformat; /*!< Requested read format */
- format_t writeformat; /*!< Requested write format */
- format_t rawreadformat; /*!< Raw read format */
- format_t rawwriteformat; /*!< Raw write format */
+ format_t readformat; /*!< Requested read format (after translation) */
+ format_t writeformat; /*!< Requested write format (after translation) */
+ format_t rawreadformat; /*!< Raw read format (before translation) */
+ format_t rawwriteformat; /*!< Raw write format (before translation) */
unsigned int emulate_dtmf_duration; /*!< Number of ms left to emulate DTMF for */
#ifdef HAVE_EPOLL
int epfd;
* \retval 0 Address is null
* \retval non-zero The port number of the ast_sockaddr
*/
-uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr);
+#define ast_sockaddr_port(addr) _ast_sockaddr_port(addr, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+uint16_t _ast_sockaddr_port(const struct ast_sockaddr *addr, const char *file, int line, const char *func);
/*!
* \since 1.8
* \param port The port you wish to set the address to use
* \retval void
*/
-void ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port);
+#define ast_sockaddr_set_port(addr,port) _ast_sockaddr_set_port(addr,port,__FILE__,__LINE__,__PRETTY_FUNCTION__)
+void _ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port, const char *file, int line, const char *func);
/*!
* \since 1.8
* \retval nonzero Success
* \retval zero Failure
*/
-int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
- struct sockaddr_in *sin);
+#define ast_sockaddr_to_sin(addr,sin) _ast_sockaddr_to_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+int _ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
+ struct sockaddr_in *sin, const char *file, int line, const char *func);
/*!
* \since 1.8
* \param sin The sockaddr_in to convert
* \return an ast_sockaddr structure
*/
-void ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin);
+#define ast_sockaddr_from_sin(addr,sin) _ast_sockaddr_from_sin(addr,sin, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+void _ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin,
+ const char *file, int line, const char *func);
/*@}*/
switch (cmd) {
case TEST_INIT:
info->name = "data_test";
- info->category = "main/data/";
+ info->category = "/main/data/";
info->summary = "Data API unit test";
info->description =
"Tests whether data API get implementation works as expected.";
switch (cmd) {
case TEST_INIT:
info->name = "features_test";
- info->category = "main/features/";
+ info->category = "/main/features/";
info->summary = "Features unit test";
info->description =
"Tests whether parking respects PARKINGLOT settings";
return ret;
}
-uint16_t ast_sockaddr_port(const struct ast_sockaddr *addr)
+uint16_t _ast_sockaddr_port(const struct ast_sockaddr *addr, const char *file, int line, const char *func)
{
if (addr->ss.ss_family == AF_INET &&
addr->len == sizeof(struct sockaddr_in)) {
addr->len == sizeof(struct sockaddr_in6)) {
return ntohs(((struct sockaddr_in6 *)&addr->ss)->sin6_port);
}
- ast_log(LOG_ERROR, "Not an IPv4 nor IPv6 address, cannot get port.\n");
+ ast_log(__LOG_DEBUG, file, line, func, "Not an IPv4 nor IPv6 address, cannot get port.\n");
return 0;
}
-void ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port)
+void _ast_sockaddr_set_port(struct ast_sockaddr *addr, uint16_t port, const char *file, int line, const char *func)
{
if (addr->ss.ss_family == AF_INET &&
addr->len == sizeof(struct sockaddr_in)) {
addr->len == sizeof(struct sockaddr_in6)) {
((struct sockaddr_in6 *)&addr->ss)->sin6_port = htons(port);
} else {
- ast_log(LOG_ERROR,
+ ast_log(__LOG_DEBUG, file, line, func,
"Not an IPv4 nor IPv6 address, cannot set port.\n");
}
}
return res;
}
-int ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
- struct sockaddr_in *sin)
+int _ast_sockaddr_to_sin(const struct ast_sockaddr *addr,
+ struct sockaddr_in *sin, const char *file, int line, const char *func)
{
if (ast_sockaddr_isnull(addr)) {
memset(sin, 0, sizeof(*sin));
}
if (addr->len != sizeof(*sin)) {
- ast_log(LOG_ERROR, "Bad address cast to IPv4\n");
+ ast_log(__LOG_ERROR, file, line, func, "Bad address cast to IPv4\n");
return 0;
}
if (addr->ss.ss_family != AF_INET) {
- ast_log(LOG_DEBUG, "Address family is not AF_INET\n");
+ ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
}
*sin = *(struct sockaddr_in *)&addr->ss;
return 1;
}
-void ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin)
+void _ast_sockaddr_from_sin(struct ast_sockaddr *addr, const struct sockaddr_in *sin,
+ const char *file, int line, const char *func)
{
memcpy(&addr->ss, sin, sizeof(*sin));
if (addr->ss.ss_family != AF_INET) {
- ast_log(LOG_DEBUG, "Address family is not AF_INET\n");
+ ast_log(__LOG_DEBUG, file, line, func, "Address family is not AF_INET\n");
}
addr->len = sizeof(*sin);
}
if (test->info.category[0] != '/' || test->info.category[strlen(test->info.category) - 1] != '/') {
- ast_log(LOG_WARNING, "Test category is missing a leading or trailing backslash for test %s%s",
+ ast_log(LOG_WARNING, "Test category is missing a leading or trailing backslash for test %s%s\n",
test->info.category, test->info.name);
}
switch (cmd) {
case TEST_INIT:
info->name = "null_agi_docs";
- info->category = "res/agi/";
+ info->category = "/res/agi/";
info->summary = "AGI command with no documentation";
info->description = "Test whether an AGI command with no documentation will crash Asterisk";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "test_kqueue_timing";
- info->category = "res/res_timing_kqueue";
+ info->category = "/res/res_timing_kqueue/";
info->summary = "Test KQueue timing interface";
info->description = "Verify that the KQueue timing interface correctly generates timing events";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "invalid_acl";
- info->category = "main/acl/";
+ info->category = "/main/acl/";
info->summary = "Invalid ACL unit test";
info->description =
"Ensures that garbage ACL values are not accepted";
switch (cmd) {
case TEST_INIT:
info->name = "acl";
- info->category = "main/acl/";
+ info->category = "/main/acl/";
info->summary = "ACL unit test";
info->description =
"Tests that hosts are properly permitted or denied";
switch (cmd) {
case TEST_INIT:
info->name = "aoc_event_test";
- info->category = "main/aoc/";
+ info->category = "/main/aoc/";
info->summary = "Advice of Charge event generation test";
info->description =
"Creates AOC messages, verify event string matches expected results";
switch (cmd) {
case TEST_INIT:
info->name = "aoc_encode_decode_test";
- info->category = "main/aoc/";
+ info->category = "/main/aoc/";
info->summary = "Advice of Charge encode and decode test";
info->description =
"This tests the Advice of Charge encode and decode routines.";
switch (cmd) {
case TEST_INIT:
info->name = "options_parsing";
- info->category = "main/app/";
+ info->category = "/main/app/";
info->summary = "App options unit test";
info->description =
"This tests the options parsing code to ensure that it behaves as expected";
switch (cmd) {
case TEST_INIT:
info->name = "app_group";
- info->category = "main/app/";
+ info->category = "/main/app/";
info->summary = "App group unit test";
info->description =
"This tests various app group functionality";
switch (cmd) {
case TEST_INIT:
info->name = "ast_format_str_reduce_test_1";
- info->category = "main/file/";
+ info->category = "/main/file/";
info->summary = "reduce format strings";
info->description = "Reduce some format strings and make sure the results match what we expect.";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "astobj2_test1";
- info->category = "main/astobj2/";
+ info->category = "/main/astobj2/";
info->summary = "astobj2 test using ao2 objects, containers, callbacks, and iterators";
info->description =
"Builds ao2_containers with various item numbers, bucket sizes, cmp and hash "
switch (cmd) {
case TEST_INIT:
info->name = "device2extenstate_test";
- info->category = "main/devicestate/";
+ info->category = "/main/devicestate/";
info->summary = "Tests combined devstate mapping and device to extension state mapping.";
info->description =
"Verifies device state aggregate results match the expected combined "
switch (cmd) {
case TEST_INIT:
info->name = "ast_event_new_test";
- info->category = "main/event/";
+ info->category = "/main/event/";
info->summary = "Test event creation";
info->description =
"This test exercises the API calls that allow allocation "
switch (cmd) {
case TEST_INIT:
info->name = "ast_event_subscribe_test";
- info->category = "main/event/";
+ info->category = "/main/event/";
info->summary = "Test event subscriptions";
info->description =
"This test exercises the API calls that allow subscriptions "
switch (cmd) {
case TEST_INIT:
info->name = "gosub application";
- info->category = "apps/app_gosub/";
+ info->category = "/apps/app_gosub/";
info->summary = "Verify functionality of gosub application";
info->description =
"Verify functionality of gosub application";
switch (cmd) {
case TEST_INIT:
info->name = "heap_test_1";
- info->category = "main/heap/";
+ info->category = "/main/heap/";
info->summary = "push and pop elements";
info->description = "Push a few elements onto a heap and make sure that they come back off in the right order.";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "heap_test_2";
- info->category = "main/heap/";
+ info->category = "/main/heap/";
info->summary = "load test";
info->description =
"Push one hundred thousand random elements on to a heap, "
switch (cmd) {
case TEST_INIT:
info->name = "heap_test_3";
- info->category = "main/heap/";
+ info->category = "/main/heap/";
info->summary = "random element removal test";
info->description =
"Push a hundred thousand random elements on to a heap, "
switch (cmd) {
case TEST_INIT:
info->name = "pattern_match_test";
- info->category = "main/pbx/";
+ info->category = "/main/pbx/";
info->summary = "Test pattern matching";
info->description = "Create a context with a bunch of extensions within. Then attempt\n"
"to match some strings to the extensions.";
switch (cmd) {
case TEST_INIT:
info->name = "sched_test_order";
- info->category = "main/sched/";
+ info->category = "/main/sched/";
info->summary = "Test ordering of events in the scheduler API";
info->description =
"This test ensures that events are properly ordered by the "
switch (cmd) {
case TEST_INIT:
info->name = "sample_test";
- info->category = "main/sample/";
+ info->category = "/main/sample/";
info->summary = "sample unit test";
info->description =
"This demonstrates what is required to implement "
switch (cmd) {
case TEST_INIT:
info->name = "string_field_test";
- info->category = "main/utils/";
+ info->category = "/main/utils/";
info->summary = "Test stringfield operations";
info->description =
"This tests the stringfield API";
switch (cmd) {
case TEST_INIT:
info->name = "str_test";
- info->category = "main/strings/";
+ info->category = "/main/strings/";
info->summary = "Test dynamic string operations";
info->description = "Test setting and appending stack and heap-allocated strings";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "test_substitution";
- info->category = "main/pbx/";
+ info->category = "/main/pbx/";
info->summary = "Test variable and function substitution";
info->description =
"This test executes a variety of variable and function substitutions "
switch (cmd) {
case TEST_INIT:
info->name = "timezone_watch";
- info->category = "main/stdtime/";
+ info->category = "/main/stdtime/";
info->summary = "Verify deleting timezone file purges cache";
info->description =
"Verifies that the caching engine properly destroys a timezone entry when its file is deleted.";
switch (cmd) {
case TEST_INIT:
info->name = "uri_encode_decode_test";
- info->category = "main/utils/";
+ info->category = "/main/utils/";
info->summary = "encode and decode a hex escaped string";
info->description = "encode a string, verify encoded string matches what we expect. Decode the encoded string, verify decoded string matches the original string.";
return AST_TEST_NOT_RUN;
switch (cmd) {
case TEST_INIT:
info->name = "md5_test";
- info->category = "main/utils/";
+ info->category = "/main/utils/";
info->summary = "MD5 test";
info->description =
"This test exercises MD5 calculations."
switch (cmd) {
case TEST_INIT:
info->name = "sha1_test";
- info->category = "main/utils/";
+ info->category = "/main/utils/";
info->summary = "SHA1 test";
info->description =
"This test exercises SHA1 calculations."
switch (cmd) {
case TEST_INIT:
info->name = "base64_test";
- info->category = "main/utils/";
+ info->category = "/main/utils/";
info->summary = "base64 test";
info->description = "This test exercises the base64 conversions.";
return AST_TEST_NOT_RUN;