Merge "test_http_media_cache: Fix failing test."
[asterisk/asterisk.git] / tests / test_endpoints.c
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2013, Digium, Inc.
5  *
6  * David M. Lee, II <dlee@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*!
20  * \file
21  * \brief Test endpoints.
22  *
23  * \author\verbatim David M. Lee, II <dlee@digium.com> \endverbatim
24  *
25  * \ingroup tests
26  */
27
28 /*** MODULEINFO
29         <depend>TEST_FRAMEWORK</depend>
30         <support_level>core</support_level>
31  ***/
32
33 #include "asterisk.h"
34
35 ASTERISK_REGISTER_FILE()
36
37 #include "asterisk/astobj2.h"
38 #include "asterisk/endpoints.h"
39 #include "asterisk/module.h"
40 #include "asterisk/stasis_endpoints.h"
41 #include "asterisk/test.h"
42
43 static const char *test_category = "/core/endpoints/";
44
45 AST_TEST_DEFINE(create)
46 {
47         RAII_VAR(struct ast_endpoint *, uut, NULL, ast_endpoint_shutdown);
48
49         switch (cmd) {
50         case TEST_INIT:
51                 info->name = __func__;
52                 info->category = test_category;
53                 info->summary = "Test endpoint creation";
54                 info->description = "Test endpoint creation";
55                 return AST_TEST_NOT_RUN;
56         case TEST_EXECUTE:
57                 break;
58         }
59
60         ast_test_validate(test, NULL == ast_endpoint_create(NULL, NULL));
61         ast_test_validate(test, NULL == ast_endpoint_create("", ""));
62         ast_test_validate(test, NULL == ast_endpoint_create("TEST", ""));
63         ast_test_validate(test, NULL == ast_endpoint_create("", "test_res"));
64
65         uut = ast_endpoint_create("TEST", "test_res");
66         ast_test_validate(test, NULL != uut);
67
68         ast_test_validate(test,
69                 0 == strcmp("TEST", ast_endpoint_get_tech(uut)));
70         ast_test_validate(test,
71                 0 == strcmp("test_res", ast_endpoint_get_resource(uut)));
72
73         return AST_TEST_PASS;
74 }
75
76
77 AST_TEST_DEFINE(defaults)
78 {
79         RAII_VAR(struct ast_endpoint *, uut, NULL, ast_endpoint_shutdown);
80         RAII_VAR(struct ast_endpoint_snapshot *, snapshot, NULL, ao2_cleanup);
81
82         switch (cmd) {
83         case TEST_INIT:
84                 info->name = __func__;
85                 info->category = test_category;
86                 info->summary = "Test defaults for new endpoints";
87                 info->description = "Test defaults for new endpoints";
88                 return AST_TEST_NOT_RUN;
89         case TEST_EXECUTE:
90                 break;
91         }
92
93         uut = ast_endpoint_create("TEST", "test_res");
94         ast_test_validate(test, NULL != uut);
95         snapshot = ast_endpoint_snapshot_create(uut);
96         ast_test_validate(test, NULL != snapshot);
97
98         ast_test_validate(test, 0 == strcmp("TEST/test_res", snapshot->id));
99         ast_test_validate(test, 0 == strcmp("TEST", snapshot->tech));
100         ast_test_validate(test, 0 == strcmp("test_res", snapshot->resource));
101         ast_test_validate(test, AST_ENDPOINT_UNKNOWN == snapshot->state);
102         ast_test_validate(test, -1 == snapshot->max_channels);
103         ast_test_validate(test, 0 == snapshot->num_channels);
104
105         return AST_TEST_PASS;
106 }
107
108 AST_TEST_DEFINE(setters)
109 {
110         RAII_VAR(struct ast_endpoint *, uut, NULL, ast_endpoint_shutdown);
111         RAII_VAR(struct ast_endpoint_snapshot *, snapshot, NULL, ao2_cleanup);
112
113         switch (cmd) {
114         case TEST_INIT:
115                 info->name = __func__;
116                 info->category = test_category;
117                 info->summary = "Test endpoint setters";
118                 info->description = "Test endpoint setters";
119                 return AST_TEST_NOT_RUN;
120         case TEST_EXECUTE:
121                 break;
122         }
123
124         uut = ast_endpoint_create("TEST", "test_res");
125         ast_test_validate(test, NULL != uut);
126
127         ast_endpoint_set_state(uut, AST_ENDPOINT_ONLINE);
128         ast_endpoint_set_max_channels(uut, 314159);
129
130         snapshot = ast_endpoint_snapshot_create(uut);
131         ast_test_validate(test, NULL != snapshot);
132
133         ast_test_validate(test, AST_ENDPOINT_ONLINE == snapshot->state);
134         ast_test_validate(test, 314159 == snapshot->max_channels);
135
136         return AST_TEST_PASS;
137 }
138
139 static int unload_module(void)
140 {
141         AST_TEST_UNREGISTER(create);
142         AST_TEST_UNREGISTER(defaults);
143         AST_TEST_UNREGISTER(setters);
144         return 0;
145 }
146
147 static int load_module(void)
148 {
149         AST_TEST_REGISTER(create);
150         AST_TEST_REGISTER(defaults);
151         AST_TEST_REGISTER(setters);
152         return AST_MODULE_LOAD_SUCCESS;
153 }
154
155 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Endpoint testing",
156         .load = load_module,
157         .unload = unload_module,
158 );