fix: problems found by @thalesmg in review

This commit is contained in:
Kjell Winblad 2023-07-03 12:19:13 +02:00
parent 714363bd01
commit 6c2185bed7
4 changed files with 18 additions and 30 deletions

View File

@ -38,11 +38,6 @@
import_config/1
]).
%% For testing
-export([
ensure_serde_absent/1
]).
-type schema() :: #{
type := serde_type(),
source := binary(),
@ -248,7 +243,7 @@ do_build_serdes(Schemas) ->
maybe_build_sparkplug_b_serde() ->
case get_schema(?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME) of
{error, not_found} ->
do_build_serde_no_check(
do_build_serde(
?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME,
#{
type => protobuf,
@ -293,15 +288,7 @@ build_serdes([], _Acc) ->
do_build_serde(Name, Serde) when not is_binary(Name) ->
do_build_serde(to_bin(Name), Serde);
do_build_serde(?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME, _Serde) ->
{error,
erlang:iolist_to_binary(
io_lib:format("Illigal schema name ~s", [?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME])
)};
do_build_serde(Name, Serde) ->
do_build_serde_no_check(Name, Serde).
do_build_serde_no_check(Name, #{type := Type, source := Source}) ->
do_build_serde(Name, #{type := Type, source := Source}) ->
try
{Serializer, Deserializer, Destructor} =
emqx_ee_schema_registry_serde:make_serde(Type, Name, Source),
@ -331,8 +318,6 @@ do_build_serde_no_check(Name, #{type := Type, source := Source}) ->
ensure_serde_absent(Name) when not is_binary(Name) ->
ensure_serde_absent(to_bin(Name));
% ensure_serde_absent(?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME) ->
% {error, <<"Cannot delete serde for Sparkplug B schema">>};
ensure_serde_absent(Name) ->
case get_serde(Name) of
{ok, #{destructor := Destructor}} ->

View File

@ -42,7 +42,8 @@ fields(?CONF_KEY_ROOT) ->
),
#{
default => #{},
desc => ?DESC("schema_registry_schemas")
desc => ?DESC("schema_registry_schemas"),
validator => fun validate_name/1
}
)}
];
@ -89,6 +90,15 @@ union_member_selector_get_api(all_union_members) ->
union_member_selector_get_api({value, V}) ->
refs_get_api(V).
validate_name(NameSchemaMap) ->
case maps:is_key(?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME, NameSchemaMap) of
true ->
{error,
<<"Illegal schema name ", ?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME/binary>>};
false ->
ok
end.
%%------------------------------------------------------------------------------
%% `minirest_trails' "APIs"
%%------------------------------------------------------------------------------

View File

@ -790,18 +790,11 @@ sparkplug_example_data() ->
}.
wait_for_sparkplug_schema_registered() ->
wait_for_sparkplug_schema_registered(100).
wait_for_sparkplug_schema_registered(0) ->
ct:fail("Timed out waiting for sparkplug schema to be registered");
wait_for_sparkplug_schema_registered(AttemptsLeft) ->
case ets:info(?SERDE_TAB, size) of
0 ->
timer:sleep(100),
wait_for_sparkplug_schema_registered(AttemptsLeft - 1);
_ ->
ok
end.
?retry(
100,
100,
[_] = ets:lookup(?SERDE_TAB, ?EMQX_SCHEMA_REGISTRY_SPARKPLUGB_SCHEMA_NAME)
).
t_sparkplug_decode(_Config) ->
SQL =