From 1c81c79a2cb5f6713e250a8b1f795845e01fef54 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Sun, 7 Apr 2024 17:24:26 +0800 Subject: [PATCH] chore: add testcase for importing retained msgs and sources --- .../test/emqx_mgmt_data_backup_SUITE.erl | 23 ++++++++++++++++++ ...emqx-export-4.4.24-retainer-mqttsub.tar.gz | Bin 0 -> 2352 bytes 2 files changed, 23 insertions(+) create mode 100644 apps/emqx_management/test/emqx_mgmt_data_backup_SUITE_data/emqx-export-4.4.24-retainer-mqttsub.tar.gz diff --git a/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE.erl index 36a838743..e1d0a2512 100644 --- a/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE.erl @@ -18,6 +18,7 @@ -compile(export_all). -compile(nowarn_export_all). +-include_lib("emqx_utils/include/emqx_message.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("common_test/include/ct.hrl"). -include_lib("snabbkaffe/include/snabbkaffe.hrl"). @@ -86,6 +87,28 @@ t_empty_export_import(_Config) -> ?assertEqual(Exp, emqx_mgmt_data_backup:import(FileName)), ?assertEqual(ExpRawConf, emqx:get_raw_config([])). +t_cluster_hocon_import_mqtt_subscribers_retainer_messages(Config) -> + FNameEmqx44 = "emqx-export-4.4.24-retainer-mqttsub.tar.gz", + BackupFile = filename:join(?config(data_dir, Config), FNameEmqx44), + Exp = {ok, #{db_errors => #{}, config_errors => #{}}}, + ?assertEqual(Exp, emqx_mgmt_data_backup:import(BackupFile)), + RawConfAfterImport = emqx:get_raw_config([]), + %% verify that MQTT sources are imported + ?assertMatch( + #{<<"sources">> := #{<<"mqtt">> := Sources}} when map_size(Sources) > 0, + RawConfAfterImport + ), + %% verify that retainer messages are imported + ?assertMatch( + {ok, [#message{payload = <<"test-payload">>}]}, + emqx_retainer:read_message(<<"test-retained-message/1">>) + ), + %% Export and import again + {ok, #{filename := FileName}} = emqx_mgmt_data_backup:export(), + ?assertEqual(Exp, emqx_mgmt_data_backup:import(FileName)), + ?assertEqual(RawConfAfterImport, emqx:get_raw_config([])), + ok. + t_cluster_hocon_export_import(Config) -> RawConfBeforeImport = emqx:get_raw_config([]), BootstrapFile = filename:join(?config(data_dir, Config), ?BOOTSTRAP_BACKUP), diff --git a/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE_data/emqx-export-4.4.24-retainer-mqttsub.tar.gz b/apps/emqx_management/test/emqx_mgmt_data_backup_SUITE_data/emqx-export-4.4.24-retainer-mqttsub.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..67133f19d7e2958933f5fef09d07ccbfd64883e5 GIT binary patch literal 2352 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