Commit Graph

368 Commits

Author SHA1 Message Date
YoukiLin 6b538d2363 Add test cases for 'emqx_cm' and 'emqx_sm' (#2073)
Add test cases for 'emqx_cm' and 'emqx_cn'
2018-12-20 21:03:40 +08:00
Feng Lee 14cffcf7fb Add the 'emqx_pd' module
Add utility functions for erlang process dictionary
Add test cases for emqx_pd
2018-12-20 16:45:25 +08:00
tigercl 97474171d0 Better report errors in acl.conf (#2065) 2018-12-19 23:06:48 +08:00
turtled 7a1ec580b0 Update broker test cases 2018-12-19 17:18:26 +08:00
Gilbert 7d9e350bbe Add option to disconnect client in case acl deny (#2059)
* Add option to disconnect client in case acl deny
2018-12-19 10:34:06 +08:00
turtled 666d9706a3 Fixed conflicts 2018-12-18 16:41:10 +08:00
Feng Lee 721b72b96a Add 'active_n' option to optimize the CPU usage of emqx_connection (#2060)
* Add 'active_n' option to optimize the CPU usage of emqx_connection

* Supports batch processing 'DOWN' events
2018-12-17 19:53:29 +08:00
turtled 34370ef622 Merge branch 'issue#1983' into emqx30 2018-12-14 17:55:36 +08:00
Feng Lee 2a747c9d53 Improve the subscription sharding. 2018-12-12 13:40:01 +08:00
Feng Lee b279eff181 Add t_mnesia/1 test case 2018-12-12 13:40:01 +08:00
Feng Lee 33830d8120 Improve the design of trie, router and broker modules
1. Add do_add_route/1 do_add_route/2, do_delete_route/1,
do_delete_route/2 APIs in emqx_router module
2. Improve the code of emqx_trie module
3. Update the emqx_broker module to call the new APIs of emqx_router
2018-12-12 13:40:01 +08:00
周子博 ec2e289776 Fix crash in emqx_acl_internal:filter/2 2018-12-10 11:13:25 +08:00
Feng Lee faac09eac9 Merge subscription sharding 2018-12-10 10:28:01 +08:00
Gilbert Wong e0eb76afa6 Fix subscription 2018-12-08 16:09:54 +08:00
Feng Lee bce1ddc5c4 Implement a hash-based subscription sharding 2018-12-06 18:45:07 +08:00
Feng Lee b4d981daf2 Add a sequence module to generate index for subscription sharding 2018-12-04 15:59:24 +08:00
Gilbert Wong 61030c8d10 Add eunit tests to increase coverage. 2018-12-03 09:15:10 +08:00
Gilbert 295a9d692e
Fix the coverage shaky (#2010) 2018-11-30 19:16:48 +08:00
周子博 ddb9eaef7b Improve test coverage of emqx_metrics 2018-11-30 17:44:29 +08:00
周子博 ea62b15c87 Alter apis provided by emqx_metrics, and use existing timer to commit metrics 2018-11-30 17:44:29 +08:00
周子博 194dbc02c8 Add batch commit for metrics 2018-11-30 17:44:29 +08:00
Feng Lee 21ed012a0c Add an elegant batch module 2018-11-29 10:13:09 +08:00
周子博 5c291ff23e Fix the 'route_batch_delete' config 2018-11-28 16:04:04 +08:00
tigercl 14b8036576 Use username replace id(issue#1737) (#1961)
* Use username replace id(issue#1737)

* Add test case for issue#1737

* Make with_connection/2 support batch connect
2018-11-21 22:51:33 +08:00
spring2maz a2c658ba19 Add acking mechamism for shared dispatch (#1872)
* Add acking mechamism for shared dispatch

For QoS0 messages, no acking
For QoS1/2 messages, 'ACK' at any of events below:
 - ACK when QoS is downgraded to 0
 - Message is sent to connection process
'NACK' at any of events below:
 - Message queue is full and the receiving session starts to drop old messages
 - The receiving session crash
Upon 'NACK', messages are dispatched to the 'next' subscriber in the group,
depending on the shared subscription dispatch strategy.
2018-11-21 22:49:45 +08:00
Gilbert 16821490ce Fix issue#1874 (#1964)
* Fix issue#1874
Prior to this change, if user use one client connect emqx with mqtt
v3.1.1, the client subscribe the topic and publish message to this
topic, it would receive this message itself published, this commit
provide a configure option to let user ignore the message itself published.

This change fix issue 1874.

* Small Fix

* Fix bug

* Better design

* Fix compile warning and improve coverage

* Better design to solve the performance issue

* Fix typo

* Fix typo

* Delete spaces in end of lines.

* Do not use anonymous function

* Better performance
2018-11-19 13:34:03 +08:00
turtled faeda253e1 Fix conflicts 2018-11-10 11:44:55 +08:00
terry-xiaoyu 997958aed1 Change the start_link API for emqx_client
Prior to this change, emqx_client:start_link does 2 works in one call:
- init an erlang process for emqx_client
- send MQTT CONNECT to remote broker

But this solution have some drawbacks:

- the return value of `start_link` compiles the return values of the 2
 works: {ok, Pid, MqttResult}. It is inconsistent with the return value
 of `gen_statem:start_link`, may causes confusions.

- the return mode of the 2 works are different:
  `start_link` should always return {ok, Pid} or {error, Reason}, but
 connecting to mqtt may throw out exceptions as it handles the
 socket. But the caller couldn't have thought of the exception, he would
 pattern match on the result of `emqx_client:start_link`, but it crashed!

- If the init work succeed but the connection failed, the caller couldn't
get a Pid from the return value, but indeed it was created inside the
emqx_client. This hides the fact that the Pid was created, and when the
Pid dies, the caller would receive an message from a Pid it doesn' know about.

This change divived these 2 work into 2 APIs:
- `start_link/1` is to build and verify the options, and returns {ok,Pid}
 (on success) or {error, Reason} (on failure).
- `connect/1` is to send MQTT CONNECT, and returns {ok, MQTTResult::properties()} or
 {error, MQTTReason}. MQTT reason codes will contains in the `MQTTReason`.
2018-11-09 17:43:04 +08:00
Gilbert Wong 32d3826440 Replace macro QOS$i to QOS_$I
The two styles of qos macro name in one project is chaotic. It is not
a good practice.

So I change the QOS$i to QOS_$i
2018-11-08 20:42:31 +08:00
terry-xiaoyu 94dbdffd59 New logger formatter with meta-data 2018-11-02 18:38:07 +08:00
spring2maz ae743ad1f0 Rewrite emqx_mqueue.erl
Fixed bugs:

- Priority queue lack of a `len + 1` logic in `in/2`

Changed behaviors:

- Topics not found in priority table (from config) will be treated with default priority,
  instead of hasing topic name to a priority number.
- Default priority is now configurable (it was always lower than all configured priorities)
- The dropped message due to reaching `max_len` is now returned from `in/2`,
  so the queue owner (`in/2` caller) can perform autopsy on it
2018-10-27 14:21:53 +02:00
tigercl 64cb920b3b
Merge branch 'emqx30' into improve_connect 2018-10-27 14:27:25 +08:00
turtleDeng 8788cb2158
Merge pull request #1921 from emqx/improve_test_cases
Improve test cases
2018-10-26 19:45:18 +08:00
周子博 92251d4a8a Make more normalize 2018-10-26 17:45:13 +08:00
tigercl abb2e5c918
Improve test cases, and fix some bugs (#1920)
* Improve emqx_banned, emqx_pqueue, emqx_router test cases

* Improve emqx_broker test case, and fix bug in emqx_broker

* Add emqx_hooks to CT_SUITES
2018-10-26 17:27:02 +08:00
Gilbert 0b44c1b75f
improve_test_cases 2018-10-26 17:25:31 +08:00
周子博 e56252dac6 Fix bugs in test cases 2018-10-26 14:34:22 +08:00
Gilbert 7544a21e25
Add test cases for emqx_bridge, emqx_mod_rewrite (#1914) 2018-10-26 14:04:33 +08:00
周子博 ffa220a87d Fix bug in test case 2018-10-26 10:46:56 +08:00
周子博 6675e3d496 Implement will message delay publish in session, add test case for clean start and will message in connect packet 2018-10-25 14:26:31 +08:00
Gilbert Wong a1092a6784 Add eunit cases and fix typo. 2018-10-24 15:59:22 +08:00
tigercl 873a08dc94
Improve coverage for emqx_hooks, and add test case for emqx_mod_sup (#1892)
Improve coverage for emqx_hooks, and add test case for emqx_mod_sup
2018-10-19 16:21:43 +08:00
tigercl 55a12c1ab4
Merge branch 'emqx30' into improve_connect 2018-10-19 16:03:17 +08:00
huangdan 73658b3953 Merged emqx_misc_SUITE to emqx_misc_tests (#1890)
* Merged emqx_misc_SUITE to emqx_misc_tests
2018-10-19 09:46:25 +02:00
Gilbert 4c40f75f4b Request & Response (broker and client) (#1819)
Add request & response support for CONNECT & CONNACK

Prior to this change, there is no validate and specified process for
Request-Response-Information and Response-Information

Also added basic Request/Response functionality to emqx_client implementation
2018-10-18 19:21:05 +02:00
spring2maz 7e7d99fbad Change more stats callbacks to full M:F/A
Including emqx_sm emqx_cm emqx_router_helper
2018-10-19 00:22:29 +08:00
spring2maz 4082f3ade2 Improve stats test
Before this change, the stats callback provided by emqx_broker_helper
was an anonymous function with module local context.
This commit changes it to a full fun M:F/A style callback for:
1. More robust to hot beam reload
2. Faster/smaller variable to construct
3. Easier test
2018-10-19 00:22:29 +08:00
周子博 6ffd0ac44f Increase coverage for emqx_protocol 2018-10-10 18:35:47 +08:00
周子博 12da230662 Increase coverage 2018-10-10 15:53:01 +08:00
spring2maz e3f2ae8db8 Change from customized total heap size check to set process flag
The `max_heap_size` process flag can be used to limit total
heap size of a process, and it gives much more detailed
crash log if the limit is hit.
2018-09-29 21:36:34 +08:00
周子博 a77f8d28f9 Improve coverage 2018-09-29 14:47:21 +08:00
周子博 2d354ca883 Improve topic alias maximum in connect packet 2018-09-29 14:47:21 +08:00
周子博 064db65206 improve receive maximum in connect packet 2018-09-29 14:47:21 +08:00
spring2maz 0b0ef9bd54 Fix default QoS in test cases 2018-09-25 22:09:13 +08:00
spring2maz 3b9247994d Refine emqx_mock_client
Before this change, eqmx_mock_client uses a shared ets table
to store last received message, this causes troulbe when we
want to start / stop two or more clients in one test case
the ets table gets owned by the first spanwed client and
gets closed when the owner client dies.

Now it keeps the last received message in process state
and a gen_server call is added to retrieve it for verification

Along with this change in emqx_mock_client, it made possible
to write test case to verify the actual subscriber pid
used in shared subscription strategy, so test cases were
added (and modified) to verify different strategies
2018-09-22 10:51:38 +02:00
spring2maz b35d37c92d Add new shared subscription dispatch strategy
'random' was already there before this change
Added two new strategies: 'sticky' and 'round_robin'
'sticky' is made default as it is the cheapest
2018-09-22 10:50:34 +02:00
tigercl 03f607c1b2 Fix issue#1833 and #1834 (#1845) 2018-09-22 16:10:24 +08:00
turtleDeng 8653732bae Revert "Calculate the 1.5 keep alive time exactly" 2018-09-22 14:52:31 +08:00
spring2maz b61615323b Move shutdown policy config to zone configs 2018-09-21 18:58:18 +02:00
spring2maz f70d16e387 Add a test case to cover timeout message flush in emqx_misc 2018-09-21 18:58:18 +02:00
spring2maz 6fca651a84 Add connection/session shutdown policy
The hibernation behaviour is also changed (implicitly) in this commit:
Prior to this change, connection/session always hibernates after
the stats timer expires regardless of messages in mailbox.
After this commit, connection/session process only goes to hibernate
when the timer expires AND there is nothing left in the mailbox to
process
2018-09-21 18:58:18 +02:00
spring2maz 721f237bc4 Rewrite emqx_gc.erl
The implementation prior to this commit supports
only one gc enforcement policy which is message count threshold.
The new implementation introduces 1 more: volume threshold based
2018-09-21 22:56:34 +08:00
周子博 b1d4ec750a Remove the same test cases as emqx_keepalive 2018-09-20 17:58:54 +08:00
周子博 2c350bf5fb Match test case for last change 2018-09-20 17:19:21 +08:00
HuangDan 3822ff987b Fix function args
Add test cases for emqx_pool module
2018-09-18 09:15:46 +08:00
周子博 5eb92e37cc Remove check for MQTT path, and normalize code 2018-09-14 11:49:17 +08:00
周子博 5465b015be Add test case for last change 2018-09-14 11:49:17 +08:00
Gilbert Wong 45b2686e1c Delete unnecessary code
Prior to this change, there are multiple deprecated functions.
2018-09-14 09:45:34 +08:00
HuangDan fde6a2a4c3 Fixed issue #1811
Add tests case for issue #1811
2018-09-13 22:55:15 +08:00
Gilbert Wong caedcee2de fix listerners and access suites
Prior to this change, listeners test suites did not start cowboy which
is responsible for websocket connections. and access suites start
duplicated processes and these actions are wrong

This change fix the problem states above.
2018-09-08 09:33:37 +02:00
周子博 08bab7efa4 Fix bugs in test cases 2018-09-08 11:49:20 +08:00
turtleDeng c0ddbba5db
Merge pull request #1794 from spring2maz/generate-temp-config-for-test
Generate a config file for testing
2018-09-07 21:50:35 +08:00
turtleDeng 0ec461484e
Merge pull request #1790 from emqx/emqx30-feng
Improve the Hooks' design
2018-09-07 21:46:30 +08:00
Gilbert 84e43c587d
Merge branch 'emqx30' into emqx30 2018-09-07 18:49:11 +08:00
turtleDeng cb058143a5
Merge pull request #1792 from huangdan/master
Add test cases for mqtt5 connect packet
2018-09-07 18:03:37 +08:00
turtleDeng ba176f2073
Merge pull request #1797 from terry-xiaoyu/banned_api_v2
Update for banned API
2018-09-07 17:50:30 +08:00
周子博 1c5615c957 Stop emqx_zone when emqx_mqtt_caps test over 2018-09-07 17:22:24 +08:00
terry-xiaoyu dd8513ad35 Update for banned API
Use `mnesia:foldl` to traverse mnesia rather than `mnesia:first` and
`mnesia:next`, as a badarg exception would occur if the record was
deleted while travering the whole table.
2018-09-07 14:10:16 +08:00
spring2maz 3a94d7ddae Generate a config file for testing
Prior to this change, the template file etc/emqx.conf is used
directly in testing, as a result, mustache style directories
are created e.g. `{{ platform_log_dir }}` which should have been
replaced with a config varialbe e.g. `log`

In this change, Makefile targets are added as `ct` dependency
to download bbmustach, load the template input, replace with
variableds defined in 'vars' file, finally to etc/gen.emqx.conf.
The direct usage of etc/emqx.conf in test code are replaced with
gen.emqx.conf
2018-09-07 07:04:04 +02:00
Feng Lee 304a24ca6a Code Review: Update the zone module
1. Add force_reload/0 management API
2. Change the reload interval to 5 minutes
2018-09-07 10:26:14 +08:00
Gilbert Wong 765ab5ad7b Add condition to handle when mqx_topic_alias do not exist 2018-09-06 19:09:29 +08:00
HuangDan 7c688a4839 Add test case for mqtt5 connect packet 2018-09-06 18:09:58 +08:00
Feng Lee edf654727c Rename emqx_mqtt_properties module to emqx_mqtt_props 2018-09-06 18:09:22 +08:00
Feng Lee 2a75105580 Improve the Hooks's design 2018-09-06 16:27:16 +08:00
Gilbert Wong 2f63b7a487 update broker suite for latest code 2018-08-31 20:21:28 +08:00
Gilbert Wong 14ba395c21 fix seesion and connectiong test suites 2018-08-31 19:15:17 +08:00
Gilbert Wong 748826bdee update access sutie and access control 2018-08-31 01:16:54 +08:00
Gilbert Wong 487fa6824d add emqx_protocol test suites 2018-08-31 00:42:55 +08:00
Gilbert Wong a7274b115d ignore dup cases 2018-08-31 00:15:45 +08:00
Gilbert Wong 809c516a2b delete client testcases duplicated with emqx_mqtt_compat 2018-08-31 00:04:01 +08:00
Feng Lee 674b55e6e7
Merge pull request #1773 from tigercl/emqx30
Add emqx_banned test suite, and fix bugs in emqx_banned
2018-08-30 23:35:15 +08:00
周子博 83e11b6e39 Add emqx_banned test suite, and fix bugs in emqx_banned 2018-08-30 22:45:08 +08:00
Gilbert Wong f229c16752 fix listener test case 2018-08-30 22:21:13 +08:00
Gilbert Wong d0eaa51928 add emqx listeners suite 2018-08-30 22:16:31 +08:00
Feng Lee ed6ffeda91
Merge pull request #1770 from tigercl/emqx30
Fix bugs in emqx_message, emqx_mqueue ct, and add emqx_message ct to Makefile
2018-08-30 21:28:22 +08:00
Gilbert Wong 8fcfcfb860 update compact test cases except keepalive 2018-08-30 21:12:41 +08:00
周子博 e6d0329663 Fix test suites bug, and add emqx_message ct to Makefile 2018-08-30 19:55:44 +08:00
Feng Lee 1207ec1819
Merge pull request #1768 from tigercl/emqx30
Add test case for emqx_connection:attrs/1
2018-08-30 18:55:16 +08:00
Feng Lee c49e5dfddc
Merge branch 'emqx30' into emqx30-feng 2018-08-30 18:42:29 +08:00
Feng Lee c52f5a8525 Update the emqx_mqueue SUITE 2018-08-30 18:32:43 +08:00
周子博 69b285aa3f Add test case for emqx_connection:attrs/1 2018-08-30 16:26:04 +08:00
周子博 c89f53f14d Add session, mountpoint test suites 2018-08-30 14:43:14 +08:00
Gilbert Wong db76177228 add router clean function before each case 2018-08-30 13:48:54 +08:00
Gilbert Wong e97c3a5c8c update frame suite for latest emqx_frame 2018-08-30 13:44:09 +08:00
HuangDan 18eee0f1b0 Fixed Conflicting files 2018-08-30 10:53:35 +08:00
HuangDan 9b06589eab Add SUBSCRIBER/PUBLISH Packet test cases 2018-08-30 10:35:04 +08:00
HuangDan 37c1570e94 Add mqtt connect tests cases 2018-08-30 10:35:04 +08:00
HuangDan 0fbf813ebf Add mqtt connect tests cases 2018-08-30 10:35:04 +08:00
Feng Lee b1dadf444f Comment 'TEST_DEPS = emqx_ct_helplers' 2018-08-30 00:22:43 +08:00
周子博 f4330b8af3 Add some test suites and fix bugs 2018-08-29 19:19:22 +08:00
Gilbert Wong 47232d0281 update emqx_lib_suite and delete duplicate test case 2018-08-29 14:52:35 +08:00
Gilbert Wong 84f241522f update frame suite and frame suite 2018-08-29 14:36:40 +08:00
Feng Lee 41d1f04659 Update copyright 2018-08-28 20:37:46 +08:00
Feng Lee 734de8bf85
Merge pull request #1755 from tigercl/emqx30
Add some test suites
2018-08-28 20:03:59 +08:00
周子博 545e80cd6b Add some test suites 2018-08-28 17:53:03 +08:00
Gilbert 4a1eaaba98
Merge pull request #1754 from Gilbert-Wong/emqx30
Update emqx_topic and emqx router suite
2018-08-28 16:47:47 +08:00
Gilbert Wong 3e4b15fd6d update emqx_router_SUITE 2018-08-28 13:03:54 +08:00
周子博 b59db00aeb Add sm test suite, and fix bug in stats test suite 2018-08-28 09:42:17 +08:00
Gilbert Wong 9d22fcb413 update emqx_topic_SUITE 2018-08-28 09:20:32 +08:00
Gilbert Wong ce3f2e4d9e fix emqx_broker test suite 2018-08-27 21:18:00 +08:00
Gilbert Wong 087bfe80c8 fix unsubscribe emqx_mock_client error 2018-08-27 15:24:40 +08:00
turtled 6478f811bf Fix conflicts 2018-08-27 10:29:22 +08:00
HuangDan e3fb147594 Fixed test case compilation error 2018-08-26 22:25:54 +08:00
terry-xiaoyu 9d29dd0e10 use config enable_acl_cache 2018-08-26 18:25:17 +08:00
terry-xiaoyu 9717f9b83e add module emqx_acl_cache 2018-08-26 15:46:22 +08:00
terry-xiaoyu 8cd20744be improve cache datastruct using keys-queue 2018-08-26 13:33:00 +08:00
terry-xiaoyu a904031979 acl cache using proc_dict 2018-08-26 13:30:18 +08:00
terry-xiaoyu 737fe19331 update acl test cases 2018-08-26 12:48:32 +08:00
周子博 6b45834de4 Add emqx_cm, emqx_metrics, emqx_stats test suites 2018-08-25 18:13:49 +08:00
Feng Lee 0f052ce352 Upgrade connection, protocol and session modules for MQTT 5.0 2018-08-24 18:39:59 +08:00
Gilbert Wong 96d251ec3c Add encode and decode options and test suites 2018-08-07 10:27:04 +08:00
Gilbert Wong 79481db659 Enhance base62 encode/decode Funs 2018-08-06 23:45:27 +08:00
Feng Lee bffdd2ba74 Upgrade esockd and add more test cases 2018-05-22 13:01:19 +08:00
Feng Lee bf253ab9b3 Support batch delete 2018-05-10 22:03:59 +08:00
Feng Lee c11e8f453b Add test cases for MQTT 5.0 frame 2018-05-09 00:42:41 +08:00
Feng Lee 31bc091873 Implement MQTT Version 5.0 client 2018-05-06 17:45:18 +08:00
Feng Lee bbb66ff92e Refactor the broker, router modules 2018-04-10 18:17:07 +08:00
Feng Lee 6a957e1b33 Support MQTT Version 5.0 2018-03-02 20:18:27 +08:00
Feng Lee d7eae533ac Merge the emqx-mqtt5 library 2018-02-28 21:22:39 +08:00
Feng Lee f4fd6efe16 Merge the emqx-common, emqx-router libraries 2018-02-26 23:29:53 +08:00
Feng Lee fcb2ec8427 Merge the latest enterprise branch 2018-02-24 15:56:32 +08:00
Feng Lee b63c34ab14 Merge the latest master branch 2018-02-24 11:27:09 +08:00
Feng Lee a3e97f798b Update Copyright to 2018 2018-01-16 08:57:46 +08:00
HuangDan 6ad7b46885 Fix failed test 2018-01-08 13:39:52 +08:00
HeeeJianBo d5c54276e2 Fix issue #1398 2017-12-27 14:55:36 +08:00
Feng Lee c8d6e9a012 Update test cases 2017-12-07 16:37:46 +08:00
Feng Lee 6e5134a8b2 Merge with the enterprise edition 2017-12-07 16:24:48 +08:00
Feng Lee f1640f5b85 Merge emq24 to X branch 2017-12-07 11:02:44 +08:00
HuangDan 896088b7e8 Router test cases migration from emqttd_SUITE to emqttd_route_SUITE 2017-12-06 21:09:03 +08:00
HuangDan 4c52d99706 Fixed test cases for emqttd_router_SUITE 2017-12-06 15:47:46 +08:00