31 #include "../res/res_aeap/transport.h"
33 #define CATEGORY "/res/aeap/transport/"
35 #define ADDR "127.0.0.1:8088"
36 #define TRANSPORT_URL "ws://" ADDR "/ws"
37 #define TRANSPORT_URL_INVALID "ws://" ADDR "/invalid"
38 #define TRANSPORT_PROTOCOL "echo"
39 #define TRANSPORT_PROTOCOL_INVALID "invalid"
40 #define TRANSPORT_TIMEOUT 2000
48 info->name = __func__;
49 info->explicit_only = 0;
51 info->summary =
"test creating an AEAP invalid transport type";
52 info->description = info->summary;
53 return AST_TEST_NOT_RUN;
59 ast_test_validate(
test, !(transport = aeap_transport_create(
"invalid")));
70 info->name = __func__;
71 info->explicit_only = 0;
73 info->summary =
"test creating an AEAP transport";
74 info->description = info->summary;
75 return AST_TEST_NOT_RUN;
81 ast_test_validate(
test, (transport = aeap_transport_create(TRANSPORT_URL)));
92 info->name = __func__;
93 info->explicit_only = 0;
95 info->summary =
"test connecting to an AEAP transport";
96 info->description = info->summary;
97 return AST_TEST_NOT_RUN;
103 ast_test_validate(
test, (transport = aeap_transport_create_and_connect(
104 TRANSPORT_URL, TRANSPORT_URL, TRANSPORT_PROTOCOL, TRANSPORT_TIMEOUT)));
106 ast_test_validate(
test, aeap_transport_is_connected(transport));
107 ast_test_validate(
test, !aeap_transport_disconnect(transport));
108 ast_test_validate(
test, !aeap_transport_is_connected(transport));
110 return AST_TEST_PASS;
119 info->name = __func__;
120 info->explicit_only = 0;
122 info->summary =
"test connecting failure for an AEAP transport";
123 info->description = info->summary;
124 return AST_TEST_NOT_RUN;
130 ast_test_validate(
test, (transport = aeap_transport_create(TRANSPORT_URL)));
132 ast_test_validate(
test, aeap_transport_connect(transport,
133 TRANSPORT_URL_INVALID, TRANSPORT_PROTOCOL, TRANSPORT_TIMEOUT));
135 ast_test_validate(
test, !aeap_transport_is_connected(transport));
137 aeap_transport_destroy(transport);
140 ast_test_validate(
test, (transport = aeap_transport_create(TRANSPORT_URL)));
142 ast_test_validate(
test, aeap_transport_connect(transport,
143 TRANSPORT_URL, TRANSPORT_PROTOCOL_INVALID, TRANSPORT_TIMEOUT));
145 ast_test_validate(
test, !aeap_transport_is_connected(transport));
147 return AST_TEST_PASS;
158 info->name = __func__;
159 info->explicit_only = 0;
161 info->summary =
"test binary I/O from an AEAP transport";
162 info->description = info->summary;
163 return AST_TEST_NOT_RUN;
168 ast_test_validate(
test, (transport = aeap_transport_create_and_connect(
169 TRANSPORT_URL, TRANSPORT_URL, TRANSPORT_PROTOCOL, TRANSPORT_TIMEOUT)));
171 ast_test_validate(
test, aeap_transport_write(transport, &num,
sizeof(num),
172 AST_AEAP_DATA_TYPE_BINARY) ==
sizeof(num));
173 ast_test_validate(
test, aeap_transport_read(transport, &num,
174 sizeof(num), &rtype) ==
sizeof(num));
175 ast_test_validate(
test, rtype == AST_AEAP_DATA_TYPE_BINARY);
176 ast_test_validate(
test, num == 38);
178 return AST_TEST_PASS;
189 info->name = __func__;
190 info->explicit_only = 0;
192 info->summary =
"test string I/O from an AEAP transport";
193 info->description = info->summary;
194 return AST_TEST_NOT_RUN;
199 ast_test_validate(
test, (transport = aeap_transport_create_and_connect(
200 TRANSPORT_URL, TRANSPORT_URL, TRANSPORT_PROTOCOL, TRANSPORT_TIMEOUT)));
202 ast_test_validate(
test, aeap_transport_write(transport,
"foo bar baz", 11,
203 AST_AEAP_DATA_TYPE_STRING) == 11);
204 ast_test_validate(
test, aeap_transport_read(transport, buf,
205 sizeof(buf) /
sizeof(
char), &rtype) == 11);
206 ast_test_validate(
test, rtype == AST_AEAP_DATA_TYPE_STRING);
207 ast_test_validate(
test, !strcmp(buf,
"foo bar baz"));
209 return AST_TEST_PASS;
214 static int load_module(
void)
216 if (!(http_server = ast_http_test_server_get(
"aeap transport http server", NULL))) {
220 AST_TEST_REGISTER(transport_string);
221 AST_TEST_REGISTER(transport_binary);
222 AST_TEST_REGISTER(transport_connect_fail);
223 AST_TEST_REGISTER(transport_connect);
224 AST_TEST_REGISTER(transport_create);
225 AST_TEST_REGISTER(transport_create_invalid);
230 static int unload_module(
void)
232 AST_TEST_UNREGISTER(transport_string);
233 AST_TEST_UNREGISTER(transport_binary);
234 AST_TEST_UNREGISTER(transport_connect_fail);
235 AST_TEST_UNREGISTER(transport_connect);
236 AST_TEST_UNREGISTER(transport_create);
237 AST_TEST_UNREGISTER(transport_create_invalid);
239 ast_http_test_server_discard(http_server);
244 AST_MODULE_INFO(
ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT,
"Asterisk External Application Protocol Transport Tests",
245 .support_level = AST_MODULE_SUPPORT_CORE,
247 .unload = unload_module,
248 .requires =
"res_aeap",
Asterisk main include file. File version handling, generic pbx functions.
Support for Private Asterisk HTTP Servers.
Module has failed to load, may be in an inconsistent state.
AST_AEAP_DATA_TYPE
Supported Asterisk external application data types.
Asterisk external application transport structure to be "derived" by specific transport implementatio...
#define AST_TEST_DEFINE(hdr)
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.