Makefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. ## shallow clone for speed
  2. REBAR_GIT_CLONE_OPTIONS += --depth 1
  3. export REBAR_GIT_CLONE_OPTIONS
  4. # CT_SUITES = emqx_trie emqx_router emqx_frame emqx_mqtt_compat
  5. CT_SUITES = emqx emqx_client emqx_zone emqx_banned emqx_session \
  6. emqx_broker emqx_cm emqx_frame emqx_guid emqx_inflight emqx_json \
  7. emqx_keepalive emqx_lib emqx_metrics emqx_mod emqx_mod_sup emqx_mqtt_caps \
  8. emqx_mqtt_props emqx_mqueue emqx_net emqx_pqueue emqx_router emqx_sm \
  9. emqx_tables emqx_time emqx_topic emqx_trie emqx_vm emqx_mountpoint \
  10. emqx_listeners emqx_protocol emqx_pool emqx_shared_sub emqx_bridge \
  11. emqx_hooks emqx_batch emqx_sequence emqx_pmon emqx_pd emqx_gc emqx_ws_connection \
  12. emqx_packet emqx_connection emqx_tracer emqx_sys_mon emqx_message emqx_os_mon \
  13. emqx_vm_mon emqx_alarm_handler emqx_rpc emqx_flapping
  14. CT_NODE_NAME = emqxct@127.0.0.1
  15. compile:
  16. @rebar3 compile
  17. clean: distclean
  18. ## Cuttlefish escript is built by default when cuttlefish app (as dependency) was built
  19. CUTTLEFISH_SCRIPT := _build/default/lib/cuttlefish/cuttlefish
  20. .PHONY: cover
  21. cover:
  22. @rebar3 cover
  23. .PHONY: coveralls
  24. coveralls:
  25. @rebar3 coveralls send
  26. .PHONY: xref
  27. xref:
  28. @rebar3 xref
  29. .PHONY: deps
  30. deps:
  31. @rebar3 get-deps
  32. .PHONY: eunit
  33. eunit:
  34. @rebar3 eunit -v
  35. .PHONY: ct-setup
  36. ct-setup:
  37. rebar3 as test compile
  38. @mkdir -p data
  39. @if [ ! -f data/loaded_plugins ]; then touch data/loaded_plugins; fi
  40. @ln -s -f '../../../../etc' _build/test/lib/emqx/
  41. @ln -s -f '../../../../data' _build/test/lib/emqx/
  42. .PHONY: ct
  43. ct: ct-setup
  44. @rebar3 ct -v --readable=false --name $(CT_NODE_NAME) --suite=$(shell echo $(foreach var,$(CT_SUITES),test/$(var)_SUITE) | tr ' ' ',')
  45. ## Run one single CT with rebar3
  46. ## e.g. make ct-one-suite suite=emqx_bridge
  47. .PHONY: ct-one-suite
  48. ct-one-suite: ct-setup
  49. @rebar3 ct -v --readable=false --name $(CT_NODE_NAME) --suite=$(suite)_SUITE
  50. .PHONY: app.config
  51. app.config: $(CUTTLEFISH_SCRIPT) etc/gen.emqx.conf
  52. $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/gen.emqx.conf -i priv/emqx.schema -d data/
  53. $(CUTTLEFISH_SCRIPT):
  54. @rebar3 get-deps
  55. @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi
  56. bbmustache:
  57. @git clone https://github.com/soranoba/bbmustache.git && cd bbmustache && ./rebar3 compile && cd ..
  58. # This hack is to generate a conf file for testing
  59. # relx overlay is used for release
  60. etc/gen.emqx.conf: bbmustache etc/emqx.conf
  61. @erl -noshell -pa bbmustache/_build/default/lib/bbmustache/ebin -eval \
  62. "{ok, Temp} = file:read_file('etc/emqx.conf'), \
  63. {ok, Vars0} = file:consult('vars'), \
  64. Vars = [{atom_to_list(N), list_to_binary(V)} || {N, V} <- Vars0], \
  65. Targ = bbmustache:render(Temp, Vars), \
  66. ok = file:write_file('etc/gen.emqx.conf', Targ), \
  67. halt(0)."
  68. .PHONY: gen-clean
  69. gen-clean:
  70. @rm -rf bbmustache
  71. @rm -f etc/gen.emqx.conf etc/emqx.conf.rendered
  72. .PHONY: distclean
  73. distclean: gen-clean
  74. @rm -rf _build cover deps logs log data
  75. @rm -f rebar.lock compile_commands.json cuttlefish erl_crash.dump