diff --git a/.github/workflows/erlang-checks.yaml b/.github/workflows/erlang-checks.yaml index 59fdaab..739f03e 100644 --- a/.github/workflows/erlang-checks.yaml +++ b/.github/workflows/erlang-checks.yaml @@ -38,4 +38,4 @@ jobs: thrift-version: ${{ needs.setup.outputs.thrift-version }} run-ct-with-compose: true use-coveralls: true - cache-version: v3 + cache-version: v4 diff --git a/apps/hellgate/src/hg_routing.erl b/apps/hellgate/src/hg_routing.erl index 30dcec9..9ed372a 100644 --- a/apps/hellgate/src/hg_routing.erl +++ b/apps/hellgate/src/hg_routing.erl @@ -647,6 +647,7 @@ check_terms_acceptability(recurrent_payment, Terms, VS) -> acceptable_payment_terms( #domain_PaymentsProvisionTerms{ allow = Allow, + global_allow = GlobalAllow, currencies = CurrenciesSelector, categories = CategoriesSelector, payment_methods = PMsSelector, @@ -660,7 +661,8 @@ acceptable_payment_terms( % TODO varsets getting mixed up % it seems better to pass down here hierarchy of contexts w/ appropriate module accessors ParentName = 'PaymentsProvisionTerms', - _ = acceptable_allow(ParentName, Allow), + _ = acceptable_allow(ParentName, global_allow, GlobalAllow), + _ = acceptable_allow(ParentName, allow, Allow), _ = try_accept_term(ParentName, currency, getv(currency, VS), CurrenciesSelector), _ = try_accept_term(ParentName, category, getv(category, VS), CategoriesSelector), _ = try_accept_term(ParentName, payment_tool, getv(payment_tool, VS), PMsSelector), @@ -723,14 +725,14 @@ acceptable_partial_refunds_terms( acceptable_partial_refunds_terms(undefined, _RVS) -> throw(?rejected({'PartialRefundsProvisionTerms', undefined})). -acceptable_allow(_ParentName, undefined) -> +acceptable_allow(_ParentName, _Type, undefined) -> true; -acceptable_allow(_ParentName, {constant, true}) -> +acceptable_allow(_ParentName, _Type, {constant, true}) -> true; -acceptable_allow(ParentName, {constant, false}) -> - throw(?rejected({ParentName, allow})); -acceptable_allow(_ParentName, Ambiguous) -> - error({misconfiguration, {'Could not reduce predicate to a value', {allow, Ambiguous}}}). +acceptable_allow(ParentName, Type, {constant, false}) -> + throw(?rejected({ParentName, Type})); +acceptable_allow(_ParentName, Type, Ambiguous) -> + error({misconfiguration, {'Could not reduce predicate to a value', {Type, Ambiguous}}}). %% diff --git a/apps/hellgate/test/hg_ct_domain.hrl b/apps/hellgate/test/hg_ct_domain.hrl index 748d021..334424a 100644 --- a/apps/hellgate/test/hg_ct_domain.hrl +++ b/apps/hellgate/test/hg_ct_domain.hrl @@ -177,6 +177,7 @@ -define(payment_terms, #domain_PaymentsProvisionTerms{ allow = {constant, true}, + global_allow = {constant, true}, currencies = {value, ?ordset([ diff --git a/apps/hellgate/test/hg_route_rules_tests_SUITE.erl b/apps/hellgate/test/hg_route_rules_tests_SUITE.erl index ed36262..2a22d47 100644 --- a/apps/hellgate/test/hg_route_rules_tests_SUITE.erl +++ b/apps/hellgate/test/hg_route_rules_tests_SUITE.erl @@ -249,7 +249,8 @@ mock_party_management(SupPid) -> ?candidate({constant, true}, ?trm(1)), ?candidate({constant, true}, ?trm(2)), ?candidate({constant, true}, ?trm(3)), - ?candidate({constant, true}, ?trm(4)) + ?candidate({constant, true}, ?trm(4)), + ?candidate({constant, true}, ?trm(7)) ]} }}; ('ComputeRoutingRuleset', {?ruleset(1), ?base_routing_rule_domain_revision, _}) -> @@ -334,6 +335,13 @@ mock_party_management(SupPid) -> allow = {constant, false} } }}; + ('ComputeProviderTerminalTerms', {?prv(7), _, ?base_routing_rule_domain_revision, _}) -> + {ok, #domain_ProvisionTermSet{ + payments = ?payment_terms#domain_PaymentsProvisionTerms{ + allow = {constant, true}, + global_allow = {constant, false} + } + }}; ('ComputeProviderTerminalTerms', {?prv(1), _, ?routing_with_risk_coverage_set_domain_revision, _}) -> {ok, #domain_ProvisionTermSet{ payments = ?payment_terms#domain_PaymentsProvisionTerms{ @@ -455,7 +463,8 @@ no_route_found_for_payment(_C) -> {?prv(1), ?trm(1), {'PaymentsProvisionTerms', cost}}, {?prv(2), ?trm(2), {'PaymentsProvisionTerms', category}}, {?prv(3), ?trm(3), {'PaymentsProvisionTerms', payment_tool}}, - {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}} + {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}}, + {?prv(7), ?trm(7), {'PaymentsProvisionTerms', global_allow}} ], RejectedRoutes1 ), @@ -474,7 +483,8 @@ no_route_found_for_payment(_C) -> {?prv(1), ?trm(1), {'PaymentsProvisionTerms', currency}}, {?prv(2), ?trm(2), {'PaymentsProvisionTerms', category}}, {?prv(3), ?trm(3), {'PaymentsProvisionTerms', payment_tool}}, - {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}} + {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}}, + {?prv(7), ?trm(7), {'PaymentsProvisionTerms', global_allow}} ], RejectedRoutes2 ). @@ -513,7 +523,8 @@ gather_route_success(_C) -> [ {?prv(2), ?trm(2), {'PaymentsProvisionTerms', category}}, {?prv(3), ?trm(3), {'PaymentsProvisionTerms', payment_tool}}, - {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}} + {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}}, + {?prv(7), ?trm(7), {'PaymentsProvisionTerms', global_allow}} ], RejectedRoutes ). @@ -553,7 +564,8 @@ rejected_by_table_prohibitions(_C) -> {?prv(3), ?trm(3), {'RoutingRule', undefined}}, {?prv(1), ?trm(1), {'PaymentsProvisionTerms', payment_tool}}, {?prv(2), ?trm(2), {'PaymentsProvisionTerms', category}}, - {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}} + {?prv(4), ?trm(4), {'PaymentsProvisionTerms', allow}}, + {?prv(7), ?trm(7), {'PaymentsProvisionTerms', global_allow}} ], RejectedRoutes ), @@ -620,11 +632,11 @@ ruleset_misconfig(_C) -> -spec routes_selected_for_low_risk_score(config()) -> test_return(). routes_selected_for_low_risk_score(C) -> - routes_selected_with_risk_score(C, low, [?prv(1), ?prv(2), ?prv(3), ?prv(4)]). + routes_selected_with_risk_score(C, low, [?prv(1), ?prv(2), ?prv(3), ?prv(4), ?prv(7)]). -spec routes_selected_for_high_risk_score(config()) -> test_return(). routes_selected_for_high_risk_score(C) -> - routes_selected_with_risk_score(C, high, [?prv(2), ?prv(3), ?prv(4)]). + routes_selected_with_risk_score(C, high, [?prv(2), ?prv(3), ?prv(4), ?prv(7)]). routes_selected_with_risk_score(_C, RiskScore, ProviderRefs) -> Currency = ?cur(<<"RUB">>), @@ -879,6 +891,7 @@ construct_domain_fixture() -> {terminal, ?trm(4)} => {terminal, ?terminal_obj(?trm(4), ?prv(4))}, {terminal, ?trm(5)} => {terminal, ?terminal_obj(?trm(5), ?prv(5))}, {terminal, ?trm(6)} => {terminal, ?terminal_obj(?trm(6), ?prv(6))}, + {terminal, ?trm(7)} => {terminal, ?terminal_obj(?trm(7), ?prv(7))}, {terminal, ?trm(11)} => {terminal, ?terminal_obj(?trm(11), ?prv(11))}, {terminal, ?trm(12)} => {terminal, ?terminal_obj(?trm(12), ?prv(12))}, {payment_institution, ?pinst(1)} => diff --git a/compose.yaml b/compose.yaml index 42b1be8..130b7a2 100644 --- a/compose.yaml +++ b/compose.yaml @@ -20,14 +20,14 @@ services: limiter: condition: service_healthy shumway: - condition: service_healthy + condition: service_started bender: condition: service_healthy working_dir: $PWD command: /sbin/init dominant: - image: ghcr.io/valitydev/dominant:sha-fdf5277 + image: ghcr.io/valitydev/dominant:sha-486d2ef command: /opt/dominant/bin/dominant foreground depends_on: machinegun: @@ -69,7 +69,7 @@ services: machinegun: condition: service_healthy shumway: - condition: service_healthy + condition: service_started healthcheck: test: "/opt/limiter/bin/limiter ping" interval: 5s @@ -77,8 +77,12 @@ services: retries: 20 shumway: - image: docker.io/rbkmoney/shumway:44eb989065b27be619acd16b12ebdb2288b46c36 + image: ghcr.io/valitydev/shumway:sha-658587c restart: unless-stopped + depends_on: + - shumway-db + ports: + - "8022" entrypoint: - java - -Xmx512m @@ -87,15 +91,10 @@ services: - --spring.datasource.url=jdbc:postgresql://shumway-db:5432/shumway - --spring.datasource.username=postgres - --spring.datasource.password=postgres - - --management.metrics.export.statsd.enabled=false - depends_on: - shumway-db: - condition: service_healthy + - --management.endpoint.metrics.enabled=false + - --management.endpoint.prometheus.enabled=false healthcheck: - test: "curl http://localhost:8023/actuator/health" - interval: 5s - timeout: 1s - retries: 40 + disable: true party-management: image: ghcr.io/valitydev/party-management:sha-18bba50 @@ -106,7 +105,7 @@ services: dominant: condition: service_started shumway: - condition: service_healthy + condition: service_started healthcheck: test: "/opt/party-management/bin/party-management ping" interval: 10s @@ -114,14 +113,10 @@ services: retries: 10 shumway-db: - image: docker.io/library/postgres:9.6 + image: docker.io/library/postgres:13.10 + ports: + - "5432" environment: - POSTGRES_DB=shumway - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - - SERVICE_NAME=shumway-db - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 5s - timeout: 5s - retries: 5 diff --git a/rebar.lock b/rebar.lock index 126115a..1d629f2 100644 --- a/rebar.lock +++ b/rebar.lock @@ -17,7 +17,7 @@ {<<"cowlib">>,{pkg,<<"cowlib">>,<<"2.11.0">>},2}, {<<"damsel">>, {git,"https://github.com/valitydev/damsel.git", - {ref,"2374f52326fb9b10e79e0ec0a769af35529938e9"}}, + {ref,"c65fc2e6a829f440a82720b3602b7bab4f30b71d"}}, 0}, {<<"dmt_client">>, {git,"https://github.com/valitydev/dmt-client.git",