While Mix is not the main build tool, we remove the commited
`mix.lock` file to reduce friction when updating dependencies, since
it requires remembering to run `mix deps.get` to update the
`mix.lock`, used by a CI check in
`scripts/check-elixir-deps-discrepancies.exs`. We change said script
to produce the required file on the fly.
We are interested in using stale actions only for issues, and
currently there's no clear/clean way of making it not enumerate pull
requests. As a workaround, we attempt to minimize the number of
operations spent on pull requests by making it run only on pull
requests which have an inexistent tag, thus skipping all PRs.
ci: enable stale GH action in place of stalebot
Since stalebot appears to have been unreliable
recently (https://github.com/probot/stale/issues/349), we can try to
use GH Actions to manage the stale issues.
Surprisingly enough, by doing small cirurgical changes in the existing
EMQX control scripts, we are able to get it running with Elixir and
with existing functionalities (`console`, `remote_console`, `start`,
`stop`, `ctl`, `foreground`, `eval`).
This commit enables a minimal working build of EMQX release using
Mix. However, to properly start the release, several configuration
steps are still missing. A `mix_release.sh` script does a few hacks
to get the release built with Mix to start properly, by first assuming
that `make emqx` has been run prior to the release, ran once to
generate the `app.*.config` files, and then it copies that and some
other files to the expected places.
Also, `emqx_telemetry` hangs the start procedure because it thinks
it's in an official release and tries to make a request. We disable
it temporarily via config just to get a working build for now.
The RLOG DB backend tests in FVT were temporarily disabled due to some
paho tests being specially flaky in CI.
In particular, those tests had the common pattern of subscribing to a
topic, immediately publishing to that topic and then waiting for the
response. When in CI and using RLOG, there seems to be more delays in
replication of data, and often this pattern would fail in the
constraint testing enviroment.
* fix(dashboard_api): delete non-exist user wrongly return 204
* fix(dashboard): dashboard user should use `tags` not `tag`
* fix(dashboard): create/update user return 200 with full users list
* fix(dashboard): logout status code 204
* fix(dashboard): update pwd status code 204
* test: test suite for dashboard APIs
* refactor(dashboard): user info mnesia record name use description
* style: make elvis happy
* fix(api): dashboard swagger check request should not override env
* fix(dashboard): add/modify dashboard returns single record
* ci: update emqx-fvt version to new tag 1.0.2-dev1
A few FVT tests are very flaky when run in rlog core+replicant cluster
configuration (for instance `V5/test_publish.py::test_topic`). We are
disabling this test configuration temporarily while we investigate
further and mitigate it.
there seems to be race conditions related to some tests with sessions
hitting the core and the replicant alternately and rlog.
for intance, if there is some delay in this replication, a new
connection made to the replica with a just-created session in the core
may not have been replicated to the replicant, resulting in a test
failure if it expects the session to be present.
since such replication lags are inherent to the core-replicant
topology, we can try to target only the replicant to avoid seeing this
inconsistent view of the system during the tests.
This parameterizes the Functional Verification Tests (FVTs) that run
in CI to use a replication log (RLOG) role of "replicant" for one of
the nodes. With this addition, our FVTs may explore more scenarios
with data replication.