Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Build
on: push
jobs:
test:
name: build
runs-on: ubuntu-18.04
strategy:
matrix:
erlang_version:
- "23.2"
timeout-minutes: 10
steps:
- name: CHECKOUT REPOSITORY
uses: actions/checkout@v2
- name: CONFIGURE OTP & ELIXIR
uses: actions/setup-elixir@v1
with:
otp-version: ${{ matrix.erlang_version }}
elixir-version: 1.10.4
- name: CONFIGURE BAZEL
run: |
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
cat << EOF >> .bazelrc
build --@bazel-erlang//:erlang_version=${{ matrix.erlang_version }}
build --@bazel-erlang//:erlang_home=${ERLANG_HOME}
EOF
#! - name: Setup tmate session
#! uses: mxschmitt/action-tmate@v3
- name: BUILD
run: |
bazelisk build :bazel_erlang_lib
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ terraform.tfstate*

/rabbitmq_ct_helpers.d
/.rabbitmq_ct_helpers.plt

/.bazelrc
/bazel-*
10 changes: 10 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib")

erlang_lib(
app_name = "rabbitmq_ct_helpers",
app_version = "master",
deps = [
"@proper//:bazel_erlang_lib",
"@rabbitmq-server//deps/rabbit_common:bazel_erlang_lib",
],
)
17 changes: 17 additions & 0 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
name = "bazel-erlang",
strip_prefix = "bazel-erlang-master",
urls = ["https://github.com/rabbitmq/bazel-erlang/archive/master.zip"],
)

http_archive(
name = "rabbitmq-server",
strip_prefix = "rabbitmq-server-master",
urls = ["https://github.com/rabbitmq/rabbitmq-server/archive/master.zip"],
)

load("@rabbitmq-server//:workspace_helpers.bzl", "rabbitmq_external_deps")

rabbitmq_external_deps()
83 changes: 55 additions & 28 deletions src/rabbit_ct_broker_helpers.erl
Original file line number Diff line number Diff line change
Expand Up @@ -198,15 +198,27 @@
%% -------------------------------------------------------------------

setup_steps() ->
[
fun run_make_dist/1,
fun rabbit_ct_helpers:ensure_rabbitmqctl_cmd/1,
fun rabbit_ct_helpers:ensure_rabbitmqctl_app/1,
fun rabbit_ct_helpers:ensure_rabbitmq_plugins_cmd/1,
fun set_lager_flood_limit/1,
fun start_rabbitmq_nodes/1,
fun share_dist_and_proxy_ports_map/1
].
case os:getenv("RABBITMQ_RUN") of
false ->
[
fun run_make_dist/1,
fun rabbit_ct_helpers:ensure_rabbitmqctl_cmd/1,
fun rabbit_ct_helpers:ensure_rabbitmqctl_app/1,
fun rabbit_ct_helpers:ensure_rabbitmq_plugins_cmd/1,
fun set_lager_flood_limit/1,
fun start_rabbitmq_nodes/1,
fun share_dist_and_proxy_ports_map/1
];
_ ->
[
fun rabbit_ct_helpers:ensure_rabbitmqctl_cmd/1,
fun rabbit_ct_helpers:load_rabbitmqctl_app/1,
fun rabbit_ct_helpers:ensure_rabbitmq_plugins_cmd/1,
fun set_lager_flood_limit/1,
fun start_rabbitmq_nodes/1,
fun share_dist_and_proxy_ports_map/1
]
end.

teardown_steps() ->
[
Expand Down Expand Up @@ -646,13 +658,7 @@ do_start_rabbitmq_node(Config, NodeConfig, I) ->
undefined ->
ExtraArgs0;
ExtraPluginsDir ->
PathSep = case os:type() of
{win32, _} -> ";";
_ -> ":"
end,
RegularPluginsDir = filename:join(SrcDir, "plugins"),
[{"RABBITMQ_PLUGINS_DIR=~s~s~s",
[RegularPluginsDir, PathSep, ExtraPluginsDir]}
[{"EXTRA_PLUGINS_DIR=~s", [ExtraPluginsDir]}
| ExtraArgs0]
end,
StartWithPluginsDisabled = rabbit_ct_helpers:get_config(
Expand Down Expand Up @@ -717,17 +723,33 @@ do_start_rabbitmq_node(Config, NodeConfig, I) ->
{"TEST_TMPDIR=~s", [PrivDir]}
| ExtraArgs],
Cmd = ["start-background-broker" | MakeVars],
case rabbit_ct_helpers:make(Config, SrcDir, Cmd) of
{ok, _} ->
NodeConfig1 = rabbit_ct_helpers:set_config(
NodeConfig,
[{effective_srcdir, SrcDir},
{make_vars_for_node_startup, MakeVars}]),
query_node(Config, NodeConfig1);
_ ->
AbortCmd = ["stop-node" | MakeVars],
_ = rabbit_ct_helpers:make(Config, SrcDir, AbortCmd),
{skip, "Failed to initialize RabbitMQ"}
case rabbit_ct_helpers:get_config(Config, rabbitmq_run_cmd) of
undefined ->
case rabbit_ct_helpers:make(Config, SrcDir, Cmd) of
{ok, _} ->
NodeConfig1 = rabbit_ct_helpers:set_config(
NodeConfig,
[{effective_srcdir, SrcDir},
{make_vars_for_node_startup, MakeVars}]),
query_node(Config, NodeConfig1);
_ ->
AbortCmd = ["stop-node" | MakeVars],
_ = rabbit_ct_helpers:make(Config, SrcDir, AbortCmd),
{skip, "Failed to initialize RabbitMQ"}
end;
RunCmd ->
case rabbit_ct_helpers:exec([RunCmd, "-C", SrcDir] ++ Cmd) of
{ok, _} ->
NodeConfig1 = rabbit_ct_helpers:set_config(
NodeConfig,
[{effective_srcdir, SrcDir},
{make_vars_for_node_startup, MakeVars}]),
query_node(Config, NodeConfig1);
_ ->
AbortCmd = ["stop-node" | MakeVars],
_ = rabbit_ct_helpers:exec([RunCmd | AbortCmd]),
{skip, "Failed to initialize RabbitMQ"}
end
end.

query_node(Config, NodeConfig) ->
Expand Down Expand Up @@ -958,7 +980,12 @@ stop_rabbitmq_node(Config, NodeConfig) ->
{"RABBITMQ_NODENAME_FOR_PATHS=~s", [InitialNodename]}
],
Cmd = ["stop-node" | MakeVars],
rabbit_ct_helpers:make(Config, SrcDir, Cmd),
case rabbit_ct_helpers:get_config(Config, rabbitmq_run_cmd) of
undefined ->
rabbit_ct_helpers:make(Config, SrcDir, Cmd);
RunCmd ->
rabbit_ct_helpers:exec([RunCmd | Cmd])
end,
NodeConfig.

%% -------------------------------------------------------------------
Expand Down
87 changes: 66 additions & 21 deletions src/rabbit_ct_helpers.erl
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
ensure_application_srcdir/4,
ensure_rabbitmqctl_cmd/1,
ensure_rabbitmqctl_app/1,
load_rabbitmqctl_app/1,
ensure_rabbitmq_plugins_cmd/1,
ensure_rabbitmq_queues_cmd/1,
start_long_running_testsuite_monitor/1,
Expand Down Expand Up @@ -67,24 +68,40 @@ run_setup_steps(Config) ->
run_setup_steps(Config, []).

run_setup_steps(Config, ExtraSteps) ->
Steps = [
fun init_skip_as_error_flag/1,
fun guess_tested_erlang_app_name/1,
fun ensure_secondary_umbrella/1,
fun ensure_current_srcdir/1,
fun ensure_rabbitmq_ct_helpers_srcdir/1,
fun ensure_erlang_mk_depsdir/1,
fun ensure_secondary_erlang_mk_depsdir/1,
fun ensure_secondary_current_srcdir/1,
fun ensure_rabbit_common_srcdir/1,
fun ensure_rabbitmq_cli_srcdir/1,
fun ensure_rabbit_srcdir/1,
fun ensure_make_cmd/1,
fun ensure_erl_call_cmd/1,
fun ensure_ssl_certs/1,
fun start_long_running_testsuite_monitor/1,
fun load_elixir/1
],
Steps = case os:getenv("RABBITMQ_RUN") of
false ->
[
fun init_skip_as_error_flag/1,
fun guess_tested_erlang_app_name/1,
fun ensure_secondary_umbrella/1,
fun ensure_current_srcdir/1,
fun ensure_rabbitmq_ct_helpers_srcdir/1,
fun ensure_erlang_mk_depsdir/1,
fun ensure_secondary_erlang_mk_depsdir/1,
fun ensure_secondary_current_srcdir/1,
fun ensure_rabbit_common_srcdir/1,
fun ensure_rabbitmq_cli_srcdir/1,
fun ensure_rabbit_srcdir/1,
fun ensure_make_cmd/1,
fun ensure_erl_call_cmd/1,
fun ensure_ssl_certs/1,
fun start_long_running_testsuite_monitor/1,
fun load_elixir/1
];
_ ->
[
fun init_skip_as_error_flag/1,
% fun guess_tested_erlang_app_name/1,
fun ensure_secondary_umbrella/1,
fun ensure_current_srcdir/1,
fun ensure_rabbitmq_ct_helpers_srcdir/1,
% fun ensure_rabbit_srcdir/1,
fun ensure_make_cmd/1,
fun ensure_rabbitmq_run_cmd/1,
fun ensure_ssl_certs/1,
fun start_long_running_testsuite_monitor/1
]
end,
run_steps(Config, Steps ++ ExtraSteps).

run_teardown_steps(Config) ->
Expand Down Expand Up @@ -117,8 +134,14 @@ run_steps(Config, [Step | Rest]) ->
{skip, _} = Error ->
run_teardown_steps(Config),
Error;
Config1 ->
run_steps(Config1, Rest)
Config1 when is_list(Config1) ->
run_steps(Config1, Rest);
Other ->
ct:pal(?LOW_IMPORTANCE,
"~p:~p/~p failed with ~p steps remaining (Config value ~p is not a proplist)",
[?MODULE, ?FUNCTION_NAME, ?FUNCTION_ARITY, length(Rest), Other]),
run_teardown_steps(Config),
exit("A setup step returned a non-proplist")
end;
run_steps(Config, []) ->
Config.
Expand All @@ -137,7 +160,8 @@ init_skip_as_error_flag(Config) ->
guess_tested_erlang_app_name(Config) ->
case os:getenv("DIALYZER_PLT") of
false ->
ok;
{skip,
"plt file required, please set DIALYZER_PLT"};
Filename ->
AppName0 = filename:basename(Filename, ".plt"),
AppName = string:strip(AppName0, left, $.),
Expand Down Expand Up @@ -328,6 +352,16 @@ ensure_make_cmd(Config) ->
"please set MAKE or 'make_cmd' in ct config"}
end.

ensure_rabbitmq_run_cmd(Config) ->
case os:getenv("RABBITMQ_RUN") of
false ->
{skip,
"Bazel helper rabbitmq-run required, " ++
"please set RABBITMQ_RUN"};
P ->
set_config(Config, {rabbitmq_run_cmd, P})
end.

ensure_erl_call_cmd(Config) ->
ErlCallDir = code:lib_dir(erl_interface, bin),
ErlCall = filename:join(ErlCallDir, "erl_call"),
Expand Down Expand Up @@ -419,6 +453,17 @@ ensure_rabbitmqctl_app(Config) ->
"please build rabbitmq_cli and set MIX_ENV"}
end.

load_rabbitmqctl_app(Config) ->
case application:load(rabbitmqctl) of
ok ->
Config;
{error, {already_loaded, rabbitmqctl}} ->
Config;
{error, _} ->
{skip, "Application rabbitmqctl could not be loaded, " ++
"please place compiled rabbitmq_cli on the code path"}
end.

ensure_rabbitmq_plugins_cmd(Config) ->
Rabbitmqplugins = case get_config(Config, rabbitmq_plugins_cmd) of
undefined ->
Expand Down
4 changes: 4 additions & 0 deletions tools/tls-certs/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
exports_files([
"Makefile",
"openssl.cnf.in",
])