Skip to content

chore(ers): add multi-strategy provider contract matrix - #3809

Open
jrschumacher wants to merge 2 commits into
fix/3801-chain-no-rehydratefrom
test-3801-provider-contract-matrix
Open

chore(ers): add multi-strategy provider contract matrix#3809
jrschumacher wants to merge 2 commits into
fix/3801-chain-no-rehydratefrom
test-3801-provider-contract-matrix

Conversation

@jrschumacher

Copy link
Copy Markdown
Member

Summary

  • add a shared resolved-token-chain contract suite for multi-strategy providers
  • enroll claims, SQLite-backed SQL, and seeded LDAP adapters in the same single-token and multi-token scenarios
  • verify token flow avoids a second ResolveEntities call while caller-provided entity chains still use ERS
  • document how new providers and new behavior variations join the matrix

Validation

  • cd service && go test ./entityresolution/integration -run TestMultiStrategyProviderResolvedTokenChainContract -count=1
  • cd service && go test ./entityresolution/multi-strategy/... ./internal/access/v2 -count=1 -coverprofile=/tmp/3801-enhanced.cover
  • cd service && go test ./entityresolution/integration -run "Test(MultiStrategyProviderResolvedTokenChainContract|MultiStrategyEntityResolutionV2|Integration_ResolveEntities_ReturnsPopulatedRepresentation|Integration_TokenChainPreservesResolvedClaims|Integration_FailureIsolation_MixedBatch)" -count=1
  • cd service && golangci-lint run ./internal/access/v2 ./entityresolution/integration
  • go test ./tests-bdd/cukes -count=1

Coverage

  • service/internal/access/v2: 68.5% -> 70.1%
  • aggregate targeted packages: 55.2% -> 55.8%

Stacked on #3808.

@jrschumacher
jrschumacher requested a review from a team as a code owner July 31, 2026 08:08
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ac87c948-abfe-444b-8091-00d82e5bca89

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 205.202277ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 113.959057ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 0
Failed Decrypts 100
Total Time 266.161471ms
Throughput 0.00 requests/second

Error Summary

Error Message Occurrences
splitKey.unable to reconstruct split key: map[{https://localhost:8080 }:tdf: rewrap request 403
kao unwrap failed for split {https://localhost:8080 }: permission_denied: request error
rpc error: code = PermissionDenied desc = forbidden: pdp-denied]
tdf: rewrap request 403
kao unwrap failed for split {https://localhost:8080 }: permission_denied: request error
rpc error: code = PermissionDenied desc = forbidden: pdp-denied 100 occurrences

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 0
Failed Requests 5000
Concurrent Requests 50
Total Time 41.518467285s
Throughput 0.00 requests/second

Error Summary:

Error Message Occurrences
read error: reader.WriteTo failed: splitKey.unable to reconstruct split key: map[{https://localhost:8080 }:tdf: rewrap request 403
kao unwrap failed for split {https://localhost:8080 }: permission_denied: request error
rpc error: code = PermissionDenied desc = forbidden: pdp-denied]
tdf: rewrap request 403
kao unwrap failed for split {https://localhost:8080 }: permission_denied: request error
rpc error: code = PermissionDenied desc = forbidden: pdp-denied
5000 occurrences

@jrschumacher jrschumacher changed the title test(entityresolution): add multi-strategy provider contract matrix test(ers): add multi-strategy provider contract matrix Jul 31, 2026
@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch from 103cc9c to 1663292 Compare July 31, 2026 08:18
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 203.289019ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 111.025906ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 403.460748ms
Throughput 247.86 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 49.435820728s
Average Latency 492.287769ms
Throughput 101.14 requests/second

@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch from 1663292 to 7ae6c88 Compare July 31, 2026 08:36
@jrschumacher jrschumacher changed the title test(ers): add multi-strategy provider contract matrix chore(ers): add multi-strategy provider contract matrix Jul 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 276.22735ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 111.527638ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 574.389754ms
Throughput 174.10 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 49.779284466s
Average Latency 496.290737ms
Throughput 100.44 requests/second

@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch 2 times, most recently from 0eb2217 to 5ef0af5 Compare July 31, 2026 08:56
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 212.945614ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 108.760074ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 410.632351ms
Throughput 243.53 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 49.479333661s
Average Latency 493.43816ms
Throughput 101.05 requests/second

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 205.840733ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 113.453232ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 436.429735ms
Throughput 229.13 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 52.45521858s
Average Latency 521.979738ms
Throughput 95.32 requests/second

strantalis
strantalis previously approved these changes Aug 4, 2026
@jrschumacher
jrschumacher dismissed strantalis’s stale review August 4, 2026 18:58

The merge-base changed after approval.

@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch from 5ef0af5 to bf75d26 Compare August 4, 2026 18:58
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 124.485424ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 74.099289ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 292.048171ms
Throughput 342.41 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 32.996806071s
Average Latency 329.021784ms
Throughput 151.53 requests/second

khvirtru
khvirtru previously approved these changes Aug 4, 2026
strantalis
strantalis previously approved these changes Aug 4, 2026
elizabethhealy
elizabethhealy previously approved these changes Aug 4, 2026
@jrschumacher
jrschumacher dismissed stale reviews from elizabethhealy and strantalis August 5, 2026 14:42

The merge-base changed after approval.

@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch from bf75d26 to 0541af3 Compare August 5, 2026 14:42
@policy-bot-opentdf
policy-bot-opentdf Bot dismissed khvirtru’s stale review August 5, 2026 14:43

Invalidated by push of 0541af3

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 159.11225ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 78.880452ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 343.786838ms
Throughput 290.88 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 39.26290113s
Average Latency 391.390736ms
Throughput 127.35 requests/second

strantalis
strantalis previously approved these changes Aug 5, 2026
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 202.403087ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 117.793482ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 415.812191ms
Throughput 240.49 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 49.292343853s
Average Latency 491.073511ms
Throughput 101.44 requests/second

Signed-off-by: Ryan Schumacher <jschumacher@virtru.com>
@jrschumacher
jrschumacher force-pushed the test-3801-provider-contract-matrix branch from 72d990b to 7bf5613 Compare August 6, 2026 01:39
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 209.301469ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 116.041436ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 413.498736ms
Throughput 241.84 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 51.363433808s
Average Latency 511.785184ms
Throughput 97.35 requests/second

strantalis
strantalis previously approved these changes Aug 6, 2026
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

  • examples
  • otdfctl
  • sdk
  • service
  • lib/fixtures
  • tests-bdd

See the workflow run for details.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 126.062601ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 67.123637ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 277.104369ms
Throughput 360.87 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 29.469480801s
Average Latency 294.139458ms
Throughput 169.67 requests/second

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants