Skip to content

Conversation

ntrevino-virtru
Copy link
Contributor

@ntrevino-virtru ntrevino-virtru commented Aug 13, 2025

Proposed Changes

  • Goal: Support custom loaders of core configuration, to allow extensibility in downstream integrators.

Checklist

  • I have added or updated unit tests
  • I have added or updated integration tests (if appropriate)
  • I have added or updated documentation

Testing Instructions

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @ntrevino-virtru, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the application's configuration loading system. The primary goal is to decompose the monolithic configuration loading into a more modular and extensible architecture. This is achieved by introducing a new Loader interface and providing distinct implementations for loading configuration from environment variables, configuration files, and default settings. The main LoadConfig function now accepts an ordered list of these loaders, allowing for clear precedence and a more robust configuration pipeline. This change improves maintainability and flexibility for future configuration requirements.

Highlights

  • Modular Configuration Loading: The core configuration loading logic has been refactored to support a modular, ordered approach. Instead of a single LoadConfig function handling all concerns, the system now uses a slice of Loader interfaces, allowing different sources (environment variables, config files, default settings) to contribute to the final configuration in a defined precedence.
  • New Loader Implementations: Three new Loader implementations have been introduced: ConfigFileLoader for file-based configuration, EnvironmentValueLoader for environment variables, and DefaultSettingsLoader for built-in default values. This separation of concerns makes the configuration system more extensible and easier to understand.
  • Updated Core Configuration Function: The LoadConfig function in service/pkg/config/config.go has been updated to accept a list of Loader interfaces. It now orchestrates the loading process, applying defaults and validating the configuration at each step. This change centralizes the loading logic while delegating source-specific details to individual loaders.
  • Explicit Configuration Loader Ordering: The application's startup process in service/pkg/server/start.go now explicitly defines and uses an ordered list of configuration loaders. This ensures that configuration values are applied in a predictable sequence (e.g., environment variables override file settings, which override defaults).
  • Configuration Tag Naming Consistency: Several mapstructure and json tags in configuration structs (e.g., service/internal/auth/config.go, service/pkg/db/db.go) have been updated for consistency, primarily changing from snake_case to camelCase for better alignment with Go's idiomatic naming conventions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


Config's old ways gone, New loaders now take their place, Order brings clear path.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the configuration loading mechanism to be more modular and extensible by introducing a Loader interface. This is a significant improvement to the configuration management.

However, there are a few critical issues that need to be addressed:

  • The config hot-reloading feature appears to be broken by this refactoring.
  • There is a bug in service/pkg/server/start.go that leads to an incorrect allow-list for environment variables.
  • Error handling in cmd packages now uses panic instead of returning errors, which is incorrect for the function signatures.

Additionally, this PR introduces breaking changes by renaming configuration keys from snake_case to camelCase (e.g., cache_refresh_interval to cacheRefreshInterval). This should be clearly documented for users.

I've left detailed comments on these issues and some other suggestions for improving code quality and maintainability.

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Error permission_denied: permission denied
Total Time 14.843391ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Error permission_denied: permission denied
Total Time 11.575601ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

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

Error Summary

Error Message Occurrences
failed to get allowlist from registry: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 1 occurrences

TDF3 Benchmark Results:

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

Error Summary:

Error Message Occurrences
LoadTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

NANOTDF Benchmark Results:

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

Error Summary:

Error Message Occurrences
ReadNanoTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Error permission_denied: permission denied
Total Time 12.613577ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Error permission_denied: permission denied
Total Time 13.113304ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

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

Error Summary

Error Message Occurrences
failed to get allowlist from registry: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 1 occurrences

TDF3 Benchmark Results:

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

Error Summary:

Error Message Occurrences
LoadTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

NANOTDF Benchmark Results:

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

Error Summary:

Error Message Occurrences
ReadNanoTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Error permission_denied: permission denied
Total Time 16.34824ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Error permission_denied: permission denied
Total Time 12.536622ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

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

Error Summary

Error Message Occurrences
failed to get allowlist from registry: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 1 occurrences

TDF3 Benchmark Results:

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

Error Summary:

Error Message Occurrences
LoadTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

NANOTDF Benchmark Results:

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

Error Summary:

Error Message Occurrences
ReadNanoTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

@ntrevino-virtru ntrevino-virtru marked this pull request as ready for review August 22, 2025 16:01
@ntrevino-virtru ntrevino-virtru requested a review from a team as a code owner August 22, 2025 16:01
Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Error permission_denied: permission denied
Total Time 18.551923ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Error permission_denied: permission denied
Total Time 11.681357ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

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

Error Summary

Error Message Occurrences
failed to get allowlist from registry: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 1 occurrences

TDF3 Benchmark Results:

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

Error Summary:

Error Message Occurrences
LoadTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

NANOTDF Benchmark Results:

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

Error Summary:

Error Message Occurrences
ReadNanoTDF error: allowListFromKASRegistry failed: kasregistry.ListKeyAccessServers failed: permission_denied: permission denied 5000 occurrences

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 347.438305ms
Throughput 287.82 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.165230336s
Average Latency 359.706906ms
Throughput 138.25 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.175139592s
Average Latency 250.912319ms
Throughput 198.61 requests/second

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 353.950881ms
Throughput 282.53 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.936876868s
Average Latency 366.991894ms
Throughput 135.37 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.057397454s
Average Latency 259.662336ms
Throughput 191.88 requests/second

@ntrevino-virtru ntrevino-virtru force-pushed the chore/dspx-1543/decompose-config-loading branch from 579ff36 to 39a64e5 Compare August 25, 2025 23:11
Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 363.826763ms
Throughput 274.86 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.582932894s
Average Latency 364.033054ms
Throughput 136.68 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.527859262s
Average Latency 254.169234ms
Throughput 195.86 requests/second

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 350.33716ms
Throughput 285.44 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.417921834s
Average Latency 362.644079ms
Throughput 137.30 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.641568831s
Average Latency 255.467565ms
Throughput 195.00 requests/second

@dmihalcik-virtru
Copy link
Member

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is a significant and well-executed refactoring of the configuration loading mechanism. It decomposes the monolithic config loader into smaller, more specialized loaders for environment variables, config files, and default settings. This greatly improves modularity, flexibility, and testability. The new Reload logic with its dependency-aware iteration is a clever solution for handling complex configuration scenarios. I've found one bug in the environment variable change detection and an opportunity to reduce code duplication in the cmd package. Overall, great work on this complex change.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the configuration loading mechanism by decomposing it into a system of prioritized loaders. This is a significant improvement for flexibility and maintainability. The changes introduce FileLoader, EnvironmentValueLoader, and DefaultSettingsLoader, which are managed by a new Reload mechanism in the main Config object.

My review has identified several areas for improvement:

  • There is code duplication in command files for initializing the configuration loaders.
  • There are several breaking changes in mapstructure and json tags for configuration keys, which will impact users with existing configuration files. These should be carefully considered and communicated.
  • A potential bug was found in the Watch implementation for environment variables, where value changes might be missed.
  • A minor issue with logging severity was also noted.

Overall, this is a solid refactoring, but the breaking changes and the bug in the watch logic need to be addressed.

@ntrevino-virtru ntrevino-virtru force-pushed the chore/dspx-1543/decompose-config-loading branch from 4fe7dae to b4a375d Compare September 2, 2025 17:55
Copy link
Contributor

github-actions bot commented Sep 2, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 346.513834ms
Throughput 288.59 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.495796965s
Average Latency 373.88613ms
Throughput 133.35 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.808666591s
Average Latency 256.891599ms
Throughput 193.73 requests/second

Copy link
Contributor

github-actions bot commented Sep 2, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 348.809ms
Throughput 286.69 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.912817243s
Average Latency 367.518995ms
Throughput 135.45 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.204322394s
Average Latency 261.096043ms
Throughput 190.81 requests/second

@ntrevino-virtru
Copy link
Contributor Author

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and well-designed refactoring of the configuration loading mechanism, making it more extensible and robust through the use of loaders. The stabilization loop in the Reload function to handle inter-loader dependencies is a particularly strong addition. My review includes suggestions to reduce code duplication, improve error handling in a library function, and optimize performance in a few areas.

Copy link
Contributor

github-actions bot commented Sep 2, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 356.70127ms
Throughput 280.35 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.723714632s
Average Latency 365.732005ms
Throughput 136.15 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.892766123s
Average Latency 258.080875ms
Throughput 193.10 requests/second

🤖 I have created a release *beep* *boop*
---


##
[0.4.0](lib/ocrypto/v0.3.0...lib/ocrypto/v0.4.0)
(2025-09-02)


### Features

* add AES protected key interface and implementation
([#2599](#2599))
([2bb7eb0](2bb7eb0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
@jp-ayyappan jp-ayyappan requested a review from a team as a code owner September 4, 2025 16:04
Copy link
Contributor

github-actions bot commented Sep 4, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 347.254477ms
Throughput 287.97 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.578871066s
Average Latency 363.729275ms
Throughput 136.69 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.529978483s
Average Latency 254.239538ms
Throughput 195.85 requests/second

Copy link
Contributor

github-actions bot commented Sep 4, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 360.834115ms
Throughput 277.14 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.644922138s
Average Latency 364.731917ms
Throughput 136.44 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.358243837s
Average Latency 252.693518ms
Throughput 197.17 requests/second

Copy link
Contributor

github-actions bot commented Sep 5, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 354.744112ms
Throughput 281.89 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.158424833s
Average Latency 369.885926ms
Throughput 134.56 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.83531905s
Average Latency 257.598032ms
Throughput 193.53 requests/second

jakedoublev
jakedoublev previously approved these changes Sep 5, 2025
@ntrevino-virtru ntrevino-virtru force-pushed the chore/dspx-1543/decompose-config-loading branch from 7b202a3 to 2b877ae Compare September 5, 2025 20:54
Copy link
Contributor

github-actions bot commented Sep 5, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 348.025642ms
Throughput 287.34 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.178181054s
Average Latency 359.249739ms
Throughput 138.20 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.462594952s
Average Latency 253.712802ms
Throughput 196.37 requests/second

@ntrevino-virtru ntrevino-virtru added this pull request to the merge queue Sep 7, 2025
Merged via the queue into main with commit 5290a51 Sep 7, 2025
32 checks passed
@ntrevino-virtru ntrevino-virtru deleted the chore/dspx-1543/decompose-config-loading branch September 7, 2025 05:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants