@@ -35,22 +35,57 @@ init_per_suite(Config) ->
3535 LDIFFile = filename :join ([DataDir , " ejabberd.ldif" ]),
3636 {ok , _ } = file :copy (ExtAuthScript , filename :join ([CWD , " extauth.py" ])),
3737 {ok , _ } = ldap_srv :start (LDIFFile ),
38- ok = application : start ( ejabberd ),
38+ start_ejabberd ( NewConfig ),
3939 NewConfig .
4040
41+ start_ejabberd (Config ) ->
42+ case proplists :get_value (backends , Config ) of
43+ all ->
44+ ok = application :start (ejabberd , transient );
45+ Backends when is_list (Backends ) ->
46+ Hosts = lists :map (fun (Backend ) -> Backend ++ " .localhost" end , Backends ),
47+ application :load (ejabberd ),
48+ AllHosts = Hosts ++ [" localhost" ], % % We always need localhost for the generic no_db tests
49+ application :set_env (ejabberd , hosts , AllHosts ),
50+ ok = application :start (ejabberd , transient )
51+ end .
52+
4153end_per_suite (_Config ) ->
42- ok .
54+ application : stop ( ejabberd ) .
4355
44- init_per_group (no_db , Config ) ->
56+ -define (BACKENDS , [mnesia ,redis ,mysql ,pgsql ,sqlite ,ldap ,extauth ,riak ]).
57+
58+ init_per_group (Group , Config ) ->
59+ case lists :member (Group , ? BACKENDS ) of
60+ false ->
61+ % % Not a backend related group, do default init:
62+ do_init_per_group (Group , Config );
63+ true ->
64+ case proplists :get_value (backends , Config ) of
65+ all ->
66+ % % All backends enabled
67+ do_init_per_group (Group , Config );
68+ Backends ->
69+ % % Skipped backends that were not explicitely enabled
70+ case lists :member (atom_to_list (Group ), Backends ) of
71+ true ->
72+ do_init_per_group (Group , Config );
73+ false ->
74+ {skip , {disabled_backend , Group }}
75+ end
76+ end
77+ end .
78+
79+ do_init_per_group (no_db , Config ) ->
4580 re_register (Config ),
4681 Config ;
47- init_per_group (mnesia , Config ) ->
82+ do_init_per_group (mnesia , Config ) ->
4883 mod_muc :shutdown_rooms (? MNESIA_VHOST ),
4984 set_opt (server , ? MNESIA_VHOST , Config );
50- init_per_group (redis , Config ) ->
85+ do_init_per_group (redis , Config ) ->
5186 mod_muc :shutdown_rooms (? REDIS_VHOST ),
5287 set_opt (server , ? REDIS_VHOST , Config );
53- init_per_group (mysql , Config ) ->
88+ do_init_per_group (mysql , Config ) ->
5489 case catch ejabberd_odbc :sql_query (? MYSQL_VHOST , [<<" select 1;" >>]) of
5590 {selected , _ , _ } ->
5691 mod_muc :shutdown_rooms (? MYSQL_VHOST ),
@@ -59,7 +94,7 @@ init_per_group(mysql, Config) ->
5994 Err ->
6095 {skip , {mysql_not_available , Err }}
6196 end ;
62- init_per_group (pgsql , Config ) ->
97+ do_init_per_group (pgsql , Config ) ->
6398 case catch ejabberd_odbc :sql_query (? PGSQL_VHOST , [<<" select 1;" >>]) of
6499 {selected , _ , _ } ->
65100 mod_muc :shutdown_rooms (? PGSQL_VHOST ),
@@ -68,19 +103,19 @@ init_per_group(pgsql, Config) ->
68103 Err ->
69104 {skip , {pgsql_not_available , Err }}
70105 end ;
71- init_per_group (sqlite , Config ) ->
106+ do_init_per_group (sqlite , Config ) ->
72107 case catch ejabberd_odbc :sql_query (? SQLITE_VHOST , [<<" select 1;" >>]) of
73108 {selected , _ , _ } ->
74109 mod_muc :shutdown_rooms (? SQLITE_VHOST ),
75110 set_opt (server , ? SQLITE_VHOST , Config );
76111 Err ->
77112 {skip , {sqlite_not_available , Err }}
78113 end ;
79- init_per_group (ldap , Config ) ->
114+ do_init_per_group (ldap , Config ) ->
80115 set_opt (server , ? LDAP_VHOST , Config );
81- init_per_group (extauth , Config ) ->
116+ do_init_per_group (extauth , Config ) ->
82117 set_opt (server , ? EXTAUTH_VHOST , Config );
83- init_per_group (riak , Config ) ->
118+ do_init_per_group (riak , Config ) ->
84119 case ejabberd_riak :is_connected () of
85120 true ->
86121 mod_muc :shutdown_rooms (? RIAK_VHOST ),
@@ -89,7 +124,7 @@ init_per_group(riak, Config) ->
89124 Err ->
90125 {skip , {riak_not_available , Err }}
91126 end ;
92- init_per_group (_GroupName , Config ) ->
127+ do_init_per_group (_GroupName , Config ) ->
93128 Pid = start_event_relay (),
94129 set_opt (event_relay , Pid , Config ).
95130
@@ -967,9 +1002,9 @@ mix_master(Config) ->
9671002 retract = [ParticipantID ]}]}]}),
9681003 disconnect (Config ).
9691004
970- mix_slave (Config ) ->
1005+ mix_slave (Config ) ->
9711006 disconnect (Config ).
972-
1007+
9731008roster_subscribe_master (Config ) ->
9741009 send (Config , # presence {}),
9751010 ? recv1 (# presence {}),
0 commit comments