From 557f1c371e149eb420e5e7c1a3b9b124ceb21ef2 Mon Sep 17 00:00:00 2001 From: Aleksey Kashapov Date: Wed, 25 Jun 2025 11:28:58 +0300 Subject: [PATCH] Upgrades to dmt v2 #minor --- rebar.config | 6 ++-- rebar.lock | 25 +++++++++------- src/wapi_domain_backend.erl | 6 ++-- src/wapi_withdrawal_quote.erl | 2 +- test/wapi_ct_helper.erl | 55 ++++++++++++++++++++++++++--------- 5 files changed, 62 insertions(+), 32 deletions(-) diff --git a/rebar.config b/rebar.config index 0d807f2..fd75e18 100644 --- a/rebar.config +++ b/rebar.config @@ -31,10 +31,10 @@ {scoper, {git, "https://github.com/valitydev/scoper.git", {tag, "v1.1.0"}}}, {thrift, {git, "https://github.com/valitydev/thrift-erlang.git", {tag, "v1.0.0"}}}, {woody, {git, "https://github.com/valitydev/woody_erlang.git", {tag, "v1.1.0"}}}, - {dmt_client, {git, "https://github.com/valitydev/dmt-client.git", {branch, master}}}, - {damsel, {git, "https://github.com/valitydev/damsel.git", {branch, "master"}}}, + {dmt_client, {git, "https://github.com/valitydev/dmt-client.git", {tag, "v2.0.0"}}}, + {damsel, {git, "https://github.com/valitydev/damsel.git", {tag, "v2.2.0"}}}, {identdocstore_proto, {git, "https://github.com/valitydev/identdocstore-proto.git", {branch, "master"}}}, - {fistful_proto, {git, "https://github.com/valitydev/fistful-proto.git", {branch, "master"}}}, + {fistful_proto, {git, "https://github.com/valitydev/fistful-proto.git", {tag, "v2.0.0"}}}, {fistful_reporter_proto, {git, "https://github.com/valitydev/fistful-reporter-proto.git", {branch, "master"}}}, {file_storage_proto, {git, "https://github.com/valitydev/file-storage-proto.git", {branch, "master"}}}, {bender_client, {git, "https://github.com/valitydev/bender-client-erlang.git", {tag, "v1.1.0"}}}, diff --git a/rebar.lock b/rebar.lock index 886fe9c..4e0f9dd 100644 --- a/rebar.lock +++ b/rebar.lock @@ -21,11 +21,11 @@ {<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.11.0">>},2}, {<<"damsel">>, {git,"https://github.com/valitydev/damsel.git", - {ref,"ab44b9db25a76a2c50545fd884e4cdf3d3e3b628"}}, + {ref,"ba7414811590859d058817b8f22d2e9c22f627f8"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/valitydev/dmt-client.git", - {ref,"d8a4f490d49c038d96f1cbc2a279164c6f4039f9"}}, + {ref,"fcfb028a041149caeebec8d9cef469c8cdbbc63e"}}, 0}, {<<"dmt_core">>, {git,"https://github.com/valitydev/dmt-core.git", @@ -64,7 +64,7 @@ {ref,"3f9c136ae2f70b9830f46c990e00d75dacfd73d9"}}, 0}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},2}, - {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.3.0">>},2}, + {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.4.0">>},2}, {<<"msgpack_proto">>, {git,"https://github.com/valitydev/msgpack-proto.git", {ref,"7e447496aa5df4a5f1ace7ef2e3c31248b2a3ed0"}}, @@ -75,7 +75,8 @@ {ref,"04de2f4ad697430c75f8efa04716d30753bd7c4b"}}, 1}, {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.1">>},2}, - {<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.6.0">>},1}, + {<<"prometheus">>,{pkg,<<"prometheus">>,<<"4.11.0">>},1}, + {<<"quantile_estimator">>,{pkg,<<"quantile_estimator">>,<<"0.2.1">>},2}, {<<"quickrand">>, {git,"https://github.com/okeuday/quickrand.git", {ref,"65332de501998764f437c3ffe05d744f582d7622"}}, @@ -110,7 +111,7 @@ {git,"https://github.com/valitydev/erlang_uac.git", {ref,"b67fca391127ad6aa3345aa67a7460a10a856c52"}}, 0}, - {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.0">>},2}, + {<<"unicode_util_compat">>,{pkg,<<"unicode_util_compat">>,<<"0.7.1">>},2}, {<<"uuid">>, {git,"https://github.com/okeuday/uuid.git", {ref,"63e32cdad70693495163ab131456905e827a5e36"}}, @@ -130,13 +131,14 @@ {<<"idna">>, <<"8A63070E9F7D0C62EB9D9FCB360A7DE382448200FBBD1B106CC96D3D8099DF8D">>}, {<<"jsx">>, <<"D12516BAA0BB23A59BB35DCCAF02A1BD08243FCBB9EFE24F2D9D056CCFF71268">>}, {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>}, - {<<"mimerl">>, <<"D0CD9FC04B9061F82490F6581E0128379830E78535E017F7780F37FEA7545726">>}, + {<<"mimerl">>, <<"3882A5CA67FBBE7117BA8947F27643557ADEC38FA2307490C4C4207624CB213B">>}, {<<"opentelemetry_api">>, <<"63CA1742F92F00059298F478048DFB826F4B20D49534493D6919A0DB39B6DB04">>}, {<<"parse_trans">>, <<"16328AB840CC09919BD10DAB29E431DA3AF9E9E7E7E6F0089DD5A2D2820011D8">>}, - {<<"prometheus">>, <<"20510F381DB1CCAB818B4CF2FAC5FA6AB5CC91BC364A154399901C001465F46F">>}, + {<<"prometheus">>, <<"B95F8DE8530F541BD95951E18E355A840003672E5EDA4788C5FA6183406BA29A">>}, + {<<"quantile_estimator">>, <<"EF50A361F11B5F26B5F16D0696E46A9E4661756492C981F7B2229EF42FF1CD15">>}, {<<"ranch">>, <<"8C7A100A139FD57F17327B6413E4167AC559FBC04CA7448E9BE9057311597A1D">>}, {<<"ssl_verify_fun">>, <<"354C321CF377240C7B8716899E182CE4890C5938111A1296ADD3EC74CF1715DF">>}, - {<<"unicode_util_compat">>, <<"BC84380C9AB48177092F43AC89E4DFA2C6D62B40B8BD132B1059ECC7232F9A78">>}]}, + {<<"unicode_util_compat">>, <<"A48703A25C170EEDADCA83B11E88985AF08D35F37C6F664D6DCFB106A97782FC">>}]}, {pkg_hash_ext,[ {<<"cache">>, <<"44516CE6FA03594D3A2AF025DD3A87BFE711000EB730219E1DDEFC816E0AA2F4">>}, {<<"certifi">>, <<"6AC7EFC1C6F8600B08D625292D4BBF584E14847CE1B6B5C44D983D273E1097EA">>}, @@ -147,11 +149,12 @@ {<<"idna">>, <<"92376EB7894412ED19AC475E4A86F7B413C1B9FBB5BD16DCCD57934157944CEA">>}, {<<"jsx">>, <<"0C5CC8FDC11B53CC25CF65AC6705AD39E54ECC56D1C22E4ADB8F5A53FB9427F3">>}, {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>}, - {<<"mimerl">>, <<"A1E15A50D1887217DE95F0B9B0793E32853F7C258A5CD227650889B38839FE9D">>}, + {<<"mimerl">>, <<"13AF15F9F68C65884ECCA3A3891D50A7B57D82152792F3E19D88650AA126B144">>}, {<<"opentelemetry_api">>, <<"3DFBBFAA2C2ED3121C5C483162836C4F9027DEF469C41578AF5EF32589FCFC58">>}, {<<"parse_trans">>, <<"07CD9577885F56362D414E8C4C4E6BDF10D43A8767ABB92D24CBE8B24C54888B">>}, - {<<"prometheus">>, <<"4905FD2992F8038ECCD7AA0CD22F40637ED618C0BED1F75C05AACEC15B7545DE">>}, + {<<"prometheus">>, <<"719862351AABF4DF7079B05DC085D2BBCBE3AC0AC3009E956671B1D5AB88247D">>}, + {<<"quantile_estimator">>, <<"282A8A323CA2A845C9E6F787D166348F776C1D4A41EDE63046D72D422E3DA946">>}, {<<"ranch">>, <<"49FBCFD3682FAB1F5D109351B61257676DA1A2FDBE295904176D5E521A2DDFE5">>}, {<<"ssl_verify_fun">>, <<"FE4C190E8F37401D30167C8C405EDA19469F34577987C76DDE613E838BBC67F8">>}, - {<<"unicode_util_compat">>, <<"25EEE6D67DF61960CF6A794239566599B09E17E668D3700247BC498638152521">>}]} + {<<"unicode_util_compat">>, <<"B3A917854CE3AE233619744AD1E0102E05673136776FB2FA76234F3E03B23642">>}]} ]. diff --git a/src/wapi_domain_backend.erl b/src/wapi_domain_backend.erl index 85ee486..3a063d4 100644 --- a/src/wapi_domain_backend.erl +++ b/src/wapi_domain_backend.erl @@ -1,7 +1,7 @@ -module(wapi_domain_backend). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). --include_lib("damsel/include/dmsl_domain_conf_thrift.hrl"). +-include_lib("damsel/include/dmsl_domain_conf_v2_thrift.hrl"). -type response_data() :: wapi_handler_utils:response_data(). @@ -63,9 +63,9 @@ object(ObjectRef) -> -spec object(dmt_client:version(), dmt_client:object_ref()) -> {ok, object_data()} | {error, notfound}. object(Ref, {Type, ObjectRef}) -> try dmt_client:checkout_object(Ref, {Type, ObjectRef}) of - {Type, {_RecordName, ObjectRef, ObjectData}} -> + #domain_conf_v2_VersionedObject{object = {Type, {_RecordName, ObjectRef, ObjectData}}} -> {ok, ObjectData} catch - #domain_conf_ObjectNotFound{} -> + #domain_conf_v2_ObjectNotFound{} -> {error, notfound} end. diff --git a/src/wapi_withdrawal_quote.erl b/src/wapi_withdrawal_quote.erl index 2d675d2..b208e59 100644 --- a/src/wapi_withdrawal_quote.erl +++ b/src/wapi_withdrawal_quote.erl @@ -152,7 +152,7 @@ payload_v2_decoding_test() -> "owMDowMC4zMjFaDAAFDQAHDAwAAAABDwAIDAAAAAEMAAEAAAAPAAgMAAAAAQwAAQAAAAAMAAY" "IAAMAAAPoCAAEAAAAAgsAAQAAAAM3MDAADAAHDAABDAABDQAHDAwAAAABDwAIDAAAAAEMAAEA" "AAAPAAgMAAAAAQwAAQAAAAAAAAsACAAAABgxOTcwLTAxLTAxVDAwOjAwOjAwLjIzNFoKAAkAA" - "AAAAAAAAQoACgAAAAAAAAACAA==" + "AAAAAAAAQA=" >> }, ?assertEqual( diff --git a/test/wapi_ct_helper.erl b/test/wapi_ct_helper.erl index 8307e56..b5c0d6d 100644 --- a/test/wapi_ct_helper.erl +++ b/test/wapi_ct_helper.erl @@ -1,7 +1,7 @@ -module(wapi_ct_helper). -include_lib("common_test/include/ct.hrl"). --include_lib("damsel/include/dmsl_domain_conf_thrift.hrl"). +-include_lib("damsel/include/dmsl_domain_conf_v2_thrift.hrl"). -include_lib("damsel/include/dmsl_domain_thrift.hrl"). -include_lib("wapi_wallet_dummy_data.hrl"). -include_lib("wapi_token_keeper_data.hrl"). @@ -181,24 +181,47 @@ start_app({dmt_client = AppName, SupPid}) -> PartyConfigObject = #domain_PartyConfigObject{ref = #domain_PartyConfigRef{id = ?STRING}, data = PartyConfig}, Urls = mock_services_( [ - {domain_config, fun - ('Checkout', _) -> - {ok, #domain_conf_Snapshot{ - version = 1, - domain = #{ - {wallet_config, #domain_WalletConfigRef{id = ?STRING}} => - {wallet_config, WalletConfigObject}, - {party_config, #domain_PartyConfigRef{id = ?STRING}} => {party_config, PartyConfigObject} - } + {domain_config_client, fun + ('CheckoutObject', {{version, ?INTEGER}, {wallet_config, #domain_WalletConfigRef{id = ?STRING}}}) -> + {ok, #domain_conf_v2_VersionedObject{ + info = #domain_conf_v2_VersionedObjectInfo{ + version = ?INTEGER, + changed_at = genlib_rfc3339:format(genlib_time:unow(), second), + changed_by = #domain_conf_v2_Author{ + id = ?STRING, + name = ?STRING, + email = ?STRING + } + }, + object = {wallet_config, WalletConfigObject} + }}; + ('CheckoutObject', {{version, ?INTEGER}, {party_config, #domain_PartyConfigRef{id = ?STRING}}}) -> + {ok, #domain_conf_v2_VersionedObject{ + info = #domain_conf_v2_VersionedObjectInfo{ + version = ?INTEGER, + changed_at = genlib_rfc3339:format(genlib_time:unow(), second), + changed_by = #domain_conf_v2_Author{ + id = ?STRING, + name = ?STRING, + email = ?STRING + } + }, + object = {party_config, PartyConfigObject} }}; - ('PullRange', _) -> - {ok, #{}} + ('CheckoutObject', _) -> + woody_error:raise(business, #domain_conf_v2_ObjectNotFound{}) + end}, + {domain_config, fun('GetLatestVersion', _) -> + {ok, ?INTEGER} end} ], SupPid ), start_app_with(AppName, [ - {service_urls, #{'Repository' => maps:get(domain_config, Urls)}} + {service_urls, #{ + 'Repository' => maps:get(domain_config, Urls), + 'RepositoryClient' => maps:get(domain_config_client, Urls) + }} ]); start_app({wapi_lib = AppName, Config}) -> start_app_with(AppName, [ @@ -322,6 +345,8 @@ mock_services_(Services, SupPid) when is_pid(SupPid) -> Acc#{ServiceName => #{'Bender' => make_url(ServiceName, Port)}}; domain_config -> Acc#{ServiceName => make_url(ServiceName, Port)}; + domain_config_client -> + Acc#{ServiceName => make_url(ServiceName, Port)}; _ -> WapiWoodyClient = maps:get(wapi_lib, Acc, #{}), Acc#{wapi_lib => WapiWoodyClient#{ServiceName => make_url(ServiceName, Port)}} @@ -345,7 +370,9 @@ mock_service_handler({ServiceName = bouncer, Fun}) -> mock_service_handler({ServiceName = org_management, Fun}) -> mock_service_handler(ServiceName, {orgmgmt_authctx_provider_thrift, 'AuthContextProvider'}, Fun); mock_service_handler({ServiceName = domain_config, Fun}) -> - mock_service_handler(ServiceName, {dmsl_domain_conf_thrift, 'Repository'}, Fun); + mock_service_handler(ServiceName, {dmsl_domain_conf_v2_thrift, 'Repository'}, Fun); +mock_service_handler({ServiceName = domain_config_client, Fun}) -> + mock_service_handler(ServiceName, {dmsl_domain_conf_v2_thrift, 'RepositoryClient'}, Fun); mock_service_handler({ServiceName, Fun}) -> mock_service_handler(ServiceName, wapi_woody_client:get_service_modname(ServiceName), Fun); mock_service_handler({ServiceName, WoodyService, Fun}) ->