0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Make examples_SUITE runs nearly twice faster

This commit is contained in:
Loïc Hoguin 2018-05-17 11:27:52 +02:00
parent 0e629f4799
commit aca57c2e33
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764

View file

@ -25,12 +25,20 @@
all() ->
ct_helper:all(?MODULE).
%% Remove environment variables inherited from Erlang.mk.
init_per_suite(Config) ->
%% Remove environment variables inherited from Erlang.mk.
os:unsetenv("ERLANG_MK_TMP"),
os:unsetenv("APPS_DIR"),
os:unsetenv("DEPS_DIR"),
os:unsetenv("ERL_LIBS"),
%% Clone and build Cowboy, Cowlib and Ranch only once and
%% reuse the same build across all tests.
Make = do_find_make_cmd(),
CommonDir = config(priv_dir, Config),
ct:log("~s~n", [os:cmd("git clone --depth 1 https://github.com/ninenines/cowboy "
++ CommonDir ++ "cowboy")]),
ct:log("~s~n", [os:cmd(Make ++ " -C " ++ CommonDir ++ "cowboy distclean")]),
ct:log("~s~n", [os:cmd(Make ++ " -C " ++ CommonDir ++ "cowboy DEPS_DIR=" ++ CommonDir)]),
Config.
end_per_suite(_) ->
@ -59,11 +67,18 @@ do_get_paths(Example0) ->
Log = Dir ++ "/_rel/" ++ Example ++ "_example/log/erlang.log.1",
{Dir, Rel, Log}.
do_compile_and_start(Example) ->
do_compile_and_start(Example, Config) ->
Make = do_find_make_cmd(),
{Dir, Rel, _} = do_get_paths(Example),
ct:log("~s~n", [os:cmd(Make ++ " -C " ++ Dir ++ " distclean")]),
%% We use a common build for Cowboy, Cowlib and Ranch to speed things up.
CommonDir = config(priv_dir, Config),
ct:log("~s~n", [os:cmd("mkdir " ++ Dir ++ "/deps")]),
ct:log("~s~n", [os:cmd("ln -s " ++ CommonDir ++ "cowboy " ++ Dir ++ "/deps/cowboy")]),
ct:log("~s~n", [os:cmd("ln -s " ++ CommonDir ++ "cowlib " ++ Dir ++ "/deps/cowlib")]),
ct:log("~s~n", [os:cmd("ln -s " ++ CommonDir ++ "ranch " ++ Dir ++ "/deps/ranch")]),
%% TERM=dumb disables relx coloring.
ct:log("~s~n", [os:cmd("cd " ++ Dir ++ " && " ++ Make ++ " distclean && " ++ Make ++ " all TERM=dumb")]),
ct:log("~s~n", [os:cmd(Make ++ " -C " ++ Dir ++ " TERM=dumb")]),
ct:log("~s~n", [os:cmd(Rel ++ " stop")]),
ct:log("~s~n", [os:cmd(Rel ++ " start")]),
timer:sleep(2000),
@ -100,7 +115,7 @@ do_get(Transport, Protocol, Path, ReqHeaders, Config) ->
hello_world(Config) ->
doc("Hello World example."),
try
do_compile_and_start(hello_world),
do_compile_and_start(hello_world, Config),
do_hello_world(tcp, http, Config),
do_hello_world(tcp, http2, Config)
after
@ -110,7 +125,7 @@ hello_world(Config) ->
ssl_hello_world(Config) ->
doc("SSL Hello World example."),
try
do_compile_and_start(ssl_hello_world),
do_compile_and_start(ssl_hello_world, Config),
do_hello_world(ssl, http, Config),
do_hello_world(ssl, http2, Config)
after
@ -126,7 +141,7 @@ do_hello_world(Transport, Protocol, Config) ->
chunked_hello_world(Config) ->
doc("Chunked Hello World example."),
try
do_compile_and_start(chunked_hello_world),
do_compile_and_start(chunked_hello_world, Config),
do_chunked_hello_world(tcp, http, Config),
do_chunked_hello_world(tcp, http2, Config)
after
@ -155,7 +170,7 @@ do_chunked_hello_world(Transport, Protocol, Config) ->
compress_response(Config) ->
doc("Compressed response example."),
try
do_compile_and_start(compress_response),
do_compile_and_start(compress_response, Config),
do_compress_response(tcp, http, Config),
do_compress_response(tcp, http2, Config)
after
@ -174,7 +189,7 @@ do_compress_response(Transport, Protocol, Config) ->
cookie(Config) ->
doc("Cookie example."),
try
do_compile_and_start(cookie),
do_compile_and_start(cookie, Config),
do_cookie(tcp, http, Config),
do_cookie(tcp, http2, Config)
after
@ -192,7 +207,7 @@ do_cookie(Transport, Protocol, Config) ->
echo_get(Config) ->
doc("GET parameter echo example."),
try
do_compile_and_start(echo_get),
do_compile_and_start(echo_get, Config),
do_echo_get(tcp, http, Config),
do_echo_get(tcp, http2, Config)
after
@ -209,7 +224,7 @@ do_echo_get(Transport, Protocol, Config) ->
echo_post(Config) ->
doc("POST parameter echo example."),
try
do_compile_and_start(echo_post),
do_compile_and_start(echo_post, Config),
do_echo_post(tcp, http, Config),
do_echo_post(tcp, http2, Config)
after
@ -230,7 +245,7 @@ do_echo_post(Transport, Protocol, Config) ->
eventsource(Config) ->
doc("Eventsource example."),
try
do_compile_and_start(eventsource),
do_compile_and_start(eventsource, Config),
do_eventsource(tcp, http, Config),
do_eventsource(tcp, http2, Config)
after
@ -253,7 +268,7 @@ do_eventsource(Transport, Protocol, Config) ->
rest_hello_world(Config) ->
doc("REST Hello World example."),
try
do_compile_and_start(rest_hello_world),
do_compile_and_start(rest_hello_world, Config),
do_rest_hello_world(tcp, http, Config),
do_rest_hello_world(tcp, http2, Config)
after
@ -300,7 +315,7 @@ do_rest_get(Transport, Protocol, Path, Accept, Auth, Config) ->
rest_basic_auth(Config) ->
doc("REST basic authorization example."),
try
do_compile_and_start(rest_basic_auth),
do_compile_and_start(rest_basic_auth, Config),
do_rest_basic_auth(tcp, http, Config),
do_rest_basic_auth(tcp, http2, Config)
after
@ -317,7 +332,7 @@ do_rest_basic_auth(Transport, Protocol, Config) ->
rest_pastebin(Config) ->
doc("REST pastebin example."),
try
do_compile_and_start(rest_pastebin),
do_compile_and_start(rest_pastebin, Config),
do_rest_pastebin(tcp, http, Config),
do_rest_pastebin(tcp, http2, Config)
after
@ -347,7 +362,7 @@ do_rest_pastebin(Transport, Protocol, Config) ->
file_server(Config) ->
doc("File server example with directory listing."),
try
do_compile_and_start(file_server),
do_compile_and_start(file_server, Config),
do_file_server(tcp, http, Config),
do_file_server(tcp, http2, Config)
after
@ -371,7 +386,7 @@ do_file_server(Transport, Protocol, Config) ->
markdown_middleware(Config) ->
doc("Markdown middleware example."),
try
do_compile_and_start(markdown_middleware),
do_compile_and_start(markdown_middleware, Config),
do_markdown_middleware(tcp, http, Config),
do_markdown_middleware(tcp, http2, Config)
after
@ -388,7 +403,7 @@ do_markdown_middleware(Transport, Protocol, Config) ->
upload(Config) ->
doc("Upload example."),
try
do_compile_and_start(upload),
do_compile_and_start(upload, Config),
do_upload(tcp, http, Config),
do_upload(tcp, http2, Config)
after
@ -413,10 +428,10 @@ do_upload(Transport, Protocol, Config) ->
%% Websocket.
websocket(_) ->
websocket(Config) ->
doc("Websocket example."),
try
do_compile_and_start(websocket),
do_compile_and_start(websocket, Config),
%% We can only initiate a Websocket connection from HTTP/1.1.
{ok, Pid} = gun:open("127.0.0.1", 8080, #{protocols => [http], retry => 0}),
{ok, http} = gun:await_up(Pid),