1: -module(test_stream_SUITE). 2: 3: -include_lib("common_test/include/ct.hrl"). 4: -include_lib("kernel/include/logger.hrl"). 5: 6: %% common_test callbacks 7: -export([suite/0, all/0, init_per_suite/1, end_per_suite/1]). 8: 9: %% tests 10: -export([test_stream/1]). 11: 12: -define(TIMEOUT, 1000). 13: -define(BASE_URL, "http://localhost"). 14: -define(HTTPC_PROFILE, ?MODULE). 15: 16: %% 17: %% common_test callbacks 18: %% 19: 20: suite() -> [{timetrap, ?TIMEOUT}]. 21: 22: all() -> [test_stream]. 23: 24: init_per_suite(_Config) -> 25: {ok, _ApplicationPid} = eradio_app:start(), 26: {ok, {local, ListenPath}} = eradio_app:listen_ip(), 27: 28: {ok, _HttpcProfilePid} = inets:start(httpc, [{profile, ?HTTPC_PROFILE}]), 29: ok = httpc:set_options([{ipfamily, local}, {unix_socket, ListenPath}], ?HTTPC_PROFILE), 30: []. 31: 32: end_per_suite(_Config) -> 33: ok = inets:stop(httpc, ?HTTPC_PROFILE), 34: ok = eradio_app:stop(), 35: ok. 36: 37: %% 38: %% tests 39: %% 40: 41: test_stream(_Config) -> 42: Opts = [{sync, false}, {stream, self}], 43: {ok, RequestId} = request(get, {"/stream.mp3?listener_id=1", []}, [], Opts), 44: receive 45: {http, {RequestId, stream_start, _Headers}} -> ok; 46: {http, {RequestId, Result}} -> ct:fail(Result) 47: end. 48: 49: %% 50: %% private 51: %% 52: 53: request(Method, {Path, Headers}, HTTPOpts, Opts) -> 54: httpc:request(Method, {?BASE_URL ++ Path, Headers}, [{timeout, ?TIMEOUT} | HTTPOpts], Opts, ?HTTPC_PROFILE).