From 3a7d0c3e84962c3874883fef1937b95ac9755356 Mon Sep 17 00:00:00 2001 From: William Yang Date: Fri, 16 Jul 2021 13:59:04 +0200 Subject: [PATCH 1/7] fix(script): emqx die if call_hocon failed --- bin/emqx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/bin/emqx b/bin/emqx index 0e019a4fc..048bbc34f 100755 --- a/bin/emqx +++ b/bin/emqx @@ -41,6 +41,12 @@ export LD_LIBRARY_PATH="$ERTS_DIR/lib:$LD_LIBRARY_PATH" export ERTS_LIB_DIR="$ERTS_DIR/../lib" MNESIA_DATA_DIR="$RUNNER_DATA_DIR/mnesia/$NAME" +die() { + echo >&2 "$1" + errno=${2:-1} + exit "$errno" +} + relx_usage() { command="$1" @@ -200,8 +206,8 @@ relx_nodetool() { call_hocon() { export RUNNER_ROOT_DIR export REL_VSN - "$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" hocon "$@" - return $? + "$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" hocon "$@" \ + || die "ERROR: call_hocon failed: $*" $? } # Run an escript in the node's environment @@ -275,8 +281,7 @@ generate_config() { # shellcheck disable=SC2086 if ! relx_nodetool chkconfig $CONFIG_ARGS; then - echoerr "Error reading $CONFIG_ARGS" - exit 1 + die "Error reading $CONFIG_ARGS" fi } @@ -366,8 +371,7 @@ if [ -z "$COOKIE" ]; then fi if [ -z "$COOKIE" ]; then - echoerr "Please set node.cookie in $RUNNER_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE_COOKIE" - exit 1 + die "Please set node.cookie in $RUNNER_ETC_DIR/emqx.conf or override from environment variable EMQX_NODE_COOKIE" fi # Support for IPv6 Dist. See: https://github.com/emqtt/emqttd/issues/1460 From b2b83866853993475d8db2a1a512197be4c23fc3 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Fri, 16 Jul 2021 20:09:32 +0800 Subject: [PATCH 2/7] build(helm): delete loaded_plugins loaded_modules and acl --- deploy/charts/emqx/README.md | 1 - deploy/charts/emqx/templates/StatefulSet.yaml | 27 ----------- deploy/charts/emqx/templates/configmap.yaml | 45 ------------------- deploy/charts/emqx/values.yaml | 39 ---------------- 4 files changed, 112 deletions(-) diff --git a/deploy/charts/emqx/README.md b/deploy/charts/emqx/README.md index 446b26f07..428999a44 100644 --- a/deploy/charts/emqx/README.md +++ b/deploy/charts/emqx/README.md @@ -76,4 +76,3 @@ The following table lists the configurable parameters of the emqx chart and thei | `ingress.mgmt.tls` | Ingress tls for EMQX Mgmt API | [] | | `ingress.mgmt.annotations` | Ingress annotations for EMQX Mgmt API | {} | | `emqxConfig` | Emqx configuration item, see the [documentation](https://hub.docker.com/r/emqx/emqx) | | -| `emqxAclConfig` | Emqx acl configuration item, see the [documentation](https://docs.emqx.io/broker/latest/en/advanced/acl-file.html) | | diff --git a/deploy/charts/emqx/templates/StatefulSet.yaml b/deploy/charts/emqx/templates/StatefulSet.yaml index 6ebbf5121..38006895a 100644 --- a/deploy/charts/emqx/templates/StatefulSet.yaml +++ b/deploy/charts/emqx/templates/StatefulSet.yaml @@ -53,24 +53,6 @@ spec: {{- end }} spec: volumes: - - name: emqx-loaded-plugins - configMap: - name: {{ include "emqx.fullname" . }}-loaded-plugins - items: - - key: loaded_plugins - path: loaded_plugins - - name: emqx-loaded-modules - configMap: - name: {{ include "emqx.fullname" . }}-loaded-modules - items: - - key: loaded_modules - path: loaded_modules - - name: emqx-acl - configMap: - name: {{ include "emqx.fullname" . }}-acl - items: - - key: acl.conf - path: acl.conf {{- if not .Values.persistence.enabled }} - name: emqx-data emptyDir: {} @@ -145,15 +127,6 @@ spec: volumeMounts: - name: emqx-data mountPath: "/opt/emqx/data/mnesia" - - name: emqx-acl - mountPath: "/opt/emqx/etc/acl.conf" - subPath: "acl.conf" - - name: emqx-loaded-plugins - mountPath: "/opt/emqx/data/loaded_plugins" - subPath: "loaded_plugins" - - name: emqx-loaded-modules - mountPath: "/opt/emqx/data/loaded_modules" - subPath: "loaded_modules" {{ if .Values.emqxLicneseSecretName }} - name: emqx-license mountPath: "/opt/emqx/etc/emqx.lic" diff --git a/deploy/charts/emqx/templates/configmap.yaml b/deploy/charts/emqx/templates/configmap.yaml index c9c4b4770..ffd1b66dc 100644 --- a/deploy/charts/emqx/templates/configmap.yaml +++ b/deploy/charts/emqx/templates/configmap.yaml @@ -12,48 +12,3 @@ data: {{- range $index, $value := .Values.emqxConfig}} {{$index}}: "{{ $value }}" {{- end}} - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "emqx.fullname" . }}-acl - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "emqx.name" . }} - helm.sh/chart: {{ include "emqx.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - "acl.conf": | - {{ .Values.emqxAclConfig }} - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "emqx.fullname" . }}-loaded-plugins - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "emqx.name" . }} - helm.sh/chart: {{ include "emqx.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - "loaded_plugins": | - {{ .Values.emqxLoadedPlugins }} - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "emqx.fullname" . }}-loaded-modules - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "emqx.name" . }} - helm.sh/chart: {{ include "emqx.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - "loaded_modules": | - {{ .Values.emqxLoadedModules }} diff --git a/deploy/charts/emqx/values.yaml b/deploy/charts/emqx/values.yaml index 36e9be47a..963fd36c2 100644 --- a/deploy/charts/emqx/values.yaml +++ b/deploy/charts/emqx/values.yaml @@ -54,45 +54,6 @@ emqxConfig: ## if EMQX_CLUSTER__K8S__ADDRESS_TYPE eq dns # EMQX_CLUSTER__K8S__SUFFIX: "pod.cluster.local" -## -------------------------------------------------------------------- -## [ACL](https://docs.emqx.io/broker/latest/en/advanced/acl-file.html) - -## -type(who() :: all | binary() | -## {ipaddr, esockd_access:cidr()} | -## {client, binary()} | -## {user, binary()}). - -## -type(access() :: subscribe | publish | pubsub). - -## -type(topic() :: binary()). - -## -type(rule() :: {allow, all} | -## {allow, who(), access(), list(topic())} | -## {deny, all} | -## {deny, who(), access(), list(topic())}). -## -------------------------------------------------------------------- -emqxAclConfig: > - {allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}. - {allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}. - {deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. - {allow, all}. - -emqxLoadedPlugins: > - {emqx_management, true}. - {emqx_recon, true}. - {emqx_retainer, true}. - {emqx_dashboard, true}. - {emqx_telemetry, true}. - {emqx_rule_engine, true}. - {emqx_bridge_mqtt, false}. - -emqxLoadedModules: > - {emqx_mod_presence, true}. - {emqx_mod_delayed, false}. - {emqx_mod_rewrite, false}. - {emqx_mod_subscription, false}. - {emqx_mod_topic_metrics, false}. - ## EMQX Enterprise Edition requires manual creation of a Secret containing the licensed content. Write the name of Secret to the value of "emqxLicneseSecretName" ## Example: ## kubectl create secret generic emqx-license-secret-name --from-file=/path/to/emqx.lic From 9239d3a8404f1188f21edc06f695158cc465a068 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Fri, 16 Jul 2021 20:09:58 +0800 Subject: [PATCH 3/7] chore(CI): update emqx cluster docker compose file --- .../docker-compose-emqx-cluster.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.ci/docker-compose-file/docker-compose-emqx-cluster.yaml b/.ci/docker-compose-file/docker-compose-emqx-cluster.yaml index 81d48aba7..e810e77c3 100644 --- a/.ci/docker-compose-file/docker-compose-emqx-cluster.yaml +++ b/.ci/docker-compose-file/docker-compose-emqx-cluster.yaml @@ -33,13 +33,6 @@ services: - conf.cluster.env environment: - "EMQX_HOST=node1.emqx.io" - command: - - /bin/sh - - -c - - | - sed -i "s 127.0.0.1 $$(ip route show |grep "link" |awk '{print $$1}') g" /opt/emqx/etc/acl.conf - # sed -i '/emqx_telemetry/d' /opt/emqx/data/loaded_plugins - /opt/emqx/bin/emqx foreground healthcheck: test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"] interval: 5s @@ -57,13 +50,6 @@ services: - conf.cluster.env environment: - "EMQX_HOST=node2.emqx.io" - command: - - /bin/sh - - -c - - | - sed -i "s 127.0.0.1 $$(ip route show |grep "link" |awk '{print $$1}') g" /opt/emqx/etc/acl.conf - # sed -i '/emqx_telemetry/d' /opt/emqx/data/loaded_plugins - /opt/emqx/bin/emqx foreground healthcheck: test: ["CMD", "/opt/emqx/bin/emqx", "ping"] interval: 5s From 69f06b36314f40801b4fa576e91e1c05e28c24f6 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Fri, 16 Jul 2021 20:10:43 +0800 Subject: [PATCH 4/7] chore(CI): add time sleep for relup test --- .ci/fvt_tests/relup.lux | 1 + 1 file changed, 1 insertion(+) diff --git a/.ci/fvt_tests/relup.lux b/.ci/fvt_tests/relup.lux index 91c11d3ae..63cb06661 100644 --- a/.ci/fvt_tests/relup.lux +++ b/.ci/fvt_tests/relup.lux @@ -131,6 +131,7 @@ [shell bench] ???publish complete ??SH-PROMPT: + !sleep 5 !curl http://127.0.0.1:8080/counter ???{"data":300,"code":0} ?SH-PROMPT From ed1cf33b9d4bdfb935fb58d910e293649718a03c Mon Sep 17 00:00:00 2001 From: Turtle Date: Fri, 16 Jul 2021 23:08:11 +0800 Subject: [PATCH 5/7] chore: merge coap/lwm2m/exhook/exproto to emqx_gateway dir --- apps/emqx_coap/.gitignore | 25 - apps/emqx_coap/TODO | 13 - apps/emqx_coap/docs/rfc7049.pdf | Bin 157813 -> 0 bytes apps/emqx_coap/docs/rfc7228.pdf | Bin 53076 -> 0 bytes apps/emqx_coap/docs/rfc7252.pdf | Bin 493316 -> 0 bytes apps/emqx_coap/intergration_test/Makefile | 129 -- apps/emqx_coap/intergration_test/README.md | 8 - .../intergration_test/check_result.py | 52 - apps/emqx_coap/rebar.config | 4 - apps/emqx_coap/test/emqx_coap_SUITE.erl | 319 --- .../emqx_coap/test/emqx_coap_pubsub_SUITE.erl | 677 ------ apps/emqx_exhook/.gitignore | 29 - apps/emqx_exhook/docs/design-cn.md | 116 - apps/emqx_exhook/rebar.config | 48 - apps/emqx_exhook/src/emqx_exhook.appup.src | 23 - apps/emqx_exhook/test/emqx_exhook_SUITE.erl | 96 - .../emqx_exhook/test/emqx_exhook_demo_svr.erl | 339 --- .../test/props/prop_exhook_hooks.erl | 531 ----- apps/emqx_exproto/.gitignore | 48 - apps/emqx_exproto/docs/design-cn.md | 127 -- .../emqx_exproto/docs/images/exproto-arch.jpg | Bin 72633 -> 0 bytes .../docs/images/exproto-grpc-arch.jpg | Bin 97464 -> 0 bytes apps/emqx_exproto/rebar.config | 51 - apps/emqx_exproto/test/emqx_exproto_SUITE.erl | 454 ---- .../test/emqx_exproto_echo_svr.erl | 278 --- .../etc/emqx_coap.conf | 0 .../etc/emqx_exhook.conf | 0 .../etc/emqx_exproto.conf | 0 .../etc/emqx_lwm2m.conf | 0 .../etc}/priv/emqx_coap.schema | 0 .../etc}/priv/emqx_exhook.schema | 0 .../etc}/priv/emqx_exproto.schema | 0 .../etc}/priv/emqx_lwm2m.schema | 0 .../etc/priv}/exhook.proto | 0 .../etc/priv}/exproto.proto | 0 apps/emqx_gateway/rebar.config | 17 +- .../src/coap}/README.md | 0 .../src/coap}/emqx_coap.app.src | 0 .../src/coap}/emqx_coap_app.erl | 2 +- .../src/coap}/emqx_coap_mqtt_adapter.erl | 2 +- .../src/coap}/emqx_coap_pubsub_resource.erl | 4 +- .../src/coap}/emqx_coap_pubsub_topics.erl | 2 +- .../src/coap}/emqx_coap_registry.erl | 2 +- .../src/coap}/emqx_coap_resource.erl | 4 +- .../src/coap}/emqx_coap_server.erl | 2 +- .../src/coap}/emqx_coap_sup.erl | 0 .../src/coap}/emqx_coap_timer.erl | 2 +- .../src/coap}/include/emqx_coap.hrl | 0 .../src/coap/test/emqx_coap_SUITE.erl | 319 +++ .../src/coap/test/emqx_coap_pubsub_SUITE.erl | 678 ++++++ .../src/exhook}/README.md | 0 .../src/exhook}/emqx_exhook.app.src | 0 .../src/exhook}/emqx_exhook.erl | 2 +- .../src/exhook}/emqx_exhook_app.erl | 2 +- .../src/exhook}/emqx_exhook_cli.erl | 2 +- .../src/exhook}/emqx_exhook_handler.erl | 2 +- .../src/exhook}/emqx_exhook_server.erl | 2 +- .../src/exhook}/emqx_exhook_sup.erl | 0 .../src/exhook}/include/emqx_exhook.hrl | 0 .../src/exhook/prop_exhook_hooks.erl | 531 +++++ .../src/exhook/test/emqx_exhook_SUITE.erl | 97 + .../src/exhook/test/emqx_exhook_demo_svr.erl | 339 +++ .../src/exproto}/README.md | 0 .../src/exproto}/emqx_exproto.app.src | 0 .../src/exproto}/emqx_exproto.erl | 2 +- .../src/exproto}/emqx_exproto_app.erl | 0 .../src/exproto}/emqx_exproto_channel.erl | 3 +- .../src/exproto}/emqx_exproto_conn.erl | 0 .../src/exproto}/emqx_exproto_gcli.erl | 0 .../src/exproto}/emqx_exproto_gsvr.erl | 4 +- .../src/exproto}/emqx_exproto_sup.erl | 0 .../src/exproto}/include/emqx_exproto.hrl | 0 .../src/exproto/test/emqx_exproto_SUITE.erl | 454 ++++ .../exproto/test/emqx_exproto_echo_svr.erl | 278 +++ .../src/lwm2m}/.gitignore | 0 .../src/lwm2m}/README.md | 0 .../src/lwm2m}/binary_util.erl | 0 .../src/lwm2m}/emqx_lwm2m.app.src | 0 .../src/lwm2m}/emqx_lwm2m_api.erl | 0 .../src/lwm2m}/emqx_lwm2m_app.erl | 3 +- .../src/lwm2m}/emqx_lwm2m_cm.erl | 0 .../src/lwm2m}/emqx_lwm2m_cm_sup.erl | 0 .../src/lwm2m}/emqx_lwm2m_cmd_handler.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_coap_resource.erl | 4 +- .../src/lwm2m}/emqx_lwm2m_coap_server.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_json.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_message.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_protocol.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_sup.erl | 0 .../src/lwm2m}/emqx_lwm2m_timer.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_tlv.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_xml_object.erl | 2 +- .../src/lwm2m}/emqx_lwm2m_xml_object_db.erl | 2 +- .../src/lwm2m}/include/emqx_lwm2m.hrl | 0 .../lwm2m_xml/LWM2M_Access_Control-v1_0_1.xml | 0 .../LWM2M_Connectivity_Statistics-v1_0_1.xml | 0 .../lwm2m}/lwm2m_xml/LWM2M_Device-v1_0_1.xml | 0 .../LWM2M_Firmware_Update-v1_0_1.xml | 0 .../lwm2m}/lwm2m_xml/LWM2M_Location-v1_0.xml | 0 .../lwm2m}/lwm2m_xml/LWM2M_Security-v1_0.xml | 0 .../lwm2m}/lwm2m_xml/LWM2M_Server-v1_0.xml | 0 .../src/lwm2m/test/emqx_lwm2m_SUITE.erl | 1953 +++++++++++++++++ .../src/lwm2m/test/emqx_tlv_SUITE.erl | 240 ++ .../src/lwm2m/test/test_mqtt_broker.erl | 171 ++ apps/emqx_lwm2m/integration_test/Makefile | 128 -- apps/emqx_lwm2m/integration_test/case1.py | 65 - apps/emqx_lwm2m/integration_test/case2.py | 60 - apps/emqx_lwm2m/integration_test/case3.py | 60 - .../integration_test/insert_lwm2m_plugin.py | 52 - .../integration_test/object_security.c | 253 --- apps/emqx_lwm2m/rebar.config | 29 - apps/emqx_lwm2m/src/emqx_lwm2m.appup.src | 13 - apps/emqx_lwm2m/test/emqx_lwm2m_SUITE.erl | 1953 ----------------- apps/emqx_lwm2m/test/emqx_tlv_SUITE.erl | 240 -- apps/emqx_lwm2m/test/test_mqtt_broker.erl | 171 -- 115 files changed, 5107 insertions(+), 6425 deletions(-) delete mode 100644 apps/emqx_coap/.gitignore delete mode 100644 apps/emqx_coap/TODO delete mode 100644 apps/emqx_coap/docs/rfc7049.pdf delete mode 100644 apps/emqx_coap/docs/rfc7228.pdf delete mode 100644 apps/emqx_coap/docs/rfc7252.pdf delete mode 100644 apps/emqx_coap/intergration_test/Makefile delete mode 100644 apps/emqx_coap/intergration_test/README.md delete mode 100644 apps/emqx_coap/intergration_test/check_result.py delete mode 100644 apps/emqx_coap/rebar.config delete mode 100644 apps/emqx_coap/test/emqx_coap_SUITE.erl delete mode 100644 apps/emqx_coap/test/emqx_coap_pubsub_SUITE.erl delete mode 100644 apps/emqx_exhook/.gitignore delete mode 100644 apps/emqx_exhook/docs/design-cn.md delete mode 100644 apps/emqx_exhook/rebar.config delete mode 100644 apps/emqx_exhook/src/emqx_exhook.appup.src delete mode 100644 apps/emqx_exhook/test/emqx_exhook_SUITE.erl delete mode 100644 apps/emqx_exhook/test/emqx_exhook_demo_svr.erl delete mode 100644 apps/emqx_exhook/test/props/prop_exhook_hooks.erl delete mode 100644 apps/emqx_exproto/.gitignore delete mode 100644 apps/emqx_exproto/docs/design-cn.md delete mode 100644 apps/emqx_exproto/docs/images/exproto-arch.jpg delete mode 100644 apps/emqx_exproto/docs/images/exproto-grpc-arch.jpg delete mode 100644 apps/emqx_exproto/rebar.config delete mode 100644 apps/emqx_exproto/test/emqx_exproto_SUITE.erl delete mode 100644 apps/emqx_exproto/test/emqx_exproto_echo_svr.erl rename apps/{emqx_coap => emqx_gateway}/etc/emqx_coap.conf (100%) rename apps/{emqx_exhook => emqx_gateway}/etc/emqx_exhook.conf (100%) rename apps/{emqx_exproto => emqx_gateway}/etc/emqx_exproto.conf (100%) rename apps/{emqx_lwm2m => emqx_gateway}/etc/emqx_lwm2m.conf (100%) rename apps/{emqx_coap => emqx_gateway/etc}/priv/emqx_coap.schema (100%) rename apps/{emqx_exhook => emqx_gateway/etc}/priv/emqx_exhook.schema (100%) rename apps/{emqx_exproto => emqx_gateway/etc}/priv/emqx_exproto.schema (100%) rename apps/{emqx_lwm2m => emqx_gateway/etc}/priv/emqx_lwm2m.schema (100%) rename apps/{emqx_exhook/priv/protos => emqx_gateway/etc/priv}/exhook.proto (100%) rename apps/{emqx_exproto/priv/protos => emqx_gateway/etc/priv}/exproto.proto (100%) rename apps/{emqx_coap => emqx_gateway/src/coap}/README.md (100%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap.app.src (100%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_app.erl (97%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_mqtt_adapter.erl (99%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_pubsub_resource.erl (99%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_pubsub_topics.erl (99%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_registry.erl (98%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_resource.erl (98%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_server.erl (98%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_sup.erl (100%) rename apps/{emqx_coap/src => emqx_gateway/src/coap}/emqx_coap_timer.erl (97%) rename apps/{emqx_coap => emqx_gateway/src/coap}/include/emqx_coap.hrl (100%) create mode 100644 apps/emqx_gateway/src/coap/test/emqx_coap_SUITE.erl create mode 100644 apps/emqx_gateway/src/coap/test/emqx_coap_pubsub_SUITE.erl rename apps/{emqx_exhook => emqx_gateway/src/exhook}/README.md (100%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook.app.src (100%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook.erl (98%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook_app.erl (98%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook_cli.erl (98%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook_handler.erl (99%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook_server.erl (99%) rename apps/{emqx_exhook/src => emqx_gateway/src/exhook}/emqx_exhook_sup.erl (100%) rename apps/{emqx_exhook => emqx_gateway/src/exhook}/include/emqx_exhook.hrl (100%) create mode 100644 apps/emqx_gateway/src/exhook/prop_exhook_hooks.erl create mode 100644 apps/emqx_gateway/src/exhook/test/emqx_exhook_SUITE.erl create mode 100644 apps/emqx_gateway/src/exhook/test/emqx_exhook_demo_svr.erl rename apps/{emqx_exproto => emqx_gateway/src/exproto}/README.md (100%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto.app.src (100%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto.erl (99%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_app.erl (100%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_channel.erl (99%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_conn.erl (100%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_gcli.erl (100%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_gsvr.erl (98%) rename apps/{emqx_exproto/src => emqx_gateway/src/exproto}/emqx_exproto_sup.erl (100%) rename apps/{emqx_exproto => emqx_gateway/src/exproto}/include/emqx_exproto.hrl (100%) create mode 100644 apps/emqx_gateway/src/exproto/test/emqx_exproto_SUITE.erl create mode 100644 apps/emqx_gateway/src/exproto/test/emqx_exproto_echo_svr.erl rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/.gitignore (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/README.md (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/binary_util.erl (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m.app.src (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_api.erl (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_app.erl (96%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_cm.erl (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_cm_sup.erl (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_cmd_handler.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_coap_resource.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_coap_server.erl (98%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_json.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_message.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_protocol.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_sup.erl (100%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_timer.erl (97%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_tlv.erl (99%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_xml_object.erl (98%) rename apps/{emqx_lwm2m/src => emqx_gateway/src/lwm2m}/emqx_lwm2m_xml_object_db.erl (99%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/include/emqx_lwm2m.hrl (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Access_Control-v1_0_1.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Connectivity_Statistics-v1_0_1.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Device-v1_0_1.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Firmware_Update-v1_0_1.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Location-v1_0.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Security-v1_0.xml (100%) rename apps/{emqx_lwm2m => emqx_gateway/src/lwm2m}/lwm2m_xml/LWM2M_Server-v1_0.xml (100%) create mode 100644 apps/emqx_gateway/src/lwm2m/test/emqx_lwm2m_SUITE.erl create mode 100644 apps/emqx_gateway/src/lwm2m/test/emqx_tlv_SUITE.erl create mode 100644 apps/emqx_gateway/src/lwm2m/test/test_mqtt_broker.erl delete mode 100644 apps/emqx_lwm2m/integration_test/Makefile delete mode 100644 apps/emqx_lwm2m/integration_test/case1.py delete mode 100644 apps/emqx_lwm2m/integration_test/case2.py delete mode 100644 apps/emqx_lwm2m/integration_test/case3.py delete mode 100644 apps/emqx_lwm2m/integration_test/insert_lwm2m_plugin.py delete mode 100644 apps/emqx_lwm2m/integration_test/object_security.c delete mode 100644 apps/emqx_lwm2m/rebar.config delete mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m.appup.src delete mode 100644 apps/emqx_lwm2m/test/emqx_lwm2m_SUITE.erl delete mode 100644 apps/emqx_lwm2m/test/emqx_tlv_SUITE.erl delete mode 100644 apps/emqx_lwm2m/test/test_mqtt_broker.erl diff --git a/apps/emqx_coap/.gitignore b/apps/emqx_coap/.gitignore deleted file mode 100644 index 67eaa0145..000000000 --- a/apps/emqx_coap/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -deps/ -ebin/ -_rel/ -.erlang.mk/ -*.d -*.o -*.exe -data/ -*.iml -.idea/ -logs/ -*.beam -emqx_coap.d -intergration_test/emqx-rel/ -intergration_test/libcoap/ -intergration_test/case*.txt -.DS_Store -_build/ -rebar.lock -rebar3.crashdump -*.swp -erlang.mk -.rebar3/ -etc/emqx_coap.conf.rendered -.tags* diff --git a/apps/emqx_coap/TODO b/apps/emqx_coap/TODO deleted file mode 100644 index a0a1c2aaf..000000000 --- a/apps/emqx_coap/TODO +++ /dev/null @@ -1,13 +0,0 @@ -1. Remove the test/test_mqtt_broker and use emqx-ct-helpers -> Done! - - Enhance all test case - -2. Remove the mqtt adaptor -3. Remove the emqx_coap_pubsub_topics.erl - - -### Problems - -1. The coap-client of libcoap does not support Fragment DTLS handshake frame - * So, the connection will be established failed, if the 'Server Hello' frame is too big - * Why is the 'Server Hello' too big when enable the 'coap.dtls.cacertfile' option? -2. diff --git a/apps/emqx_coap/docs/rfc7049.pdf b/apps/emqx_coap/docs/rfc7049.pdf deleted file mode 100644 index a16db36ef75fada5d370bef3e70df56b733547df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157813 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

U 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 z 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 diff --git a/apps/emqx_coap/docs/rfc7228.pdf b/apps/emqx_coap/docs/rfc7228.pdf deleted file mode 100644 index c9dc1b59fa26ceccf588b86789f0a3f50233e6b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53076 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

^^B>cOQI&ZqEH^1~Wf9?TdakhJL#JlhF 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

S-NSodduv^QKN4zep< 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%0A_+H|K@;JU^(u?bM=2bIN7{ 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 AIRF3v diff --git a/apps/emqx_coap/intergration_test/Makefile b/apps/emqx_coap/intergration_test/Makefile deleted file mode 100644 index 12a2081dd..000000000 --- a/apps/emqx_coap/intergration_test/Makefile +++ /dev/null @@ -1,129 +0,0 @@ -.PHONY: clean, clean_result, start_broker stop_broker case1 case2 case3 - -RELX_CONF = emqx-rel/relx.config -LIBCOAP_GIT = libcoap/README.md - -all: clean_result $(RELX_CONF) $(LIBCOAP_GIT) start_broker clean_result case1 case2 case3 case4 stop_broker - @echo " " - @echo " test complete" - @echo " " - -clean_result: - -rm -f case*.txt - - -start_broker: - -rm -f emqx-rel/_rel/emqx/log/* - -emqx-rel/_rel/emqx/bin/emqx stop - sleep 1 - emqx-rel/_rel/emqx/bin/emqx start - sleep 1 - emqx-rel/_rel/emqx/bin/emqx_ctl plugins load emqx_coap - -stop_broker: - -emqx-rel/_rel/emqx/bin/emqx stop - -case1: - libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" > case1_output.txt & - sleep 1 - libcoap/examples/coap-client -m put -e w123G45 "coap://127.0.0.1/mqtt/topic1?c=client2&u=mike&p=pw12" - sleep 6 - python check_result.py case1 case1_output.txt==w123G45 - -case2: - # subscribe to topic="x/y" - libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/x%2Fy?c=client3&u=tom&p=secret" > case2_output1.txt & - # subscribe to topic="+/z" - libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/%2B%2Fz?c=client4&u=mike&p=pw12" > case2_output2.txt & - sleep 1 - # publish to topic="x/y" - libcoap/examples/coap-client -m put -e big9wolf "coap://127.0.0.1/mqtt/x%2Fy?c=client5&u=sun&p=pw3" - # publish to topic="p/z" - libcoap/examples/coap-client -m put -e black2ant "coap://127.0.0.1/mqtt/p%2Fz?c=client5&u=sun&p=pw3" - sleep 6 - python check_result.py case2 case2_output1.txt==big9wolf case2_output1.txt!=black2ant case2_output2.txt!=big9wolf case2_output2.txt==black2ant - -case3: - libcoap/examples/coap-client -m get -T tk12 -s 5 "coap://127.0.0.1/mqtt/a%2Fb?c=client3&u=tom&p=secret" > case3_output1.txt & - libcoap/examples/coap-client -m get -T tk34 -s 5 "coap://127.0.0.1/mqtt/c%2Fd?c=client3&u=tom&p=secret" > case3_output2.txt & - sleep 1 - libcoap/examples/coap-client -m put -e big9wolf "coap://127.0.0.1/mqtt/c%2Fd?c=client5&u=sun&p=pw3" - libcoap/examples/coap-client -m put -e black2ant "coap://127.0.0.1/mqtt/a%2Fb?c=client5&u=sun&p=pw3" - sleep 6 - python check_result.py case3 case3_output1.txt==black2ant case3_output2.txt==big9wolf case3_output2.txt!=black2ant - - - -case4: - # reload emqx_coap, does it work as expected? - sleep 1 - emqx-rel/_rel/emqx/bin/emqx_ctl plugins unload emqx_coap - sleep 1 - emqx-rel/_rel/emqx/bin/emqx_ctl plugins load emqx_coap - sleep 1 - libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" > case4_output.txt & - sleep 1 - libcoap/examples/coap-client -m put -e w6J3G45 "coap://127.0.0.1/mqtt/topic1?c=client2&u=mike&p=pw12" - sleep 6 - python check_result.py case4 case4_output.txt==w6J3G45 - - - - -$(RELX_CONF): - git clone https://github.com/emqx/emqx-rel.git - git clone https://github.com/emqx/emq-coap.git - @echo "update emq-coap with this development code" - mv emq-coap emqx_coap - -rm -rf emqx_coap/etc - -rm -rf emqx_coap/include - -rm -rf emqx_coap/priv - -rm -rf emqx_coap/src - -rm -rf emqx_coap/Makefile - cp -rf ../etc emqx_coap/ - cp -rf ../include emqx_coap/ - cp -rf ../priv emqx_coap/ - cp -rf ../src emqx_coap/ - cp -rf ../Makefile emqx_coap/Makefile - -mkdir emqx-rel/deps - mv emqx_coap emqx-rel/deps/ - @echo "start building ..." - make -C emqx-rel -f Makefile - - -coap: $(LIBCOAP_GIT) - @echo "make coap" - -$(LIBCOAP_GIT): - git clone -b v4.1.2 http://github.com/obgm/libcoap - cd libcoap && ./autogen.sh && ./configure --enable-documentation=no --enable-tests=no - make -C libcoap -f Makefile - -r: rebuild_emq - # r short for rebuild_emq - @echo " rebuild complete " - -rebuild_emq: - -emqx-rel/_rel/emqx/bin/emqx stop - -rm -rf emqx-rel/deps/emqx_coap/etc - -rm -rf emqx-rel/deps/emqx_coap/include - -rm -rf emqx-rel/deps/emqx_coap/priv - -rm -rf emqx-rel/deps/emqx_coap/src - -rm -rf emqx-rel/deps/emqx_coap/Makefile - cp -rf ../etc emqx-rel/deps/emqx_coap/ - cp -rf ../include emqx-rel/deps/emqx_coap/ - cp -rf ../priv emqx-rel/deps/emqx_coap/ - cp -rf ../src emqx-rel/deps/emqx_coap/ - cp -rf ../Makefile emqx-rel/deps/emqx_coap/Makefile - make -C emqx-rel -f Makefile - -clean: clean_result - -rm -f client/*.exe - -rm -f client/*.o - -rm -rf emqx-rel - -rm -rf libcoap - -lazy: clean_result start_broker case2 stop_broker - # custom your command here - @echo "you are so lazy" - diff --git a/apps/emqx_coap/intergration_test/README.md b/apps/emqx_coap/intergration_test/README.md deleted file mode 100644 index eb3507923..000000000 --- a/apps/emqx_coap/intergration_test/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Integration test for emq-coap -====== - -execute following command -``` -make -``` - diff --git a/apps/emqx_coap/intergration_test/check_result.py b/apps/emqx_coap/intergration_test/check_result.py deleted file mode 100644 index f9baaefae..000000000 --- a/apps/emqx_coap/intergration_test/check_result.py +++ /dev/null @@ -1,52 +0,0 @@ -import sys - - -def have_string(filename, text): - data = open(filename, "rb").read() - if data.find(text) > 0: - return True - else: - return False - - -def mark(case_number, result, description): - if result: - f = open(case_number+"_PASS.txt", "wb") - f.close() - print("\n\n"+case_number+" PASS\n\n") - else: - f = open(case_number+"_FAIL.txt", "wb") - f.write(description) - f.close() - print("\n\n"+case_number+" FAIL\n\n") - -def parse_condition(condition): - if condition.find("==") > 0: - r = condition.split("==") - return r[0], r[1], True - elif condition.find("!=") > 0: - r = condition.split("!=") - return r[0], r[1], False - else: - print("\ncondition syntax error\n\n\n") - sys.exit("condition syntax error") - - -def main(): - case_number = sys.argv[1] - description = "" - conclustion = True - for condition in sys.argv[2:]: - filename, text, result = parse_condition(condition) - if have_string(filename, text) == result: - pass - else: - conclustion = False - description = description + "\n" + condition + " failed\n" - - mark(case_number, conclustion, description) - - -if __name__ == "__main__": - main() - diff --git a/apps/emqx_coap/rebar.config b/apps/emqx_coap/rebar.config deleted file mode 100644 index 0f8759b8a..000000000 --- a/apps/emqx_coap/rebar.config +++ /dev/null @@ -1,4 +0,0 @@ -{deps, - [ - {gen_coap, {git, "https://github.com/emqx/gen_coap", {tag, "v0.3.2"}}} - ]}. diff --git a/apps/emqx_coap/test/emqx_coap_SUITE.erl b/apps/emqx_coap/test/emqx_coap_SUITE.erl deleted file mode 100644 index 9618425a3..000000000 --- a/apps/emqx_coap/test/emqx_coap_SUITE.erl +++ /dev/null @@ -1,319 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(emqx_coap_SUITE). - --compile(export_all). --compile(nowarn_export_all). - --include_lib("gen_coap/include/coap.hrl"). --include_lib("eunit/include/eunit.hrl"). --include_lib("emqx/include/emqx.hrl"). - --define(LOGT(Format, Args), ct:pal(Format, Args)). - -all() -> emqx_ct:all(?MODULE). - -init_per_suite(Config) -> - emqx_ct_helpers:start_apps([emqx_coap], fun set_special_cfg/1), - Config. - -set_special_cfg(emqx_coap) -> - Opts = application:get_env(emqx_coap, dtls_opts,[]), - Opts2 = [{keyfile, emqx_ct_helpers:deps_path(emqx, "etc/certs/key.pem")}, - {certfile, emqx_ct_helpers:deps_path(emqx, "etc/certs/cert.pem")}], - application:set_env(emqx_coap, dtls_opts, emqx_misc:merge_opts(Opts, Opts2)), - application:set_env(emqx_coap, enable_stats, true); -set_special_cfg(_) -> - ok. - -end_per_suite(Config) -> - emqx_ct_helpers:stop_apps([emqx_coap]), - Config. - -%%-------------------------------------------------------------------- -%% Test Cases -%%-------------------------------------------------------------------- - -t_publish(_Config) -> - Topic = <<"abc">>, Payload = <<"123">>, - TopicStr = binary_to_list(Topic), - URI = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - - %% Sub topic first - emqx:subscribe(Topic), - - Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - {ok, changed, _} = Reply, - - receive - {deliver, Topic, Msg} -> - ?assertEqual(Topic, Msg#message.topic), - ?assertEqual(Payload, Msg#message.payload) - after - 500 -> - ?assert(false) - end. - -t_publish_acl_deny(_Config) -> - Topic = <<"abc">>, Payload = <<"123">>, - TopicStr = binary_to_list(Topic), - URI = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - - %% Sub topic first - emqx:subscribe(Topic), - - ok = meck:new(emqx_access_control, [non_strict, passthrough, no_history]), - ok = meck:expect(emqx_access_control, authorize, 3, deny), - Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?assertEqual({error,forbidden}, Reply), - ok = meck:unload(emqx_access_control), - receive - {deliver, Topic, Msg} -> ct:fail({unexpected, {Topic, Msg}}) - after - 500 -> ok - end. - -t_observe(_Config) -> - Topic = <<"abc">>, TopicStr = binary_to_list(Topic), - Payload = <<"123">>, - Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), - ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), - - [SubPid] = emqx:subscribers(Topic), - ?assert(is_pid(SubPid)), - - %% Publish a message - emqx:publish(emqx_message:make(Topic, Payload)), - - Notif = receive_notification(), - ?LOGT("observer get Notif=~p", [Notif]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, - ?assertEqual(Payload, PayloadRecv), - - er_coap_observer:stop(Pid), - timer:sleep(100), - - [] = emqx:subscribers(Topic). - -t_observe_acl_deny(_Config) -> - Topic = <<"abc">>, TopicStr = binary_to_list(Topic), - Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - ok = meck:new(emqx_access_control, [non_strict, passthrough, no_history]), - ok = meck:expect(emqx_access_control, authorize, 3, deny), - ?assertEqual({error,forbidden}, er_coap_observer:observe(Uri)), - [] = emqx:subscribers(Topic), - ok = meck:unload(emqx_access_control). - -t_observe_wildcard(_Config) -> - Topic = <<"+/b">>, TopicStr = emqx_http_lib:uri_encode(binary_to_list(Topic)), - Payload = <<"123">>, - Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), - ?LOGT("observer Uri=~p, Pid=~p, N=~p, Code=~p, Content=~p", [Uri, Pid, N, Code, Content]), - - [SubPid] = emqx:subscribers(Topic), - ?assert(is_pid(SubPid)), - - %% Publish a message - emqx:publish(emqx_message:make(<<"a/b">>, Payload)), - - Notif = receive_notification(), - ?LOGT("observer get Notif=~p", [Notif]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, - ?assertEqual(Payload, PayloadRecv), - - er_coap_observer:stop(Pid), - timer:sleep(100), - - [] = emqx:subscribers(Topic). - -t_observe_pub(_Config) -> - Topic = <<"+/b">>, TopicStr = emqx_http_lib:uri_encode(binary_to_list(Topic)), - Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", - {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), - ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), - - [SubPid] = emqx:subscribers(Topic), - ?assert(is_pid(SubPid)), - - Topic2 = <<"a/b">>, Payload2 = <<"UFO">>, - TopicStr2 = emqx_http_lib:uri_encode(binary_to_list(Topic2)), - URI2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", - - Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = Payload2}), - {ok,changed, _} = Reply2, - - Notif2 = receive_notification(), - ?LOGT("observer get Notif2=~p", [Notif2]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv2}} = Notif2, - ?assertEqual(Payload2, PayloadRecv2), - - Topic3 = <<"j/b">>, Payload3 = <<"ET629">>, - TopicStr3 = emqx_http_lib:uri_encode(binary_to_list(Topic3)), - URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=mike&p=guess", - Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), - {ok,changed, _} = Reply3, - - Notif3 = receive_notification(), - ?LOGT("observer get Notif3=~p", [Notif3]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv3}} = Notif3, - ?assertEqual(Payload3, PayloadRecv3), - - er_coap_observer:stop(Pid). - -t_one_clientid_sub_2_topics(_Config) -> - Topic1 = <<"abc">>, TopicStr1 = binary_to_list(Topic1), - Payload1 = <<"123">>, - Uri1 = "coap://127.0.0.1/mqtt/"++TopicStr1++"?c=client1&u=tom&p=secret", - {ok, Pid1, N1, Code1, Content1} = er_coap_observer:observe(Uri1), - ?LOGT("observer 1 Pid=~p, N=~p, Code=~p, Content=~p", [Pid1, N1, Code1, Content1]), - - [SubPid] = emqx:subscribers(Topic1), - ?assert(is_pid(SubPid)), - - Topic2 = <<"x/y">>, TopicStr2 = emqx_http_lib:uri_encode(binary_to_list(Topic2)), - Payload2 = <<"456">>, - Uri2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", - {ok, Pid2, N2, Code2, Content2} = er_coap_observer:observe(Uri2), - ?LOGT("observer 2 Pid=~p, N=~p, Code=~p, Content=~p", [Pid2, N2, Code2, Content2]), - - [SubPid] = emqx:subscribers(Topic2), - ?assert(is_pid(SubPid)), - - emqx:publish(emqx_message:make(Topic1, Payload1)), - - Notif1 = receive_notification(), - ?LOGT("observer 1 get Notif=~p", [Notif1]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv1}} = Notif1, - ?assertEqual(Payload1, PayloadRecv1), - - emqx:publish(emqx_message:make(Topic2, Payload2)), - - Notif2 = receive_notification(), - ?LOGT("observer 2 get Notif=~p", [Notif2]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv2}} = Notif2, - ?assertEqual(Payload2, PayloadRecv2), - - er_coap_observer:stop(Pid1), - er_coap_observer:stop(Pid2). - -t_invalid_parameter(_Config) -> - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% "cid=client2" is invaid - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - Topic3 = <<"a/b">>, Payload3 = <<"ET629">>, - TopicStr3 = emqx_http_lib:uri_encode(binary_to_list(Topic3)), - URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?cid=client2&u=tom&p=simple", - Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), - ?assertMatch({error,bad_request}, Reply3), - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% "what=hello" is invaid - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - URI4 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?what=hello", - Reply4 = er_coap_client:request(put, URI4, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), - ?assertMatch({error, bad_request}, Reply4). - -t_invalid_topic(_Config) -> - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% "a/b" is a valid topic string - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - Topic3 = <<"a/b">>, Payload3 = <<"ET629">>, - TopicStr3 = binary_to_list(Topic3), - URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=tom&p=simple", - Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), - ?assertMatch({ok,changed,_Content}, Reply3), - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% "+?#" is invaid topic string - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - URI4 = "coap://127.0.0.1/mqtt/"++"+?#"++"?what=hello", - Reply4 = er_coap_client:request(put, URI4, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), - ?assertMatch({error,bad_request}, Reply4). - -% mqtt connection kicked by coap with same client id -t_kick_1(_Config) -> - URI = "coap://127.0.0.1/mqtt/abc?c=clientid&u=tom&p=secret", - % workaround: emqx:subscribe does not kick same client id. - spawn_monitor(fun() -> - {ok, C} = emqtt:start_link([{host, "localhost"}, - {clientid, <<"clientid">>}, - {username, <<"plain">>}, - {password, <<"plain">>}]), - {ok, _} = emqtt:connect(C) end), - er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, - payload = <<"123">>}), - receive - {'DOWN', _, _, _, _} -> ok - after 2000 -> - ?assert(false) - end. - -% mqtt connection kicked by coap with same client id -t_acl(Config) -> - OldPath = emqx:get_env(plugins_etc_dir), - application:set_env(emqx, plugins_etc_dir, - emqx_ct_helpers:deps_path(emqx_authz, "test")), - Conf = #{<<"authz">> => - #{<<"rules">> => - [#{<<"principal">> =>#{<<"username">> => <<"coap">>}, - <<"permission">> => deny, - <<"topics">> => [<<"abc">>], - <<"action">> => <<"publish">>} - ]}}, - ok = file:write_file(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf'), jsx:encode(Conf)), - application:ensure_all_started(emqx_authz), - - emqx:subscribe(<<"abc">>), - URI = "coap://127.0.0.1/mqtt/adbc?c=client1&u=coap&p=secret", - er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, - payload = <<"123">>}), - receive - _Something -> ?assert(false) - after 2000 -> - ok - end, - - ok = emqx_hooks:del('client.authorize', {emqx_authz, authorize}), - file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), - application:set_env(emqx, plugins_etc_dir, OldPath), - application:stop(emqx_authz). - -t_stats(_) -> - ok. - -t_auth_failure(_) -> - ok. - -t_qos_supprot(_) -> - ok. - -%%-------------------------------------------------------------------- -%% Helpers - -receive_notification() -> - receive - {coap_notify, Pid, N2, Code2, Content2} -> - {coap_notify, Pid, N2, Code2, Content2} - after 2000 -> - receive_notification_timeout - end. - -testdir(DataPath) -> - Ls = filename:split(DataPath), - filename:join(lists:sublist(Ls, 1, length(Ls) - 1)). diff --git a/apps/emqx_coap/test/emqx_coap_pubsub_SUITE.erl b/apps/emqx_coap/test/emqx_coap_pubsub_SUITE.erl deleted file mode 100644 index c018b9165..000000000 --- a/apps/emqx_coap/test/emqx_coap_pubsub_SUITE.erl +++ /dev/null @@ -1,677 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(emqx_coap_pubsub_SUITE). - --compile(export_all). --compile(nowarn_export_all). - --include_lib("gen_coap/include/coap.hrl"). --include_lib("eunit/include/eunit.hrl"). --include_lib("emqx/include/emqx.hrl"). - --define(LOGT(Format, Args), ct:pal(Format, Args)). - -all() -> emqx_ct:all(?MODULE). - -init_per_suite(Config) -> - emqx_ct_helpers:start_apps([emqx_coap], fun set_special_cfg/1), - Config. - -set_special_cfg(emqx_coap) -> - application:set_env(emqx_coap, enable_stats, true); -set_special_cfg(_) -> - ok. - -end_per_suite(Config) -> - emqx_ct_helpers:stop_apps([emqx_coap]), - Config. - -%%-------------------------------------------------------------------- -%% Test Cases -%%-------------------------------------------------------------------- - -t_update_max_age(_Config) -> - TopicInPayload = <<"topic1">>, - Payload = <<";ct=42">>, - Payload1 = <<";ct=50">>, - URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - URI2 = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - timer:sleep(50), - - %% post to create the same topic but with different max age and ct value in payload - Reply1 = er_coap_client:request(post, URI, #coap_content{max_age = 70, format = <<"application/link-format">>, payload = Payload1}), - {ok,created, #coap_content{location_path = LocPath}} = Reply1, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{TopicInPayload, MaxAge2, CT2, _ResPayload, _TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?assertEqual(70, MaxAge2), - ?assertEqual(<<"50">>, CT2), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). - -t_create_subtopic(_Config) -> - TopicInPayload = <<"topic1">>, - TopicInPayloadStr = "topic1", - Payload = <<";ct=42">>, - URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - RealURI = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", - - Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - timer:sleep(50), - - %% post to create the a sub topic - SubPayload = <<";ct=42">>, - SubTopicInPayloadStr = "subtopic", - SubURI = "coap://127.0.0.1/ps/"++TopicInPayloadStr++"?c=client1&u=tom&p=secret", - SubRealURI = "coap://127.0.0.1/ps/"++TopicInPayloadStr++"/"++SubTopicInPayloadStr++"?c=client1&u=tom&p=secret", - FullTopic = list_to_binary(TopicInPayloadStr++"/"++SubTopicInPayloadStr), - Reply1 = er_coap_client:request(post, SubURI, #coap_content{format = <<"application/link-format">>, payload = SubPayload}), - ?LOGT("Reply =~p", [Reply1]), - {ok,created, #coap_content{location_path = LocPath1}} = Reply1, - ?assertEqual([<<"/ps/topic1/subtopic">>] ,LocPath1), - [{FullTopic, MaxAge2, CT2, _ResPayload, _}] = emqx_coap_pubsub_topics:lookup_topic_info(FullTopic), - ?assertEqual(60, MaxAge2), - ?assertEqual(<<"42">>, CT2), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, SubRealURI), - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, RealURI). - -t_over_max_age(_Config) -> - TopicInPayload = <<"topic1">>, - Payload = <<";ct=42">>, - URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{max_age = 2, format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(2, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - timer:sleep(3000), - ?assertEqual(true, emqx_coap_pubsub_topics:is_topic_timeout(TopicInPayload)). - -t_refreash_max_age(_Config) -> - TopicInPayload = <<"topic1">>, - Payload = <<";ct=42">>, - Payload1 = <<";ct=50">>, - URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - RealURI = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?LOGT("TimeStamp=~p", [TimeStamp]), - ?assertEqual(5, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - timer:sleep(3000), - - %% post to create the same topic, the max age timer will be restarted with the new max age value - Reply1 = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/link-format">>, payload = Payload1}), - {ok,created, #coap_content{location_path = LocPath}} = Reply1, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{TopicInPayload, MaxAge2, CT2, _ResPayload, TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(TopicInPayload), - ?LOGT("TimeStamp1=~p", [TimeStamp1]), - ?assertEqual(5, MaxAge2), - ?assertEqual(<<"50">>, CT2), - - timer:sleep(3000), - ?assertEqual(false, emqx_coap_pubsub_topics:is_topic_timeout(TopicInPayload)), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, RealURI). - -t_case01_publish_post(_Config) -> - timer:sleep(100), - MainTopic = <<"maintopic">>, - TopicInPayload = <<"topic1">>, - Payload = <<";ct=42">>, - MainTopicStr = binary_to_list(MainTopic), - - %% post to create topic maintopic/topic1 - URI1 = "coap://127.0.0.1/ps/"++MainTopicStr++"?c=client1&u=tom&p=secret", - FullTopic = list_to_binary(MainTopicStr++"/"++binary_to_list(TopicInPayload)), - Reply1 = er_coap_client:request(post, URI1, #coap_content{format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply1]), - {ok,created, #coap_content{location_path = LocPath1}} = Reply1, - ?assertEqual([<<"/ps/maintopic/topic1">>] ,LocPath1), - [{FullTopic, MaxAge, CT2, <<>>, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(FullTopic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT2), - - %% post to publish message to topic maintopic/topic1 - FullTopicStr = emqx_http_lib:uri_encode(binary_to_list(FullTopic)), - URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", - PubPayload = <<"PUBLISH">>, - - %% Sub topic first - emqx:subscribe(FullTopic), - - Reply2 = er_coap_client:request(post, URI2, #coap_content{format = <<"application/octet-stream">>, payload = PubPayload}), - ?LOGT("Reply =~p", [Reply2]), - {ok,changed, _} = Reply2, - TopicInfo = [{FullTopic, MaxAge, CT2, PubPayload, _TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(FullTopic), - ?LOGT("the topic info =~p", [TopicInfo]), - - assert_recv(FullTopic, PubPayload), - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). - -t_case02_publish_post(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% Sub topic first - emqx:subscribe(Topic), - - %% post to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT), - - assert_recv(Topic, Payload), - - %% post to publish a new message to the same topic "topic1" with different payload - NewPayload = <<"newpayload">>, - Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = NewPayload}), - ?LOGT("Reply =~p", [Reply1]), - {ok,changed, _} = Reply1, - [{Topic, MaxAge, CT, NewPayload, _TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - - assert_recv(Topic, NewPayload), - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case03_publish_post(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% Sub topic first - emqx:subscribe(Topic), - - %% post to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT), - - assert_recv(Topic, Payload), - - %% post to publish a new message to the same topic "topic1", but the ct is not same as created - NewPayload = <<"newpayload">>, - Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/exi">>, payload = NewPayload}), - ?LOGT("Reply =~p", [Reply1]), - ?assertEqual({error,bad_request}, Reply1), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case04_publish_post(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% post to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(5, MaxAge), - ?assertEqual(<<"42">>, CT), - - %% after max age timeout, the topic still exists but the status is timeout - timer:sleep(6000), - ?assertEqual(true, emqx_coap_pubsub_topics:is_topic_timeout(Topic)), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case01_publish_put(_Config) -> - MainTopic = <<"maintopic">>, - TopicInPayload = <<"topic1">>, - Payload = <<";ct=42">>, - MainTopicStr = binary_to_list(MainTopic), - - %% post to create topic maintopic/topic1 - URI1 = "coap://127.0.0.1/ps/"++MainTopicStr++"?c=client1&u=tom&p=secret", - FullTopic = list_to_binary(MainTopicStr++"/"++binary_to_list(TopicInPayload)), - Reply1 = er_coap_client:request(post, URI1, #coap_content{format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply1]), - {ok,created, #coap_content{location_path = LocPath1}} = Reply1, - ?assertEqual([<<"/ps/maintopic/topic1">>] ,LocPath1), - [{FullTopic, MaxAge, CT2, <<>>, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(FullTopic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT2), - - %% put to publish message to topic maintopic/topic1 - FullTopicStr = emqx_http_lib:uri_encode(binary_to_list(FullTopic)), - URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", - PubPayload = <<"PUBLISH">>, - - %% Sub topic first - emqx:subscribe(FullTopic), - - Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = PubPayload}), - ?LOGT("Reply =~p", [Reply2]), - {ok,changed, _} = Reply2, - [{FullTopic, MaxAge, CT2, PubPayload, _TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(FullTopic), - - assert_recv(FullTopic, PubPayload), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). - -t_case02_publish_put(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% Sub topic first - emqx:subscribe(Topic), - - %% put to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT), - - assert_recv(Topic, Payload), - - %% put to publish a new message to the same topic "topic1" with different payload - NewPayload = <<"newpayload">>, - Reply1 = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = NewPayload}), - ?LOGT("Reply =~p", [Reply1]), - {ok,changed, _} = Reply1, - [{Topic, MaxAge, CT, NewPayload, _TimeStamp1}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - - assert_recv(Topic, NewPayload), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case03_publish_put(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% Sub topic first - emqx:subscribe(Topic), - - %% put to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(60, MaxAge), - ?assertEqual(<<"42">>, CT), - - assert_recv(Topic, Payload), - - %% put to publish a new message to the same topic "topic1", but the ct is not same as created - NewPayload = <<"newpayload">>, - Reply1 = er_coap_client:request(put, URI, #coap_content{format = <<"application/exi">>, payload = NewPayload}), - ?LOGT("Reply =~p", [Reply1]), - ?assertEqual({error,bad_request}, Reply1), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case04_publish_put(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"payload">>, - - %% put to publish a new topic "topic1", and the topic is created - URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(put, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/topic1">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(5, MaxAge), - ?assertEqual(<<"42">>, CT), - - %% after max age timeout, no publish message to the same topic, the topic info will be deleted - %%%%%%%%%%%%%%%%%%%%%%%%%% - % but there is one thing to do is we don't count in the publish message received from emqx(from other node).TBD!!!!!!!!!!!!! - %%%%%%%%%%%%%%%%%%%%%%%%%% - timer:sleep(6000), - ?assertEqual(true, emqx_coap_pubsub_topics:is_topic_timeout(Topic)), - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case01_subscribe(_Config) -> - Topic = <<"topic1">>, - Payload1 = <<";ct=42">>, - timer:sleep(100), - - %% First post to create a topic "topic1" - Uri = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/link-format">>, payload = Payload1}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = [LocPath]}} = Reply, - ?assertEqual(<<"/ps/topic1">> ,LocPath), - TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - %% Subscribe the topic - Uri1 = "coap://127.0.0.1"++binary_to_list(LocPath)++"?c=client1&u=tom&p=secret", - {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri1), - ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), - - [SubPid] = emqx:subscribers(Topic), - ?assert(is_pid(SubPid)), - - %% Publish a message - Payload = <<"123">>, - emqx:publish(emqx_message:make(Topic, Payload)), - - Notif = receive_notification(), - ?LOGT("observer get Notif=~p", [Notif]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, - - ?assertEqual(Payload, PayloadRecv), - - %% GET to read the publish message of the topic - Reply1 = er_coap_client:request(get, Uri1), - ?LOGT("Reply=~p", [Reply1]), - {ok,content, #coap_content{payload = <<"123">>}} = Reply1, - - er_coap_observer:stop(Pid), - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri1). - -t_case02_subscribe(_Config) -> - Topic = <<"a/b">>, - TopicStr = binary_to_list(Topic), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - Payload = <<"payload">>, - - %% post to publish a new topic "a/b", and the topic is created - URI = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/a/b">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(5, MaxAge), - ?assertEqual(<<"42">>, CT), - - %% Wait for the max age of the timer expires - timer:sleep(6000), - ?assertEqual(true, emqx_coap_pubsub_topics:is_topic_timeout(Topic)), - - %% Subscribe to the timeout topic "a/b", still successfully,got {ok, nocontent} Method - Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - Reply1 = {ok, Pid, _N, nocontent, _} = er_coap_observer:observe(Uri), - ?LOGT("Subscribe Reply=~p", [Reply1]), - - [SubPid] = emqx:subscribers(Topic), - ?assert(is_pid(SubPid)), - - %% put to publish to topic "a/b" - Reply2 = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - {ok,changed, #coap_content{}} = Reply2, - [{Topic, MaxAge1, CT, Payload, TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT), - ?assertEqual(false, TimeStamp =:= timeout), - - %% Publish a message - emqx:publish(emqx_message:make(Topic, Payload)), - - Notif = receive_notification(), - ?LOGT("observer get Notif=~p", [Notif]), - {coap_notify, _, _, {ok,content}, #coap_content{payload = Payload}} = Notif, - - er_coap_observer:stop(Pid), - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case03_subscribe(_Config) -> - %% Subscribe to the unexisted topic "a/b", got not_found - Topic = <<"a/b">>, - TopicStr = binary_to_list(Topic), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - {error, not_found} = er_coap_observer:observe(Uri), - - [] = emqx:subscribers(Topic). - -t_case04_subscribe(_Config) -> - %% Subscribe to the wildcad topic "+/b", got bad_request - Topic = <<"+/b">>, - TopicStr = binary_to_list(Topic), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - {error, bad_request} = er_coap_observer:observe(Uri), - - [] = emqx:subscribers(Topic). - -t_case01_read(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"PubPayload">>, - timer:sleep(100), - - %% First post to create a topic "topic1" - Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = [LocPath]}} = Reply, - ?assertEqual(<<"/ps/topic1">> ,LocPath), - TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - %% GET to read the publish message of the topic - timer:sleep(1000), - Reply1 = er_coap_client:request(get, Uri), - ?LOGT("Reply=~p", [Reply1]), - {ok,content, #coap_content{payload = Payload}} = Reply1, - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). - -t_case02_read(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"PubPayload">>, - timer:sleep(100), - - %% First post to publish a topic "topic1" - Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = [LocPath]}} = Reply, - ?assertEqual(<<"/ps/topic1">> ,LocPath), - TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - %% GET to read the publish message of unmatched format, got bad_request - Reply1 = er_coap_client:request(get, Uri, #coap_content{format = <<"application/json">>}), - ?LOGT("Reply=~p", [Reply1]), - {error, bad_request} = Reply1, - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). - -t_case03_read(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - timer:sleep(100), - - %% GET to read the nexisted topic "topic1", got not_found - Reply = er_coap_client:request(get, Uri), - ?LOGT("Reply=~p", [Reply]), - {error, not_found} = Reply. - -t_case04_read(_Config) -> - Topic = <<"topic1">>, - TopicStr = binary_to_list(Topic), - Payload = <<"PubPayload">>, - timer:sleep(100), - - %% First post to publish a topic "topic1" - Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = [LocPath]}} = Reply, - ?assertEqual(<<"/ps/topic1">> ,LocPath), - TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?LOGT("lookup topic info=~p", [TopicInfo]), - ?assertEqual(60, MaxAge1), - ?assertEqual(<<"42">>, CT1), - - %% GET to read the publish message of wildcard topic, got bad_request - WildTopic = binary_to_list(<<"+/topic1">>), - Uri1 = "coap://127.0.0.1/ps/"++WildTopic++"?c=client1&u=tom&p=secret", - Reply1 = er_coap_client:request(get, Uri1, #coap_content{format = <<"application/json">>}), - ?LOGT("Reply=~p", [Reply1]), - {error, bad_request} = Reply1, - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). - -t_case05_read(_Config) -> - Topic = <<"a/b">>, - TopicStr = binary_to_list(Topic), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - Payload = <<"payload">>, - - %% post to publish a new topic "a/b", and the topic is created - URI = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/a/b">>] ,LocPath), - [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_pubsub_topics:lookup_topic_info(Topic), - ?assertEqual(5, MaxAge), - ?assertEqual(<<"42">>, CT), - - %% Wait for the max age of the timer expires - timer:sleep(6000), - ?assertEqual(true, emqx_coap_pubsub_topics:is_topic_timeout(Topic)), - - %% GET to read the expired publish message, supposed to get {ok, nocontent}, but now got {ok, content} - Reply1 = er_coap_client:request(get, URI), - ?LOGT("Reply=~p", [Reply1]), - {ok, content, #coap_content{payload = <<>>}}= Reply1, - - {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). - -t_case01_delete(_Config) -> - TopicInPayload = <<"a/b">>, - TopicStr = binary_to_list(TopicInPayload), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - Payload = list_to_binary("<"++PercentEncodedTopic++">;ct=42"), - URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", - - %% Client post to CREATE topic "a/b" - Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), - ?LOGT("Reply =~p", [Reply]), - {ok,created, #coap_content{location_path = LocPath}} = Reply, - ?assertEqual([<<"/ps/a/b">>] ,LocPath), - - %% Client post to CREATE topic "a/b/c" - TopicInPayload1 = <<"a/b/c">>, - PercentEncodedTopic1 = emqx_http_lib:uri_encode(binary_to_list(TopicInPayload1)), - Payload1 = list_to_binary("<"++PercentEncodedTopic1++">;ct=42"), - Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload1}), - ?LOGT("Reply =~p", [Reply1]), - {ok,created, #coap_content{location_path = LocPath1}} = Reply1, - ?assertEqual([<<"/ps/a/b/c">>] ,LocPath1), - - timer:sleep(50), - - %% DELETE the topic "a/b" - UriD = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - ReplyD = er_coap_client:request(delete, UriD), - ?LOGT("Reply=~p", [ReplyD]), - {ok, deleted, #coap_content{}}= ReplyD, - - timer:sleep(300), %% Waiting gen_server:cast/2 for deleting operation - ?assertEqual(false, emqx_coap_pubsub_topics:is_topic_existed(TopicInPayload)), - ?assertEqual(false, emqx_coap_pubsub_topics:is_topic_existed(TopicInPayload1)). - -t_case02_delete(_Config) -> - TopicInPayload = <<"a/b">>, - TopicStr = binary_to_list(TopicInPayload), - PercentEncodedTopic = emqx_http_lib:uri_encode(TopicStr), - - %% DELETE the unexisted topic "a/b" - Uri1 = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", - Reply1 = er_coap_client:request(delete, Uri1), - ?LOGT("Reply=~p", [Reply1]), - {error, not_found} = Reply1. - -t_case13_emit_stats_test(_Config) -> - ok. - -%%-------------------------------------------------------------------- -%% Internal functions - -receive_notification() -> - receive - {coap_notify, Pid, N2, Code2, Content2} -> - {coap_notify, Pid, N2, Code2, Content2} - after 2000 -> - receive_notification_timeout - end. - -assert_recv(Topic, Payload) -> - receive - {deliver, _, Msg} -> - ?assertEqual(Topic, Msg#message.topic), - ?assertEqual(Payload, Msg#message.payload) - after - 500 -> - ?assert(false) - end. - diff --git a/apps/emqx_exhook/.gitignore b/apps/emqx_exhook/.gitignore deleted file mode 100644 index da1f0db23..000000000 --- a/apps/emqx_exhook/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -.rebar3 -_* -.eunit -*.o -*.beam -*.plt -*.swp -*.swo -.erlang.cookie -ebin -log -erl_crash.dump -.rebar -logs -_build -.idea -*.iml -rebar3.crashdump -*~ -rebar.lock -data/ -*.conf.rendered -*.pyc -.DS_Store -*.class -Mnesia.nonode@nohost/ -src/emqx_exhook_pb.erl -src/emqx_exhook_v_1_hook_provider_client.erl -src/emqx_exhook_v_1_hook_provider_bhvr.erl diff --git a/apps/emqx_exhook/docs/design-cn.md b/apps/emqx_exhook/docs/design-cn.md deleted file mode 100644 index 6686e96e3..000000000 --- a/apps/emqx_exhook/docs/design-cn.md +++ /dev/null @@ -1,116 +0,0 @@ -# 设计 - -## 动机 - -在 EMQ X Broker v4.1-v4.2 中,我们发布了 2 个插件来扩展 emqx 的编程能力: - -1. `emqx-extension-hook` 提供了使用 Java, Python 向 Broker 挂载钩子的功能 -2. `emqx-exproto` 提供了使用 Java,Python 编写用户自定义协议接入插件的功能 - -但在后续的支持中发现许多难以处理的问题: - -1. 有大量的编程语言需要支持,需要编写和维护如 Go, JavaScript, Lua.. 等语言的驱动。 -2. `erlport` 使用的操作系统的管道进行通信,这让用户代码只能部署在和 emqx 同一个操作系统上。部署方式受到了极大的限制。 -3. 用户程序的启动参数直接打包到 Broker 中,导致用户开发无法实时的进行调试,单步跟踪等。 -4. `erlport` 会占用 `stdin` `stdout`。 - -因此,我们计划重构这部分的实现,其中主要的内容是: -1. 使用 `gRPC` 替换 `erlport`。 -2. 将 `emqx-extension-hook` 重命名为 `emqx-exhook` - - -旧版本的设计:[emqx-extension-hook design in v4.2.0](https://github.com/emqx/emqx-exhook/blob/v4.2.0/docs/design.md) - -## 设计 - -架构如下: - -``` - EMQ X -+========================+ +========+==========+ -| ExHook | | | | -| +----------------+ | gRPC | gRPC | User's | -| | gRPC Client | ------------------> | Server | Codes | -| +----------------+ | (HTTP/2) | | | -| | | | | -+========================+ +========+==========+ -``` - -`emqx-exhook` 通过 gRPC 的方式向用户部署的 gRPC 服务发送钩子的请求,并处理其返回的值。 - - -和 emqx 原生的钩子一致,emqx-exhook 也按照链式的方式执行: - - - -### gRPC 服务示例 - -用户需要实现的方法,和数据类型的定义在 `priv/protos/exhook.proto` 文件中: - -```protobuff -syntax = "proto3"; - -package emqx.exhook.v1; - -service HookProvider { - - rpc OnProviderLoaded(ProviderLoadedRequest) returns (LoadedResponse) {}; - - rpc OnProviderUnloaded(ProviderUnloadedRequest) returns (EmptySuccess) {}; - - rpc OnClientConnect(ClientConnectRequest) returns (EmptySuccess) {}; - - rpc OnClientConnack(ClientConnackRequest) returns (EmptySuccess) {}; - - rpc OnClientConnected(ClientConnectedRequest) returns (EmptySuccess) {}; - - rpc OnClientDisconnected(ClientDisconnectedRequest) returns (EmptySuccess) {}; - - rpc OnClientAuthenticate(ClientAuthenticateRequest) returns (ValuedResponse) {}; - - rpc OnClientCheckAcl(ClientCheckAclRequest) returns (ValuedResponse) {}; - - rpc OnClientSubscribe(ClientSubscribeRequest) returns (EmptySuccess) {}; - - rpc OnClientUnsubscribe(ClientUnsubscribeRequest) returns (EmptySuccess) {}; - - rpc OnSessionCreated(SessionCreatedRequest) returns (EmptySuccess) {}; - - rpc OnSessionSubscribed(SessionSubscribedRequest) returns (EmptySuccess) {}; - - rpc OnSessionUnsubscribed(SessionUnsubscribedRequest) returns (EmptySuccess) {}; - - rpc OnSessionResumed(SessionResumedRequest) returns (EmptySuccess) {}; - - rpc OnSessionDiscarded(SessionDiscardedRequest) returns (EmptySuccess) {}; - - rpc OnSessionTakeovered(SessionTakeoveredRequest) returns (EmptySuccess) {}; - - rpc OnSessionTerminated(SessionTerminatedRequest) returns (EmptySuccess) {}; - - rpc OnMessagePublish(MessagePublishRequest) returns (ValuedResponse) {}; - - rpc OnMessageDelivered(MessageDeliveredRequest) returns (EmptySuccess) {}; - - rpc OnMessageDropped(MessageDroppedRequest) returns (EmptySuccess) {}; - - rpc OnMessageAcked(MessageAckedRequest) returns (EmptySuccess) {}; -} -``` - -### 配置文件示例 - -``` -## 配置 gRPC 服务地址 (HTTP) -## -## s1 为服务器的名称 -exhook.server.s1.url = http://127.0.0.1:9001 - -## 配置 gRPC 服务地址 (HTTPS) -## -## s2 为服务器名称 -exhook.server.s2.url = https://127.0.0.1:9002 -exhook.server.s2.cacertfile = ca.pem -exhook.server.s2.certfile = cert.pem -exhook.server.s2.keyfile = key.pem -``` diff --git a/apps/emqx_exhook/rebar.config b/apps/emqx_exhook/rebar.config deleted file mode 100644 index eafa20d85..000000000 --- a/apps/emqx_exhook/rebar.config +++ /dev/null @@ -1,48 +0,0 @@ -%%-*- mode: erlang -*- -{plugins, - [rebar3_proper, - {grpc_plugin, {git, "https://github.com/HJianBo/grpc_plugin", {tag, "v0.10.2"}}} -]}. - -{deps, - [{grpc, {git, "https://github.com/emqx/grpc-erl", {tag, "0.6.2"}}} -]}. - -{grpc, - [{protos, ["priv/protos"]}, - {gpb_opts, [{module_name_prefix, "emqx_"}, - {module_name_suffix, "_pb"}]} -]}. - -{provider_hooks, - [{pre, [{compile, {grpc, gen}}, - {clean, {grpc, clean}}]} -]}. - -{edoc_opts, [{preprocess, true}]}. - -{erl_opts, [warn_unused_vars, - warn_shadow_vars, - warn_unused_import, - warn_obsolete_guard, - debug_info, - {parse_transform}]}. - -{xref_checks, [undefined_function_calls, undefined_functions, - locals_not_used, deprecated_function_calls, - warnings_as_errors, deprecated_functions]}. -{xref_ignores, [emqx_exhook_pb]}. - -{cover_enabled, true}. -{cover_opts, [verbose]}. -{cover_export_enabled, true}. -{cover_excl_mods, [emqx_exhook_pb, - emqx_exhook_v_1_hook_provider_bhvr, - emqx_exhook_v_1_hook_provider_client]}. - -{profiles, - [{test, - [{deps, - []} - ]} -]}. diff --git a/apps/emqx_exhook/src/emqx_exhook.appup.src b/apps/emqx_exhook/src/emqx_exhook.appup.src deleted file mode 100644 index 26e84d88f..000000000 --- a/apps/emqx_exhook/src/emqx_exhook.appup.src +++ /dev/null @@ -1,23 +0,0 @@ -%% -*-: erlang -*- -{VSN, - [ - {"4.3.1", [ - {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} - ]}, - {"4.3.0", [ - {load_module, emqx_exhook_pb, brutal_purge, soft_purge, []}, - {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} - ]}, - {<<".*">>, []} - ], - [ - {"4.3.1", [ - {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} - ]}, - {"4.3.0", [ - {load_module, emqx_exhook_pb, brutal_purge, soft_purge, []}, - {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} - ]}, - {<<".*">>, []} - ] -}. diff --git a/apps/emqx_exhook/test/emqx_exhook_SUITE.erl b/apps/emqx_exhook/test/emqx_exhook_SUITE.erl deleted file mode 100644 index 5d5a396a5..000000000 --- a/apps/emqx_exhook/test/emqx_exhook_SUITE.erl +++ /dev/null @@ -1,96 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(emqx_exhook_SUITE). - --compile(export_all). --compile(nowarn_export_all). - --include_lib("eunit/include/eunit.hrl"). --include_lib("common_test/include/ct.hrl"). - -%%-------------------------------------------------------------------- -%% Setups -%%-------------------------------------------------------------------- - -all() -> emqx_ct:all(?MODULE). - -init_per_suite(Cfg) -> - _ = emqx_exhook_demo_svr:start(), - emqx_ct_helpers:start_apps([emqx_exhook], fun set_special_cfgs/1), - Cfg. - -end_per_suite(_Cfg) -> - emqx_ct_helpers:stop_apps([emqx_exhook]), - emqx_exhook_demo_svr:stop(). - -set_special_cfgs(emqx) -> - application:set_env(emqx, allow_anonymous, false), - application:set_env(emqx, enable_acl_cache, false), - application:set_env(emqx, plugins_loaded_file, undefined), - application:set_env(emqx, modules_loaded_file, undefined); -set_special_cfgs(emqx_exhook) -> - ok. - -%%-------------------------------------------------------------------- -%% Test cases -%%-------------------------------------------------------------------- - -t_noserver_nohook(_) -> - emqx_exhook:disable(default), - ?assertEqual([], ets:tab2list(emqx_hooks)), - - Opts = proplists:get_value( - default, - application:get_env(emqx_exhook, servers, []) - ), - ok = emqx_exhook:enable(default, Opts), - ?assertNotEqual([], ets:tab2list(emqx_hooks)). - -t_cli_list(_) -> - meck_print(), - ?assertEqual( [[emqx_exhook_server:format(Svr) || Svr <- emqx_exhook:list()]] - , emqx_exhook_cli:cli(["server", "list"]) - ), - unmeck_print(). - -t_cli_enable_disable(_) -> - meck_print(), - ?assertEqual([already_started], emqx_exhook_cli:cli(["server", "enable", "default"])), - ?assertEqual(ok, emqx_exhook_cli:cli(["server", "disable", "default"])), - ?assertEqual([], emqx_exhook_cli:cli(["server", "list"])), - - ?assertEqual([not_running], emqx_exhook_cli:cli(["server", "disable", "default"])), - ?assertEqual(ok, emqx_exhook_cli:cli(["server", "enable", "default"])), - unmeck_print(). - -t_cli_stats(_) -> - meck_print(), - _ = emqx_exhook_cli:cli(["server", "stats"]), - _ = emqx_exhook_cli:cli(x), - unmeck_print(). - -%%-------------------------------------------------------------------- -%% Utils -%%-------------------------------------------------------------------- - -meck_print() -> - meck:new(emqx_ctl, [passthrough, no_history, no_link]), - meck:expect(emqx_ctl, print, fun(_) -> ok end), - meck:expect(emqx_ctl, print, fun(_, Args) -> Args end). - -unmeck_print() -> - meck:unload(emqx_ctl). diff --git a/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl b/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl deleted file mode 100644 index 656788b5e..000000000 --- a/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl +++ /dev/null @@ -1,339 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(emqx_exhook_demo_svr). - --behavior(emqx_exhook_v_1_hook_provider_bhvr). - -%% --export([ start/0 - , stop/0 - , take/0 - , in/1 - ]). - -%% gRPC server HookProvider callbacks --export([ on_provider_loaded/2 - , on_provider_unloaded/2 - , on_client_connect/2 - , on_client_connack/2 - , on_client_connected/2 - , on_client_disconnected/2 - , on_client_authenticate/2 - , on_client_authorize/2 - , on_client_subscribe/2 - , on_client_unsubscribe/2 - , on_session_created/2 - , on_session_subscribed/2 - , on_session_unsubscribed/2 - , on_session_resumed/2 - , on_session_discarded/2 - , on_session_takeovered/2 - , on_session_terminated/2 - , on_message_publish/2 - , on_message_delivered/2 - , on_message_dropped/2 - , on_message_acked/2 - ]). - --define(PORT, 9000). --define(NAME, ?MODULE). - -%%-------------------------------------------------------------------- -%% Server APIs -%%-------------------------------------------------------------------- - -start() -> - Pid = spawn(fun mngr_main/0), - register(?MODULE, Pid), - {ok, Pid}. - -stop() -> - grpc:stop_server(?NAME), - ?MODULE ! stop. - -take() -> - ?MODULE ! {take, self()}, - receive {value, V} -> V - after 5000 -> error(timeout) end. - -in({FunName, Req}) -> - ?MODULE ! {in, FunName, Req}. - -mngr_main() -> - application:ensure_all_started(grpc), - Services = #{protos => [emqx_exhook_pb], - services => #{'emqx.exhook.v1.HookProvider' => emqx_exhook_demo_svr} - }, - Options = [], - Svr = grpc:start_server(?NAME, ?PORT, Services, Options), - mngr_loop([Svr, queue:new(), queue:new()]). - -mngr_loop([Svr, Q, Takes]) -> - receive - {in, FunName, Req} -> - {NQ1, NQ2} = reply(queue:in({FunName, Req}, Q), Takes), - mngr_loop([Svr, NQ1, NQ2]); - {take, From} -> - {NQ1, NQ2} = reply(Q, queue:in(From, Takes)), - mngr_loop([Svr, NQ1, NQ2]); - stop -> - exit(normal) - end. - -reply(Q1, Q2) -> - case queue:len(Q1) =:= 0 orelse - queue:len(Q2) =:= 0 of - true -> {Q1, Q2}; - _ -> - {{value, {Name, V}}, NQ1} = queue:out(Q1), - {{value, From}, NQ2} = queue:out(Q2), - From ! {value, {Name, V}}, - {NQ1, NQ2} - end. - -%%-------------------------------------------------------------------- -%% callbacks -%%-------------------------------------------------------------------- - --spec on_provider_loaded(emqx_exhook_pb:provider_loaded_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:loaded_response(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. - -on_provider_loaded(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{hooks => [ - #{name => <<"client.connect">>}, - #{name => <<"client.connack">>}, - #{name => <<"client.connected">>}, - #{name => <<"client.disconnected">>}, - #{name => <<"client.authenticate">>}, - #{name => <<"client.authorize">>}, - #{name => <<"client.subscribe">>}, - #{name => <<"client.unsubscribe">>}, - #{name => <<"session.created">>}, - #{name => <<"session.subscribed">>}, - #{name => <<"session.unsubscribed">>}, - #{name => <<"session.resumed">>}, - #{name => <<"session.discarded">>}, - #{name => <<"session.takeovered">>}, - #{name => <<"session.terminated">>}, - #{name => <<"message.publish">>}, - #{name => <<"message.delivered">>}, - #{name => <<"message.acked">>}, - #{name => <<"message.dropped">>}]}, Md}. --spec on_provider_unloaded(emqx_exhook_pb:provider_unloaded_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_provider_unloaded(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_connect(emqx_exhook_pb:client_connect_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_connect(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_connack(emqx_exhook_pb:client_connack_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_connack(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_connected(emqx_exhook_pb:client_connected_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_connected(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_disconnected(emqx_exhook_pb:client_disconnected_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_disconnected(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_authenticate(emqx_exhook_pb:client_authenticate_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_authenticate(#{clientinfo := #{username := Username}} = Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - %% some cases for testing - case Username of - <<"baduser">> -> - {ok, #{type => 'STOP_AND_RETURN', - value => {bool_result, false}}, Md}; - <<"gooduser">> -> - {ok, #{type => 'STOP_AND_RETURN', - value => {bool_result, true}}, Md}; - <<"normaluser">> -> - {ok, #{type => 'CONTINUE', - value => {bool_result, true}}, Md}; - _ -> - {ok, #{type => 'IGNORE'}, Md} - end. - --spec on_client_authorize(emqx_exhook_pb:client_authorize_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_authorize(#{clientinfo := #{username := Username}} = Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - %% some cases for testing - case Username of - <<"baduser">> -> - {ok, #{type => 'STOP_AND_RETURN', - value => {bool_result, false}}, Md}; - <<"gooduser">> -> - {ok, #{type => 'STOP_AND_RETURN', - value => {bool_result, true}}, Md}; - <<"normaluser">> -> - {ok, #{type => 'CONTINUE', - value => {bool_result, true}}, Md}; - _ -> - {ok, #{type => 'IGNORE'}, Md} - end. - --spec on_client_subscribe(emqx_exhook_pb:client_subscribe_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_subscribe(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_client_unsubscribe(emqx_exhook_pb:client_unsubscribe_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_client_unsubscribe(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_created(emqx_exhook_pb:session_created_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_created(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_subscribed(emqx_exhook_pb:session_subscribed_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_subscribed(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_unsubscribed(emqx_exhook_pb:session_unsubscribed_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_unsubscribed(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_resumed(emqx_exhook_pb:session_resumed_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_resumed(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_discarded(emqx_exhook_pb:session_discarded_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_discarded(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_takeovered(emqx_exhook_pb:session_takeovered_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_takeovered(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_session_terminated(emqx_exhook_pb:session_terminated_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_session_terminated(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_message_publish(emqx_exhook_pb:message_publish_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_message_publish(#{message := #{from := From} = Msg} = Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - %% some cases for testing - case From of - <<"baduser">> -> - NMsg = Msg#{qos => 0, - topic => <<"">>, - payload => <<"">> - }, - {ok, #{type => 'STOP_AND_RETURN', - value => {message, NMsg}}, Md}; - <<"gooduser">> -> - NMsg = Msg#{topic => From, - payload => From}, - {ok, #{type => 'STOP_AND_RETURN', - value => {message, NMsg}}, Md}; - _ -> - {ok, #{type => 'IGNORE'}, Md} - end. - --spec on_message_delivered(emqx_exhook_pb:message_delivered_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_message_delivered(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_message_dropped(emqx_exhook_pb:message_dropped_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_message_dropped(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. - --spec on_message_acked(emqx_exhook_pb:message_acked_request(), grpc:metadata()) - -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} - | {error, grpc_cowboy_h:error_response()}. -on_message_acked(Req, Md) -> - ?MODULE:in({?FUNCTION_NAME, Req}), - %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), - {ok, #{}, Md}. diff --git a/apps/emqx_exhook/test/props/prop_exhook_hooks.erl b/apps/emqx_exhook/test/props/prop_exhook_hooks.erl deleted file mode 100644 index 12f54eef6..000000000 --- a/apps/emqx_exhook/test/props/prop_exhook_hooks.erl +++ /dev/null @@ -1,531 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2021 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(prop_exhook_hooks). - --include_lib("proper/include/proper.hrl"). --include_lib("eunit/include/eunit.hrl"). - --import(emqx_ct_proper_types, - [ conninfo/0 - , clientinfo/0 - , sessioninfo/0 - , message/0 - , connack_return_code/0 - , topictab/0 - , topic/0 - , subopts/0 - ]). - --define(ALL(Vars, Types, Exprs), - ?SETUP(fun() -> - State = do_setup(), - fun() -> do_teardown(State) end - end, ?FORALL(Vars, Types, Exprs))). - -%%-------------------------------------------------------------------- -%% Properties -%%-------------------------------------------------------------------- - -prop_client_connect() -> - ?ALL({ConnInfo, ConnProps}, - {conninfo(), conn_properties()}, - begin - ok = emqx_hooks:run('client.connect', [ConnInfo, ConnProps]), - {'on_client_connect', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{props => properties(ConnProps), - conninfo => from_conninfo(ConnInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_connack() -> - ?ALL({ConnInfo, Rc, AckProps}, - {conninfo(), connack_return_code(), ack_properties()}, - begin - ok = emqx_hooks:run('client.connack', [ConnInfo, Rc, AckProps]), - {'on_client_connack', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{props => properties(AckProps), - result_code => atom_to_binary(Rc, utf8), - conninfo => from_conninfo(ConnInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_authenticate() -> - ?ALL({ClientInfo0, AuthResult}, - {clientinfo(), authresult()}, - begin - ClientInfo = inject_magic_into(username, ClientInfo0), - OutAuthResult = emqx_hooks:run_fold('client.authenticate', [ClientInfo], AuthResult), - ExpectedAuthResult = case maps:get(username, ClientInfo) of - <<"baduser">> -> - AuthResult#{ - auth_result => not_authorized, - anonymous => false}; - <<"gooduser">> -> - AuthResult#{ - auth_result => success, - anonymous => false}; - <<"normaluser">> -> - AuthResult#{ - auth_result => success, - anonymous => false}; - _ -> - case maps:get(auth_result, AuthResult) of - success -> - #{auth_result => success, - anonymous => false}; - _ -> - #{auth_result => not_authorized, - anonymous => false} - end - end, - ?assertEqual(ExpectedAuthResult, OutAuthResult), - - {'on_client_authenticate', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{result => authresult_to_bool(AuthResult), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_authorize() -> - ?ALL({ClientInfo0, PubSub, Topic, Result}, - {clientinfo(), oneof([publish, subscribe]), - topic(), oneof([allow, deny])}, - begin - ClientInfo = inject_magic_into(username, ClientInfo0), - OutResult = emqx_hooks:run_fold( - 'client.authorize', - [ClientInfo, PubSub, Topic], - Result), - ExpectedOutResult = case maps:get(username, ClientInfo) of - <<"baduser">> -> deny; - <<"gooduser">> -> allow; - <<"normaluser">> -> allow; - _ -> Result - end, - ?assertEqual(ExpectedOutResult, OutResult), - - {'on_client_authorize', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{result => aclresult_to_bool(Result), - type => pubsub_to_enum(PubSub), - topic => Topic, - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_connected() -> - ?ALL({ClientInfo, ConnInfo}, - {clientinfo(), conninfo()}, - begin - ok = emqx_hooks:run('client.connected', [ClientInfo, ConnInfo]), - {'on_client_connected', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_disconnected() -> - ?ALL({ClientInfo, Reason, ConnInfo}, - {clientinfo(), shutdown_reason(), conninfo()}, - begin - ok = emqx_hooks:run('client.disconnected', [ClientInfo, Reason, ConnInfo]), - {'on_client_disconnected', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{reason => stringfy(Reason), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_subscribe() -> - ?ALL({ClientInfo, SubProps, TopicTab}, - {clientinfo(), sub_properties(), topictab()}, - begin - ok = emqx_hooks:run('client.subscribe', [ClientInfo, SubProps, TopicTab]), - {'on_client_subscribe', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{props => properties(SubProps), - topic_filters => topicfilters(TopicTab), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_client_unsubscribe() -> - ?ALL({ClientInfo, UnSubProps, TopicTab}, - {clientinfo(), unsub_properties(), topictab()}, - begin - ok = emqx_hooks:run('client.unsubscribe', [ClientInfo, UnSubProps, TopicTab]), - {'on_client_unsubscribe', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{props => properties(UnSubProps), - topic_filters => topicfilters(TopicTab), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_created() -> - ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, - begin - ok = emqx_hooks:run('session.created', [ClientInfo, SessInfo]), - {'on_session_created', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_subscribed() -> - ?ALL({ClientInfo, Topic, SubOpts}, - {clientinfo(), topic(), subopts()}, - begin - ok = emqx_hooks:run('session.subscribed', [ClientInfo, Topic, SubOpts]), - {'on_session_subscribed', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{topic => Topic, - subopts => subopts(SubOpts), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_unsubscribed() -> - ?ALL({ClientInfo, Topic, SubOpts}, - {clientinfo(), topic(), subopts()}, - begin - ok = emqx_hooks:run('session.unsubscribed', [ClientInfo, Topic, SubOpts]), - {'on_session_unsubscribed', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{topic => Topic, - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_resumed() -> - ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, - begin - ok = emqx_hooks:run('session.resumed', [ClientInfo, SessInfo]), - {'on_session_resumed', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_discared() -> - ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, - begin - ok = emqx_hooks:run('session.discarded', [ClientInfo, SessInfo]), - {'on_session_discarded', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_takeovered() -> - ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, - begin - ok = emqx_hooks:run('session.takeovered', [ClientInfo, SessInfo]), - {'on_session_takeovered', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_session_terminated() -> - ?ALL({ClientInfo, Reason, SessInfo}, - {clientinfo(), shutdown_reason(), sessioninfo()}, - begin - ok = emqx_hooks:run('session.terminated', [ClientInfo, Reason, SessInfo]), - {'on_session_terminated', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{reason => stringfy(Reason), - clientinfo => from_clientinfo(ClientInfo) - }, - ?assertEqual(Expected, Resp), - true - end). - -prop_message_publish() -> - ?ALL(Msg0, message(), - begin - Msg = emqx_message:from_map( - inject_magic_into(from, emqx_message:to_map(Msg0))), - OutMsg= emqx_hooks:run_fold('message.publish', [], Msg), - case emqx_topic:match(emqx_message:topic(Msg), <<"$SYS/#">>) of - true -> - ?assertEqual(Msg, OutMsg), - skip; - _ -> - ExpectedOutMsg = case emqx_message:from(Msg) of - <<"baduser">> -> - MsgMap = emqx_message:to_map(Msg), - emqx_message:from_map( - MsgMap#{qos => 0, - topic => <<"">>, - payload => <<"">> - }); - <<"gooduser">> = From -> - MsgMap = emqx_message:to_map(Msg), - emqx_message:from_map( - MsgMap#{topic => From, - payload => From - }); - _ -> Msg - end, - ?assertEqual(ExpectedOutMsg, OutMsg), - - {'on_message_publish', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{message => from_message(Msg) - }, - ?assertEqual(Expected, Resp) - end, - true - end). - -prop_message_dropped() -> - ?ALL({Msg, By, Reason}, {message(), hardcoded, shutdown_reason()}, - begin - ok = emqx_hooks:run('message.dropped', [Msg, By, Reason]), - case emqx_topic:match(emqx_message:topic(Msg), <<"$SYS/#">>) of - true -> skip; - _ -> - {'on_message_dropped', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{reason => stringfy(Reason), - message => from_message(Msg) - }, - ?assertEqual(Expected, Resp) - end, - true - end). - -prop_message_delivered() -> - ?ALL({ClientInfo, Msg}, {clientinfo(), message()}, - begin - ok = emqx_hooks:run('message.delivered', [ClientInfo, Msg]), - case emqx_topic:match(emqx_message:topic(Msg), <<"$SYS/#">>) of - true -> skip; - _ -> - {'on_message_delivered', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo), - message => from_message(Msg) - }, - ?assertEqual(Expected, Resp) - end, - true - end). - -prop_message_acked() -> - ?ALL({ClientInfo, Msg}, {clientinfo(), message()}, - begin - ok = emqx_hooks:run('message.acked', [ClientInfo, Msg]), - case emqx_topic:match(emqx_message:topic(Msg), <<"$SYS/#">>) of - true -> skip; - _ -> - {'on_message_acked', Resp} = emqx_exhook_demo_svr:take(), - Expected = - #{clientinfo => from_clientinfo(ClientInfo), - message => from_message(Msg) - }, - ?assertEqual(Expected, Resp) - end, - true - end). - -nodestr() -> - stringfy(node()). - -peerhost(#{peername := {Host, _}}) -> - ntoa(Host). - -sockport(#{sockname := {_, Port}}) -> - Port. - -%% copied from emqx_exhook - -ntoa({0,0,0,0,0,16#ffff,AB,CD}) -> - list_to_binary(inet_parse:ntoa({AB bsr 8, AB rem 256, CD bsr 8, CD rem 256})); -ntoa(IP) -> - list_to_binary(inet_parse:ntoa(IP)). - -maybe(undefined) -> <<>>; -maybe(B) -> B. - -properties(undefined) -> []; -properties(M) when is_map(M) -> - maps:fold(fun(K, V, Acc) -> - [#{name => stringfy(K), - value => stringfy(V)} | Acc] - end, [], M). - -topicfilters(Tfs) when is_list(Tfs) -> - [#{name => Topic, qos => Qos} || {Topic, #{qos := Qos}} <- Tfs]. - -%% @private -stringfy(Term) when is_binary(Term) -> - Term; -stringfy(Term) when is_integer(Term) -> - integer_to_binary(Term); -stringfy(Term) when is_atom(Term) -> - atom_to_binary(Term, utf8); -stringfy(Term) -> - unicode:characters_to_binary((io_lib:format("~0p", [Term]))). - -subopts(SubOpts) -> - #{qos => maps:get(qos, SubOpts, 0), - rh => maps:get(rh, SubOpts, 0), - rap => maps:get(rap, SubOpts, 0), - nl => maps:get(nl, SubOpts, 0), - share => maps:get(share, SubOpts, <<>>) - }. - -authresult_to_bool(AuthResult) -> - maps:get(auth_result, AuthResult, undefined) == success. - -aclresult_to_bool(Result) -> - Result == allow. - -pubsub_to_enum(publish) -> 'PUBLISH'; -pubsub_to_enum(subscribe) -> 'SUBSCRIBE'. - -from_conninfo(ConnInfo) -> - #{node => nodestr(), - clientid => maps:get(clientid, ConnInfo), - username => maybe(maps:get(username, ConnInfo, <<>>)), - peerhost => peerhost(ConnInfo), - sockport => sockport(ConnInfo), - proto_name => maps:get(proto_name, ConnInfo), - proto_ver => stringfy(maps:get(proto_ver, ConnInfo)), - keepalive => maps:get(keepalive, ConnInfo) - }. - -from_clientinfo(ClientInfo) -> - #{node => nodestr(), - clientid => maps:get(clientid, ClientInfo), - username => maybe(maps:get(username, ClientInfo, <<>>)), - password => maybe(maps:get(password, ClientInfo, <<>>)), - peerhost => ntoa(maps:get(peerhost, ClientInfo)), - sockport => maps:get(sockport, ClientInfo), - protocol => stringfy(maps:get(protocol, ClientInfo)), - mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), - is_superuser => maps:get(is_superuser, ClientInfo, false), - anonymous => maps:get(anonymous, ClientInfo, true), - cn => maybe(maps:get(cn, ClientInfo, <<>>)), - dn => maybe(maps:get(dn, ClientInfo, <<>>)) - }. - -from_message(Msg) -> - #{node => nodestr(), - id => emqx_guid:to_hexstr(emqx_message:id(Msg)), - qos => emqx_message:qos(Msg), - from => stringfy(emqx_message:from(Msg)), - topic => emqx_message:topic(Msg), - payload => emqx_message:payload(Msg), - timestamp => emqx_message:timestamp(Msg) - }. - -%%-------------------------------------------------------------------- -%% Helper -%%-------------------------------------------------------------------- - -do_setup() -> - logger:set_primary_config(#{level => warning}), - _ = emqx_exhook_demo_svr:start(), - emqx_ct_helpers:start_apps([emqx_exhook], fun set_special_cfgs/1), - %% waiting first loaded event - {'on_provider_loaded', _} = emqx_exhook_demo_svr:take(), - ok. - -do_teardown(_) -> - emqx_ct_helpers:stop_apps([emqx_exhook]), - %% waiting last unloaded event - {'on_provider_unloaded', _} = emqx_exhook_demo_svr:take(), - _ = emqx_exhook_demo_svr:stop(), - logger:set_primary_config(#{level => notice}), - timer:sleep(2000), - ok. - -set_special_cfgs(emqx) -> - application:set_env(emqx, allow_anonymous, false), - application:set_env(emqx, enable_acl_cache, false), - application:set_env(emqx, modules_loaded_file, undefined), - application:set_env(emqx, plugins_loaded_file, - emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); -set_special_cfgs(emqx_exhook) -> - ok. - -%%-------------------------------------------------------------------- -%% Generators -%%-------------------------------------------------------------------- - -conn_properties() -> - #{}. - -ack_properties() -> - #{}. - -sub_properties() -> - #{}. - -unsub_properties() -> - #{}. - -shutdown_reason() -> - oneof([utf8(), {shutdown, emqx_ct_proper_types:limited_atom()}]). - -authresult() -> - ?LET(RC, connack_return_code(), #{auth_result => RC}). - -inject_magic_into(Key, Object) -> - case castspell() of - muggles -> Object; - Spell -> - Object#{Key => Spell} - end. - -castspell() -> - L = [<<"baduser">>, <<"gooduser">>, <<"normaluser">>, muggles], - lists:nth(rand:uniform(length(L)), L). diff --git a/apps/emqx_exproto/.gitignore b/apps/emqx_exproto/.gitignore deleted file mode 100644 index 384f2255a..000000000 --- a/apps/emqx_exproto/.gitignore +++ /dev/null @@ -1,48 +0,0 @@ -.eunit -deps -!deps/.placeholder -*.o -*.beam -*.plt -erl_crash.dump -ebin -!ebin/.placeholder -.concrete/DEV_MODE -.rebar -test/ebin/*.beam -.exrc -plugins/*/ebin -log/ -*.swp -*.so -.erlang.mk/ -cover/ -emqx.d -eunit.coverdata -test/ct.cover.spec -logs -ct.coverdata -.idea/ -emqx.iml -_rel/ -data/ -_build -.rebar3 -rebar3.crashdump -.DS_Store -emqx.iml -bbmustache/ -etc/gen.emqx.conf -compile_commands.json -cuttlefish -rebar.lock -xrefr -erlang.mk -*.coverdata -etc/emqx_exproto.conf.rendered -Mnesia.*/ -src/emqx_exproto_pb.erl -src/emqx_exproto_v_1_connection_adapter_bhvr.erl -src/emqx_exproto_v_1_connection_adapter_client.erl -src/emqx_exproto_v_1_connection_handler_bhvr.erl -src/emqx_exproto_v_1_connection_handler_client.erl diff --git a/apps/emqx_exproto/docs/design-cn.md b/apps/emqx_exproto/docs/design-cn.md deleted file mode 100644 index 7af7dbdb3..000000000 --- a/apps/emqx_exproto/docs/design-cn.md +++ /dev/null @@ -1,127 +0,0 @@ -# 多语言 - 协议接入 - -`emqx-exproto` 插件用于协议解析的多语言支持。它能够允许其他编程语言(例如:Python,Java 等)直接处理数据流实现协议的解析,并提供 Pub/Sub 接口以实现与系统其它组件的通信。 - -该插件给 EMQ X 带来的扩展性十分的强大,它能以你熟悉语言处理任何的私有协议,并享受由 EMQ X 系统带来的高连接,和高并发的优点。 - -## 特性 - -- 极强的扩展能力。使用 gRPC 作为 RPC 通信框架,支持各个主流编程语言 -- 高吞吐。连接层以完全的异步非阻塞式 I/O 的方式实现 -- 连接层透明。完全的支持 TCP\TLS UDP\DTLS 类型的连接管理,并对上层提供统一的 API 接口 -- 连接层的管理能力。例如,最大连接数,连接和吞吐的速率限制,IP 黑名单 等 - -## 架构 - -![Extension-Protocol Arch](images/exproto-arch.jpg) - -该插件主要需要处理的内容包括: - -1. **连接层:** 该部分主要 **维持 Socket 的生命周期,和数据的收发**。它的功能要求包括: - - 监听某个端口。当有新的 TCP/UDP 连接到达后,启动一个连接进程,来维持连接的状态。 - - 调用 `OnSocketCreated` 回调。用于通知外部模块**已新建立了一个连接**。 - - 调用 `OnScoektClosed` 回调。用于通知外部模块连接**已关闭**。 - - 调用 `OnReceivedBytes` 回调。用于通知外部模块**该连接新收到的数据包**。 - - 提供 `Send` 接口。供外部模块调用,**用于发送数据包**。 - - 提供 `Close` 接口。供外部模块调用,**用于主动关闭连接**。 - -2. **协议/会话层:**该部分主要**提供 PUB/SUB 接口**,以实现与 EMQ X Broker 系统的消息互通。包括: - - - 提供 `Authenticate` 接口。供外部模块调用,用于向集群注册客户端。 - - 提供 `StartTimer` 接口。供外部模块调用,用于为该连接进程启动心跳等定时器。 - - 提供 `Publish` 接口。供外部模块调用,用于发布消息 EMQ X Broker 中。 - - 提供 `Subscribe` 接口。供外部模块调用,用于订阅某主题,以实现从 EMQ X Broker 中接收某些下行消息。 - - 提供 `Unsubscribe` 接口。供外部模块调用,用于取消订阅某主题。 - - 调用 `OnTimerTimeout` 回调。用于处理定时器超时的事件。 - - 调用 `OnReceivedMessages` 回调。用于接收下行消息(在订阅主题成功后,如果主题上有消息,便会回调该方法) - -## 接口设计 - -从 gRPC 上的逻辑来说,emqx-exproto 会作为客户端向用户的 `ConnectionHandler` 服务发送回调请求。同时,它也会作为服务端向用户提供 `ConnectionAdapter` 服务,以提供 emqx-exproto 各个接口的访问。如图: - -![Extension Protocol gRPC Arch](images/exproto-grpc-arch.jpg) - - -详情参见:`priv/protos/exproto.proto`,例如接口的定义有: - -```protobuff -syntax = "proto3"; - -package emqx.exproto.v1; - -// The Broker side serivce. It provides a set of APIs to -// handle a protcol access -service ConnectionAdapter { - - // -- socket layer - - rpc Send(SendBytesRequest) returns (CodeResponse) {}; - - rpc Close(CloseSocketRequest) returns (CodeResponse) {}; - - // -- protocol layer - - rpc Authenticate(AuthenticateRequest) returns (CodeResponse) {}; - - rpc StartTimer(TimerRequest) returns (CodeResponse) {}; - - // -- pub/sub layer - - rpc Publish(PublishRequest) returns (CodeResponse) {}; - - rpc Subscribe(SubscribeRequest) returns (CodeResponse) {}; - - rpc Unsubscribe(UnsubscribeRequest) returns (CodeResponse) {}; -} - -service ConnectionHandler { - - // -- socket layer - - rpc OnSocketCreated(stream SocketCreatedRequest) returns (EmptySuccess) {}; - - rpc OnSocketClosed(stream SocketClosedRequest) returns (EmptySuccess) {}; - - rpc OnReceivedBytes(stream ReceivedBytesRequest) returns (EmptySuccess) {}; - - // -- pub/sub layer - - rpc OnTimerTimeout(stream TimerTimeoutRequest) returns (EmptySuccess) {}; - - rpc OnReceivedMessages(stream ReceivedMessagesRequest) returns (EmptySuccess) {}; -} -``` - -## 配置项设计 - -1. 以 **监听器(Listener)** 为基础,提供 TCP/UDP 的监听。 - - Listener 目前仅支持:TCP、TLS、UDP、DTLS。(ws、wss、quic 暂不支持) -2. 每个监听器,会指定一个 `ConnectionHandler` 的服务地址,用于调用外部模块的接口。 -3. emqx-exproto 还会监听一个 gRPC 端口用于提供对 `ConnectionAdapter` 服务的访问。 - -例如: - -``` properties -## gRPC 服务监听地址 (HTTP) -## -exproto.server.http.url = http://127.0.0.1:9002 - -## gRPC 服务监听地址 (HTTPS) -## -exproto.server.https.url = https://127.0.0.1:9002 -exproto.server.https.cacertfile = ca.pem -exproto.server.https.certfile = cert.pem -exproto.server.https.keyfile = key.pem - -## Listener 配置 -## 例如,名称为 protoname 协议的 TCP 监听器配置 -exproto.listener.protoname = tcp://0.0.0.0:7993 - -## ConnectionHandler 服务地址及 https 的证书配置 -exproto.listener.protoname.connection_handler_url = http://127.0.0.1:9001 -#exproto.listener.protoname.connection_handler_certfile = -#exproto.listener.protoname.connection_handler_cacertfile = -#exproto.listener.protoname.connection_handler_keyfile = - -# ... -``` diff --git a/apps/emqx_exproto/docs/images/exproto-arch.jpg b/apps/emqx_exproto/docs/images/exproto-arch.jpg deleted file mode 100644 index dddf7996b98c61bf55f911a35e0f51e76c8e8728..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72633 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