From 679fa5fb3445870ad29953c606ab5e26f44e4e22 Mon Sep 17 00:00:00 2001
From: Corey Farrell <git@cfware.com>
Date: Thu, 18 Jan 2018 10:01:26 -0500
Subject: [PATCH] Add missing OPTIONAL_API and ARI dependences.

I've audited all modules that include any header which includes
asterisk/optional_api.h.  All modules which use OPTIONAL_API now declare
those dependencies in AST_MODULE_INFO using requires or optional_modules
as appropriate.

In addition ARI dependency declarations have been reworked.  Instead of
declaring additional required modules in res/ari/resource_*.c we now add
them to an optional array "requiresModules" in api-docs for each module.
This allows the AST_MODULE_INFO dependencies to include those missing
modules.

Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606
---
 apps/app_mixmonitor.c                          | 7 ++++++-
 apps/app_statsd.c                              | 7 ++++++-
 bridges/bridge_builtin_features.c              | 7 ++++++-
 res/ari/resource_bridges.c                     | 2 --
 res/ari/resource_channels.c                    | 4 ----
 res/ari/resource_device_states.c               | 1 -
 res/ari/resource_events.c                      | 1 -
 res/ari/resource_mailboxes.c                   | 1 -
 res/ari/resource_playbacks.c                   | 1 -
 res/ari/resource_recordings.c                  | 1 -
 res/res_ari_bridges.c                          | 4 +++-
 res/res_ari_channels.c                         | 6 +++++-
 res/res_ari_device_states.c                    | 3 ++-
 res/res_ari_events.c                           | 3 ++-
 res/res_ari_mailboxes.c                        | 3 ++-
 res/res_ari_playbacks.c                        | 3 ++-
 res/res_ari_recordings.c                       | 3 ++-
 res/res_monitor.c                              | 1 +
 res/res_pjsip.c                                | 1 +
 res/res_pjsip/config_transport.c               | 1 +
 res/res_pjsip_outbound_registration.c          | 1 +
 res/res_statsd.c                               | 6 +++---
 rest-api-templates/res_ari_resource.c.mustache | 5 ++++-
 rest-api-templates/swagger_model.py            | 1 +
 rest-api/api-docs/bridges.json                 | 4 ++++
 rest-api/api-docs/channels.json                | 6 ++++++
 rest-api/api-docs/deviceStates.json            | 3 +++
 rest-api/api-docs/events.json                  | 3 +++
 rest-api/api-docs/mailboxes.json               | 3 +++
 rest-api/api-docs/playbacks.json               | 3 +++
 rest-api/api-docs/recordings.json              | 3 +++
 tests/test_utils.c                             | 7 ++++++-
 tests/test_websocket_client.c                  | 7 ++++++-
 33 files changed, 85 insertions(+), 27 deletions(-)

diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index bb47cfc340..af29492090 100644
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -1556,4 +1556,9 @@ static int load_module(void)
 	return res;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Mixed Audio Monitoring Application");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Mixed Audio Monitoring Application",
+	.support_level = AST_MODULE_SUPPORT_CORE,
+	.load = load_module,
+	.unload = unload_module,
+	.optional_modules = "func_periodic_hook",
+);
diff --git a/apps/app_statsd.c b/apps/app_statsd.c
index 54f9511a8b..a4ca233ea2 100644
--- a/apps/app_statsd.c
+++ b/apps/app_statsd.c
@@ -420,4 +420,9 @@ static int load_module(void)
 	return ast_register_application_xml(app, statsd_exec);
 }
 
-AST_MODULE_INFO_STANDARD_EXTENDED(ASTERISK_GPL_KEY, "StatsD Dialplan Application");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "StatsD Dialplan Application",
+	.support_level = AST_MODULE_SUPPORT_EXTENDED,
+	.load = load_module,
+	.unload = unload_module,
+	.requires = "res_statsd",
+);
diff --git a/bridges/bridge_builtin_features.c b/bridges/bridge_builtin_features.c
index e6cacbf7ea..e9efb916cc 100644
--- a/bridges/bridge_builtin_features.c
+++ b/bridges/bridge_builtin_features.c
@@ -519,4 +519,9 @@ static int load_module(void)
 	return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Built in bridging features");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Built in bridging features",
+	.support_level = AST_MODULE_SUPPORT_CORE,
+	.load = load_module,
+	.unload = unload_module,
+	.optional_modules = "res_monitor",
+);
diff --git a/res/ari/resource_bridges.c b/res/ari/resource_bridges.c
index a320c29872..9808288e9c 100644
--- a/res/ari/resource_bridges.c
+++ b/res/ari/resource_bridges.c
@@ -24,8 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_recording</depend>
-	<depend type="module">res_stasis_playback</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c
index 6b4f26c25a..cdf0f88207 100644
--- a/res/ari/resource_channels.c
+++ b/res/ari/resource_channels.c
@@ -24,10 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_answer</depend>
-	<depend type="module">res_stasis_playback</depend>
-	<depend type="module">res_stasis_recording</depend>
-	<depend type="module">res_stasis_snoop</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_device_states.c b/res/ari/resource_device_states.c
index 020d9301f2..c442fa51b3 100644
--- a/res/ari/resource_device_states.c
+++ b/res/ari/resource_device_states.c
@@ -24,7 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_device_state</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_events.c b/res/ari/resource_events.c
index d81067f151..5a8e898585 100644
--- a/res/ari/resource_events.c
+++ b/res/ari/resource_events.c
@@ -24,7 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_http_websocket</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_mailboxes.c b/res/ari/resource_mailboxes.c
index 3577e65153..ae0f249784 100644
--- a/res/ari/resource_mailboxes.c
+++ b/res/ari/resource_mailboxes.c
@@ -24,7 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_mailbox</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_playbacks.c b/res/ari/resource_playbacks.c
index 57f424c016..fc05a8d03a 100644
--- a/res/ari/resource_playbacks.c
+++ b/res/ari/resource_playbacks.c
@@ -24,7 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_playback</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/ari/resource_recordings.c b/res/ari/resource_recordings.c
index 39ef65ce34..090f263700 100644
--- a/res/ari/resource_recordings.c
+++ b/res/ari/resource_recordings.c
@@ -24,7 +24,6 @@
  */
 
 /*** MODULEINFO
-	<depend type="module">res_stasis_recording</depend>
 	<support_level>core</support_level>
  ***/
 
diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c
index 34b9d898cc..93cf7c49bf 100644
--- a/res/res_ari_bridges.c
+++ b/res/res_ari_bridges.c
@@ -35,6 +35,8 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_recording</depend>
+	<depend type="module">res_stasis_playback</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -1579,5 +1581,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Bri
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording,res_stasis_playback",
 );
diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c
index 7862c10069..7ca7e2e4d3 100644
--- a/res/res_ari_channels.c
+++ b/res/res_ari_channels.c
@@ -35,6 +35,10 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_answer</depend>
+	<depend type="module">res_stasis_playback</depend>
+	<depend type="module">res_stasis_recording</depend>
+	<depend type="module">res_stasis_snoop</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -2869,5 +2873,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Cha
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_answer,res_stasis_playback,res_stasis_recording,res_stasis_snoop",
 );
diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c
index ec8890b1e9..04479e6ace 100644
--- a/res/res_ari_device_states.c
+++ b/res/res_ari_device_states.c
@@ -35,6 +35,7 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_device_state</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -349,5 +350,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Dev
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_device_state",
 );
diff --git a/res/res_ari_events.c b/res/res_ari_events.c
index f750a5454d..06eb77a380 100644
--- a/res/res_ari_events.c
+++ b/res/res_ari_events.c
@@ -35,6 +35,7 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_http_websocket</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -473,5 +474,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Web
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_http_websocket",
 );
diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c
index 6469f936ee..123664e46e 100644
--- a/res/res_ari_mailboxes.c
+++ b/res/res_ari_mailboxes.c
@@ -35,6 +35,7 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_mailbox</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -355,5 +356,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Mai
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_mailbox",
 );
diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c
index 0148a74009..547b39e391 100644
--- a/res/res_ari_playbacks.c
+++ b/res/res_ari_playbacks.c
@@ -35,6 +35,7 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_playback</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -307,5 +308,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Pla
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_playback",
 );
diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c
index 531ff6574d..45c789c2d4 100644
--- a/res/res_ari_recordings.c
+++ b/res/res_ari_recordings.c
@@ -35,6 +35,7 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+	<depend type="module">res_stasis_recording</depend>
 	<support_level>core</support_level>
  ***/
 
@@ -891,5 +892,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - Rec
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis,res_stasis_recording",
 );
diff --git a/res/res_monitor.c b/res/res_monitor.c
index 9dcbdbe62f..e2b5fb2521 100644
--- a/res/res_monitor.c
+++ b/res/res_monitor.c
@@ -1013,4 +1013,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.load = load_module,
 	.unload = unload_module,
 	.load_pri = AST_MODPRI_CHANNEL_DEPEND,
+	.optional_modules = "func_periodic_hook",
 );
diff --git a/res/res_pjsip.c b/res/res_pjsip.c
index ff262c9dc5..6a6ba0f75f 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -5139,4 +5139,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CHANNEL_DEPEND - 5,
 	.requires = "res_pjproject",
+	.optional_modules = "res_statsd",
 );
diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c
index 63bf11812f..713ab024be 100644
--- a/res/res_pjsip/config_transport.c
+++ b/res/res_pjsip/config_transport.c
@@ -30,6 +30,7 @@
 #include "asterisk/acl.h"
 #include "asterisk/utils.h"
 #include "include/res_pjsip_private.h"
+/* We're only using a #define from http_websocket.h, no OPTIONAL_API symbols are used. */
 #include "asterisk/http_websocket.h"
 
 #define MAX_POINTER_STRING 33
diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c
index 79bea482bd..80b885fb43 100644
--- a/res/res_pjsip_outbound_registration.c
+++ b/res/res_pjsip_outbound_registration.c
@@ -2290,4 +2290,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Outbound Regist
 	.unload = unload_module,
 	.load_pri = AST_MODPRI_APP_DEPEND,
 	.requires = "res_pjsip",
+	.optional_modules = "res_statsd",
 );
diff --git a/res/res_statsd.c b/res/res_statsd.c
index 221b359c9e..8565e41cb4 100644
--- a/res/res_statsd.c
+++ b/res/res_statsd.c
@@ -381,13 +381,13 @@ static int reload_module(void)
 	}
 }
 
-/* The priority of this module is set to be as low as possible, since it could
- * be used by any other sort of module.
+/* The priority of this module is set just after realtime, since it loads
+ * configuration and could be used by any other sort of module.
  */
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Statsd client support",
 	.support_level = AST_MODULE_SUPPORT_EXTENDED,
 	.load = load_module,
 	.unload = unload_module,
 	.reload = reload_module,
-	.load_pri = 0,
+	.load_pri = AST_MODPRI_REALTIME_DRIVER + 5,
 );
diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache
index c1f680f21d..c697345390 100644
--- a/rest-api-templates/res_ari_resource.c.mustache
+++ b/rest-api-templates/res_ari_resource.c.mustache
@@ -40,6 +40,9 @@
 	<depend type="module">res_ari</depend>
 	<depend type="module">res_ari_model</depend>
 	<depend type="module">res_stasis</depend>
+{{#requires_modules}}
+	<depend type="module">{{.}}</depend>
+{{/requires_modules}}
 	<support_level>core</support_level>
  ***/
 
@@ -324,6 +327,6 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "RESTful API module - {{{
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
-	.requires = "res_ari,res_ari_model,res_stasis",
+	.requires = "res_ari,res_ari_model,res_stasis{{#requires_modules}},{{.}}{{/requires_modules}}",
 );
 {{/api_declaration}}
diff --git a/rest-api-templates/swagger_model.py b/rest-api-templates/swagger_model.py
index 08852415c0..3f729d8b52 100644
--- a/rest-api-templates/swagger_model.py
+++ b/rest-api-templates/swagger_model.py
@@ -647,6 +647,7 @@ class ApiDeclaration(Stringify):
         self.api_version = api_decl_json.get('apiVersion')
         self.base_path = api_decl_json.get('basePath')
         self.resource_path = api_decl_json.get('resourcePath')
+        self.requires_modules = api_decl_json.get('requiresModules') or []
         api_json = api_decl_json.get('apis') or []
         self.apis = [
             Api().load(j, processor, context) for j in api_json]
diff --git a/rest-api/api-docs/bridges.json b/rest-api/api-docs/bridges.json
index cf8ee3156b..04416c1236 100644
--- a/rest-api/api-docs/bridges.json
+++ b/rest-api/api-docs/bridges.json
@@ -6,6 +6,10 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/bridges.{format}",
+	"requiresModules": [
+		"res_stasis_recording",
+		"res_stasis_playback"
+	],
 	"apis": [
 		{
 			"path": "/bridges",
diff --git a/rest-api/api-docs/channels.json b/rest-api/api-docs/channels.json
index 602606cfe7..ec8bae235d 100644
--- a/rest-api/api-docs/channels.json
+++ b/rest-api/api-docs/channels.json
@@ -6,6 +6,12 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/channels.{format}",
+	"requiresModules": [
+		"res_stasis_answer",
+		"res_stasis_playback",
+		"res_stasis_recording",
+		"res_stasis_snoop"
+	],
 	"apis": [
 		{
 			"path": "/channels",
diff --git a/rest-api/api-docs/deviceStates.json b/rest-api/api-docs/deviceStates.json
index 94d5b93ce0..bd389355c4 100644
--- a/rest-api/api-docs/deviceStates.json
+++ b/rest-api/api-docs/deviceStates.json
@@ -6,6 +6,9 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/deviceStates.{format}",
+	"requiresModules": [
+		"res_stasis_device_state"
+	],
 	"apis": [
 		{
 			"path": "/deviceStates",
diff --git a/rest-api/api-docs/events.json b/rest-api/api-docs/events.json
index e1b31bb976..d85d8d9fe4 100644
--- a/rest-api/api-docs/events.json
+++ b/rest-api/api-docs/events.json
@@ -6,6 +6,9 @@
 	"swaggerVersion": "1.2",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/events.{format}",
+	"requiresModules": [
+		"res_http_websocket"
+	],
 	"apis": [
 		{
 			"path": "/events",
diff --git a/rest-api/api-docs/mailboxes.json b/rest-api/api-docs/mailboxes.json
index ed50019f50..8f5941b817 100644
--- a/rest-api/api-docs/mailboxes.json
+++ b/rest-api/api-docs/mailboxes.json
@@ -6,6 +6,9 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/mailboxes.{format}",
+	"requiresModules": [
+		"res_stasis_mailbox"
+	],
 	"apis": [
 		{
 			"path": "/mailboxes",
diff --git a/rest-api/api-docs/playbacks.json b/rest-api/api-docs/playbacks.json
index 3dc4e1da5a..a78dcae710 100644
--- a/rest-api/api-docs/playbacks.json
+++ b/rest-api/api-docs/playbacks.json
@@ -6,6 +6,9 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/playbacks.{format}",
+	"requiresModules": [
+		"res_stasis_playback"
+	],
 	"apis": [
 		{
 			"path": "/playbacks/{playbackId}",
diff --git a/rest-api/api-docs/recordings.json b/rest-api/api-docs/recordings.json
index d0b9630da2..6ffd6d8e9c 100644
--- a/rest-api/api-docs/recordings.json
+++ b/rest-api/api-docs/recordings.json
@@ -6,6 +6,9 @@
 	"swaggerVersion": "1.1",
 	"basePath": "http://localhost:8088/ari",
 	"resourcePath": "/api-docs/recordings.{format}",
+	"requiresModules": [
+		"res_stasis_recording"
+	],
 	"apis": [
 		{
 			"path": "/recordings/stored",
diff --git a/tests/test_utils.c b/tests/test_utils.c
index 68a285727b..bcb2df3758 100644
--- a/tests/test_utils.c
+++ b/tests/test_utils.c
@@ -646,4 +646,9 @@ static int load_module(void)
 	return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Utils test module");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Utils test module",
+	.support_level = AST_MODULE_SUPPORT_CORE,
+	.load = load_module,
+	.unload = unload_module,
+	.requires = "res_agi,res_crypto",
+);
diff --git a/tests/test_websocket_client.c b/tests/test_websocket_client.c
index 6743b53693..e33f3f930d 100644
--- a/tests/test_websocket_client.c
+++ b/tests/test_websocket_client.c
@@ -156,4 +156,9 @@ static int unload_module(void)
 	return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Websocket client test module");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Websocket client test module",
+	.support_level = AST_MODULE_SUPPORT_CORE,
+	.load = load_module,
+	.unload = unload_module,
+	.requires = "res_http_websocket",
+);
-- 
GitLab