This rebar3 version has two fixes comparing to 3.14.3-emqx-5
1. For elixir plugin build, ensure vsn in app info
2. Error details in rebar3 exception if .app is not found
when generating release
Doing release directly works fine for prue Erlang dependencies.
However if we add a elixir dependency, the application
info and release becomes problematic
Elixir apps do not have .app or .app.src files
so the app vsn can not be found during app discovery
which leads to "No valid version ([]) of .app file found"
error when creating the release.
This is maybe fixed in https://github.com/erlang/rebar3/pull/2518
Another issue is "Undefined applications: [elixir,logger]"
This seem to be caused by the rebar3 not being able to identify
as a release dependency if an elixir app was not compiled before.
* chore(Makefile): Delete unnecessary exports for deps-get
* chore(rebar3): upgrade to rebar3 version 3.14.3-emqx-5
This rebar3 version does not copy .git directory.
Before this, if a plugin repo clone is placed in lib-extra,
rebar2 ct or eunit commnad may fail at source code copy step.
- Add dialyzer for code analysis
- Correct all the module type declarations
- Use `-type()` to declaration a type instead of `-opaque`
(It is advantageous to the code dialyzer)
BROKEN CHANGES:
- Add a ?DEFAULT_SUBOPTS for emqx_broker:subscribe/1,2,3
- Remove the needless internal function `emqx_vm:port_info(PortTerm, Keys)`
* Add more test cases for emqx_stats and emqx_os_mon
Fix test case error for emqx_ws_connection
* Add more test cases for emqx_sys_mon
* Update erlang otp to 22.1 for travis ci
* Delete readable=false for make ct
* Add unset_all_env for emqx_zone and update test cases
* Wrapper proper test cases into common test cases
* Improve test cases for reason code module (#2789)
* Split 3 proper tests into 3 ct cases
* Improve test cases for client, rpc and request-response
* Add psk suites to increase coverage
* Add sys test cases
Prior to this change, if user's computer has no `~/.config/rebar3`
path, `make run` would fail and report enoent error.
This change fix the problem I described above.
* Adopt channel architecture and improve the MQTT frame parser
* Update the test cases for emqx_channel, emqx_protocol
- Improve emqx_client to Use the new emqx_frame:parse/2
- Update the ct suites for emqx_channel, emqx_ws_channel
* Fix test case
Fix websocket bug.
Prior to this change, websocket connection would be closed directly
without sending connack packet when acl check fails.
This change fix this bug.
* Pin cuttlefish rebar3 branch
* No shallow clone for rebar3
* Replace timer:sleep with receive after for deterministic
* Build with only rebar3
* bbmustache as a test dependency
* Change to plain deps
* Use shallow clone by default
* Add ct-helpers as test dep
* Improve emqx_hooks and credentials
1. Modify the return modes of emqx hooks.
Change the return value of hook functions to:
- ok: stop the hook chain and return ok
- {error, Reason}: stop the hook chain and return error
- continue: continue the hook chain
And the return value of emqx_hooks:run/2 is changed to:
- ok
- {error, Reason}
And the return value of emqx_hooks:run/3:
- {ok, Acc}
- {error, Reason, Acc}
2. Treat password as a member of credentials.
Password should be wrapped in the `credentials` data-structure, as the
username/password pair together consists of an authentication method.
There can be some methods using some other credential data (e.g.
a JWT token), and these credential data should also be wrapped in the
the `credentials` data-structure.
An event `client.authenticate` is triggered when an user logs in:
```erlang
emqx_hooks:run('client.authenticate', [], Credentials)
```
A `default callback` that deny/allow any user (according to the
`allow_anonymous` config) should be appended to the end of the
callback chain.
The `credentails` is passed through all of the callbacks, and
can be changed over in this process.
* Refactor emqx hooks return mode
* Remove password from PState