From 45e3b62dc424e8b3e155863ab67c5846bbe53203 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Tue, 28 Mar 2023 17:48:10 +0300 Subject: [PATCH] refactor(ft): prefer plain `files` over `exports` in generic APIs So there's no more `exports` magically becomings `files` in the REST API which was slightly confusing. --- apps/emqx_ft/src/emqx_ft_api.erl | 8 ++++---- apps/emqx_ft/src/emqx_ft_storage.erl | 18 +++++++++--------- apps/emqx_ft/src/emqx_ft_storage_exporter.erl | 2 +- apps/emqx_ft/src/emqx_ft_storage_fs.erl | 4 ++-- .../emqx_ft_storage_exporter_fs_proto_v1.erl | 2 +- apps/emqx_ft/test/emqx_ft_SUITE.erl | 14 +++++++------- apps/emqx_ft/test/emqx_ft_storage_fs_SUITE.erl | 8 ++++---- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/apps/emqx_ft/src/emqx_ft_api.erl b/apps/emqx_ft/src/emqx_ft_api.erl index eeb047b16..a667454b6 100644 --- a/apps/emqx_ft/src/emqx_ft_api.erl +++ b/apps/emqx_ft/src/emqx_ft_api.erl @@ -67,9 +67,9 @@ schema("/file_transfer/files") -> }. '/file_transfer/files'(get, #{}) -> - case emqx_ft_storage:exports() of - {ok, Transfers} -> - {200, #{<<"files">> => lists:map(fun format_export_info/1, Transfers)}}; + case emqx_ft_storage:files() of + {ok, Files} -> + {200, #{<<"files">> => lists:map(fun format_file_info/1, Files)}}; {error, _} -> {503, error_msg('SERVICE_UNAVAILABLE', <<"Service unavailable">>)} end. @@ -84,7 +84,7 @@ roots() -> %% Helpers %%-------------------------------------------------------------------- -format_export_info( +format_file_info( Info = #{ name := Name, size := Size, diff --git a/apps/emqx_ft/src/emqx_ft_storage.erl b/apps/emqx_ft/src/emqx_ft_storage.erl index 05a053fbf..bff149ce2 100644 --- a/apps/emqx_ft/src/emqx_ft_storage.erl +++ b/apps/emqx_ft/src/emqx_ft_storage.erl @@ -24,7 +24,7 @@ store_segment/2, assemble/2, - exports/0, + files/0, with_storage_type/2, with_storage_type/3 @@ -34,13 +34,13 @@ -type storage() :: emqx_config:config(). -export_type([assemble_callback/0]). --export_type([export_info/0]). +-export_type([file_info/0]). -export_type([export_data/0]). -export_type([reader/0]). -type assemble_callback() :: fun((ok | {error, term()}) -> any()). --type export_info() :: #{ +-type file_info() :: #{ transfer := emqx_ft:transfer(), name := file:name(), size := _Bytes :: non_neg_integer(), @@ -68,8 +68,8 @@ -callback assemble(storage(), emqx_ft:transfer(), _Size :: emqx_ft:bytes()) -> ok | {async, pid()} | {error, term()}. --callback exports(storage()) -> - {ok, [export_info()]} | {error, term()}. +-callback files(storage()) -> + {ok, [file_info()]} | {error, term()}. %%-------------------------------------------------------------------- %% API @@ -104,11 +104,11 @@ assemble(Transfer, Size) -> Mod = mod(), Mod:assemble(storage(), Transfer, Size). --spec exports() -> - {ok, [export_info()]} | {error, term()}. -exports() -> +-spec files() -> + {ok, [file_info()]} | {error, term()}. +files() -> Mod = mod(), - Mod:exports(storage()). + Mod:files(storage()). -spec with_storage_type(atom(), atom() | function()) -> any(). with_storage_type(Type, Fun) -> diff --git a/apps/emqx_ft/src/emqx_ft_storage_exporter.erl b/apps/emqx_ft/src/emqx_ft_storage_exporter.erl index 954423fba..a7d1cd2e2 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_exporter.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_exporter.erl @@ -57,7 +57,7 @@ ok | {error, _Reason}. -callback list(options()) -> - {ok, [emqx_ft_storage:export_info()]} | {error, _Reason}. + {ok, [emqx_ft_storage:file_info()]} | {error, _Reason}. %% diff --git a/apps/emqx_ft/src/emqx_ft_storage_fs.erl b/apps/emqx_ft/src/emqx_ft_storage_fs.erl index b328cfd2b..10ca263da 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_fs.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_fs.erl @@ -44,7 +44,7 @@ -export([get_subdir/2]). -export([get_subdir/3]). --export([exports/1]). +-export([files/1]). -export_type([storage/0]). -export_type([filefrag/1]). @@ -209,7 +209,7 @@ assemble(Storage, Transfer, Size) -> %% -exports(Storage) -> +files(Storage) -> emqx_ft_storage_exporter:list(Storage). %% diff --git a/apps/emqx_ft/src/proto/emqx_ft_storage_exporter_fs_proto_v1.erl b/apps/emqx_ft/src/proto/emqx_ft_storage_exporter_fs_proto_v1.erl index ee7a857be..4c64011de 100644 --- a/apps/emqx_ft/src/proto/emqx_ft_storage_exporter_fs_proto_v1.erl +++ b/apps/emqx_ft/src/proto/emqx_ft_storage_exporter_fs_proto_v1.erl @@ -29,7 +29,7 @@ introduced_in() -> "5.0.17". -spec list_exports([node()]) -> - emqx_rpc:erpc_multicall([emqx_ft_storage:export_info()]). + emqx_rpc:erpc_multicall([emqx_ft_storage:file_info()]). list_exports(Nodes) -> erpc:multicall( Nodes, diff --git a/apps/emqx_ft/test/emqx_ft_SUITE.erl b/apps/emqx_ft/test/emqx_ft_SUITE.erl index c493a78c5..3cfcebf93 100644 --- a/apps/emqx_ft/test/emqx_ft_SUITE.erl +++ b/apps/emqx_ft/test/emqx_ft_SUITE.erl @@ -216,7 +216,7 @@ t_simple_transfer(Config) -> emqtt:publish(C, mk_fin_topic(FileId, Filesize), <<>>, 1) ), - [Export] = list_exports(?config(clientid, Config)), + [Export] = list_files(?config(clientid, Config)), ?assertEqual( {ok, iolist_to_binary(Data)}, read_export(Export) @@ -234,7 +234,7 @@ t_nasty_clientids_fileids(_Config) -> ok = lists:foreach( fun({ClientId, FileId}) -> ok = emqx_ft_test_helpers:upload_file(ClientId, FileId, "justfile", ClientId), - [Export] = list_exports(ClientId), + [Export] = list_files(ClientId), ?assertEqual({ok, ClientId}, read_export(Export)) end, Transfers @@ -463,7 +463,7 @@ t_switch_node(Config) -> %% Now check consistency of the file - [Export] = list_exports(ClientId), + [Export] = list_files(ClientId), ?assertEqual( {ok, iolist_to_binary(Data)}, read_export(Export) @@ -539,7 +539,7 @@ t_unreliable_migrating_client(Config) -> ], _Context = run_commands(Commands, Context), - Exports = list_exports(?config(clientid, Config)), + Exports = list_files(?config(clientid, Config)), % NOTE % The cluster had 2 assemblers running on two different nodes, because client sent `fin` @@ -659,9 +659,9 @@ meta(FileName, Data) -> size => byte_size(FullData) }. -list_exports(ClientId) -> - {ok, Exports} = emqx_ft_storage:exports(), - [Export || Export = #{transfer := {CId, _}} <- Exports, CId == ClientId]. +list_files(ClientId) -> + {ok, Files} = emqx_ft_storage:files(), + [File || File = #{transfer := {CId, _}} <- Files, CId == ClientId]. read_export(#{path := AbsFilepath}) -> % TODO: only works for the local filesystem exporter right now diff --git a/apps/emqx_ft/test/emqx_ft_storage_fs_SUITE.erl b/apps/emqx_ft/test/emqx_ft_storage_fs_SUITE.erl index 5b3f56b7d..e1574da0d 100644 --- a/apps/emqx_ft/test/emqx_ft_storage_fs_SUITE.erl +++ b/apps/emqx_ft/test/emqx_ft_storage_fs_SUITE.erl @@ -83,7 +83,7 @@ t_multinode_ready_transfers(Config) -> #{transfer := {<<"c/1">>, <<"f:1">>}, name := "fn1"}, #{transfer := {<<"c/2">>, <<"f:2">>}, name := "fn2"} ], - lists:sort(list_exports(Config)) + lists:sort(list_files(Config)) ). %%-------------------------------------------------------------------- @@ -103,6 +103,6 @@ storage(Config) -> } }. -list_exports(Config) -> - {ok, Exports} = emqx_ft_storage_fs:exports(storage(Config)), - Exports. +list_files(Config) -> + {ok, Files} = emqx_ft_storage_fs:files(storage(Config)), + Files.