Преглед изворни кода

Merge pull request #7593 from EMQ-YangM/improve_mgmt_cli_cover

draft: improve emqx_mgmt_cli test coverage
JianBo He пре 3 година
родитељ
комит
ae2c150384
1 измењених фајлова са 210 додато и 0 уклоњено
  1. 210 0
      apps/emqx_management/test/emqx_mgmt_cli_SUITE.erl

+ 210 - 0
apps/emqx_management/test/emqx_mgmt_cli_SUITE.erl

@@ -0,0 +1,210 @@
+%%--------------------------------------------------------------------
+%% Copyright (c) 2020-2022 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_mgmt_cli_SUITE).
+
+-compile(export_all).
+-compile(nowarn_export_all).
+
+-include_lib("eunit/include/eunit.hrl").
+
+all() ->
+    emqx_common_test_helpers:all(?MODULE).
+
+init_per_suite(Config) ->
+    mria:start(),
+    ok = emqx_common_test_helpers:start_apps([emqx_management]),
+    emqx_common_test_helpers:start_apps([] ++ [emqx_dashboard], fun set_special_configs/1),
+    Config.
+
+end_per_suite(_) ->
+    emqx_common_test_helpers:stop_apps([emqx_management] ++ [emqx_dashboard]),
+    emqx_config:delete_override_conf_files(),
+    ok.
+
+set_special_configs(emqx_dashboard) ->
+    Config = #{
+               default_username => <<"admin">>,
+               default_password => <<"public">>,
+               listeners => [#{
+                               protocol => http,
+                               port => 18083
+                              }]
+              },
+    emqx_config:put([dashboard], Config),
+    ok;
+set_special_configs(_App) ->
+    ok.
+
+t_status(_Config) ->
+    emqx_ctl:run_command([]),
+    emqx_ctl:run_command(["status"]),
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_broker(_Config) ->
+    %% broker         # Show broker version, uptime and description
+    emqx_ctl:run_command(["broker"]),
+    %% broker stats   # Show broker statistics of clients, topics, subscribers
+    emqx_ctl:run_command(["broker", "stats"]),
+    %% broker metrics # Show broker metrics
+    emqx_ctl:run_command(["broker", "metrics"]),
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_cluster(_Config) ->
+    %% cluster join <Node>        # Join the cluster
+    %% cluster leave              # Leave the cluster
+    %% cluster force-leave <Node> # Force the node leave from cluster
+    %% cluster status             # Cluster status
+    emqx_ctl:run_command(["cluster", "status"]),
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_clients(_Config) ->
+    %% clients list            # List all clients
+    emqx_ctl:run_command(["clients", "list"]),
+    %% clients show <ClientId> # Show a client
+    %% clients kick <ClientId> # Kick out a client
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_routes(_Config) ->
+    %% routes list         # List all routes
+    emqx_ctl:run_command(["routes", "list"]),
+    %% routes show <Topic> # Show a route
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_subscriptions(_Config) ->
+    %% subscriptions list                         # List all subscriptions
+    emqx_ctl:run_command(["subscriptions", "list"]),
+    %% subscriptions show <ClientId>              # Show subscriptions of a client
+    %% subscriptions add <ClientId> <Topic> <QoS> # Add a static subscription manually
+    %% subscriptions del <ClientId> <Topic>       # Delete a static subscription manually
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_plugins(_Config) ->
+    %% plugins <command> [Name-Vsn]          # e.g. 'start emqx_plugin_template-5.0-rc.1'
+    %% plugins list                          # List all installed plugins
+    emqx_ctl:run_command(["plugins", "list"]),
+    %% plugins describe  Name-Vsn            # Describe an installed plugins
+    %% plugins install   Name-Vsn            # Install a plugin package placed
+    %%                                       # in plugin'sinstall_dir
+    %% plugins uninstall Name-Vsn            # Uninstall a plugin. NOTE: it deletes
+    %%                                       # all files in install_dir/Name-Vsn
+    %% plugins start     Name-Vsn            # Start a plugin
+    %% plugins stop      Name-Vsn            # Stop a plugin
+    %% plugins restart   Name-Vsn            # Stop then start a plugin
+    %% plugins disable   Name-Vsn            # Disable auto-boot
+    %% plugins enable    Name-Vsn [Position] # Enable auto-boot at Position in the boot list, where Position could be
+    %%                                       # 'front', 'rear', or 'before Other-Vsn' to specify a relative position.
+    %%                                       # The Position parameter can be used to adjust the boot order.
+    %%                                       # If no Position is given, an already configured plugin
+    %%                                       # will stay at is old position; a newly plugin is appended to the rear
+    %%                                       # e.g. plugins disable foo-0.1.0 front
+    %%                                       #      plugins enable bar-0.2.0 before foo-0.1.0
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_vm(_Config) ->
+    %% vm all     # Show info of Erlang VM
+    emqx_ctl:run_command(["vm", "all"]),
+    %% vm load    # Show load of Erlang VM
+    emqx_ctl:run_command(["vm", "load"]),
+    %% vm memory  # Show memory of Erlang VM
+    emqx_ctl:run_command(["vm", "memory"]),
+    %% vm process # Show process of Erlang VM
+    emqx_ctl:run_command(["vm", "process"]),
+    %% vm io      # Show IO of Erlang VM
+    emqx_ctl:run_command(["vm", "io"]),
+    %% vm ports   # Show Ports of Erlang VM
+    emqx_ctl:run_command(["vm", "ports"]),
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_mnesia(_Config) ->
+    %% mnesia # Mnesia system info
+    emqx_ctl:run_command(["mnesia"]),
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_log(_Config) ->
+    %% log set-level <Level>                      # Set the overall log level
+    %% log primary-level                          # Show the primary log level now
+    emqx_ctl:run_command(["log", "primary-level"]),
+    %% log primary-level <Level>                  # Set the primary log level
+    %% log handlers list                          # Show log handlers
+    emqx_ctl:run_command(["log", "handlers", "list"]),
+    %% log handlers start <HandlerId>             # Start a log handler
+    %% log handlers stop  <HandlerId>             # Stop a log handler
+    %% log handlers set-level <HandlerId> <Level> # Set log level of a log handler
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_trace(_Config) ->
+    %% trace list                                        # List all traces started on local node
+    emqx_ctl:run_command(["trace", "list"]),
+    %% trace start client <ClientId> <File> [<Level>]    # Traces for a client on local node
+    %% trace stop  client <ClientId>                     # Stop tracing for a client on local node
+    %% trace start topic  <Topic>    <File> [<Level>]    # Traces for a topic on local node
+    %% trace stop  topic  <Topic>                        # Stop tracing for a topic on local node
+    %% trace start ip_address  <IP>    <File> [<Level>]  # Traces for a client ip on local node
+    %% trace stop  ip_addresss  <IP>                     # Stop tracing for a client ip on local node
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_traces(_Config) ->
+    %% traces list                             # List all cluster traces started
+    emqx_ctl:run_command(["traces", "list"]),
+    %% traces start <Name> client <ClientId>   # Traces for a client in cluster
+    %% traces start <Name> topic <Topic>       # Traces for a topic in cluster
+    %% traces start <Name> ip_address <IPAddr> # Traces for a IP in cluster
+    %% traces stop  <Name>                     # Stop trace in cluster
+    %% traces delete  <Name>                   # Delete trace in cluster
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_listeners(_Config) ->
+    %% listeners                      # List listeners
+    emqx_ctl:run_command(["listeners"]),
+    %% listeners stop    <Identifier> # Stop a listener
+    %% listeners start   <Identifier> # Start a listener
+    %% listeners restart <Identifier> # Restart a listener
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_authz(_Config) ->
+    %% authz cache-clean all         # Clears authorization cache on all nodes
+    emqx_ctl:run_command(["authz", "cache-clean", "all"]),
+    %% authz cache-clean node <Node> # Clears authorization cache on given node
+    %% authz cache-clean <ClientId>  # Clears authorization cache for given client
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_olp(_Config) ->
+    %% olp status  # Return OLP status if system is overloaded
+    emqx_ctl:run_command(["olp", "status"]),
+    %% olp enable  # Enable overload protection
+    %% olp disable # Disable overload protection
+    ok.
+    %% --------------------------------------------------------------------------------------------------------------
+
+t_admin(_Config) ->
+    %% admins add <Username> <Password> <Description> # Add dashboard user
+    %% admins passwd <Username> <Password>            # Reset dashboard user password
+    %% admins del <Username>                          # Delete dashboard user
+    ok.