Skip to content

feat(loadtest): Add more auth tests - #1119

Open
gtema wants to merge 1 commit into
mainfrom
claude/loadtest-expansion-stress-u8i0j4
Open

feat(loadtest): Add more auth tests#1119
gtema wants to merge 1 commit into
mainfrom
claude/loadtest-expansion-stress-u8i0j4

Conversation

@gtema

@gtema gtema commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Expand the Goose load test into a stress-test suite: seeded users now
get a real shared password and a role on a dedicated auth project, so
password authentication (unscoped, project-scoped, and a negative
wrong-password case) can be exercised under load. Add token-rescoping
scenarios (rescope to system scope, and a negative rescope-to-a-
nonexistent-project case), a system-scoped auth scenario using the
initial bootstrap admin credentials, and an explicit check that a
revoked token no longer validates.

Split src/v3/auth.rs into a v3/auth/ module (lifecycle, password,
rescope, system) to keep each concern in its own file.

Assited-by: Claude noreply@anthropic.com
Signed-off-by: Artem Goncharov artem.goncharov@gmail.com

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown

🦢 Load Test Results

Goose Attack Report

Plan Overview

Action Started Stopped Elapsed Users
Increasing 26-07-30 18:26:04 26-07-30 18:26:29 00:00:25 0 → 45
Maintaining 26-07-30 18:26:29 26-07-30 18:26:59 00:00:30 45
Decreasing 26-07-30 18:26:59 26-07-30 18:26:59 00:00:00 0 ← 45

Request Metrics

Method Name # Requests # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
DELETE DELETE /v3/auth/tokens 118 0 265.89 57 348 3.93 0.00
DELETE DELETE /v3/projects/:id (teardown) 2 0 154.50 114 195 0.07 0.00
DELETE DELETE /v3/roles/:id (teardown) 2 0 96.00 71 121 0.07 0.00
DELETE DELETE /v3/users/:id (teardown) 3 0 154.33 86 189 0.10 0.00
GET 1393 0 284.59 190 450 46.43 0.00
GET GET /v3/auth/tokens (validate new) 118 0 268.61 183 370 3.93 0.00
GET GET /v3/auth/tokens (validate revoked) 120 0 247.89 11 360 4.00 0.00
GET GET /v3/projects/:id 228 0 266.79 185 394 7.60 0.00
GET GET /v3/projects/:id (catalog) 170 0 267.18 204 388 5.67 0.00
GET GET /v3/role_assignments 119 0 259.90 189 366 3.97 0.00
GET GET /v3/role_assignments?role.id 118 0 258.92 201 367 3.93 0.00
GET GET /v3/role_assignments?scope.domain.id 118 0 253.61 187 399 3.93 0.00
GET GET /v3/role_assignments?user.id 118 0 258.53 188 365 3.93 0.00
GET GET /v3/roles 340 0 268.96 190 399 11.33 0.00
GET GET /v3/roles/:id 227 0 268.27 197 402 7.57 0.00
GET GET /v3/users/:id 324 0 281.83 189 417 10.80 0.00
GET GET /v3/users/:id (catalog) 269 0 279.70 202 396 8.97 0.00
POST POST /v3/auth/tokens 116 0 252.61 194 345 3.87 0.00
POST POST /v3/auth/tokens (password, invalid) 31 0 1014.94 709 1357 1.03 0.00
POST POST /v3/auth/tokens (password, project-scoped) 58 0 1122.97 622 1616 1.93 0.00
POST POST /v3/auth/tokens (password, unscoped) 58 0 1012.14 559 1421 1.93 0.00
POST POST /v3/auth/tokens (rescope to system) 199 0 304.80 215 431 6.63 0.00
POST POST /v3/auth/tokens (rescope, invalid project) 121 0 251.38 194 345 4.03 0.00
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 56 0 1106.59 597 1712 1.87 0.00
Aggregated 4426 0 310.65 11 1712 147.53 0.00

Response Time Metrics

Method Name 50%ile (ms) 60%ile (ms) 70%ile (ms) 80%ile (ms) 90%ile (ms) 95%ile (ms) 99%ile (ms) 100%ile (ms)
DELETE DELETE /v3/auth/tokens 270 280 290 300 310 330 348 348
DELETE DELETE /v3/projects/:id (teardown) 114 114 114 195 195 195 195 195
DELETE DELETE /v3/roles/:id (teardown) 71 71 71 120 120 120 120 120
DELETE DELETE /v3/users/:id (teardown) 189 189 189 189 189 189 189 189
GET 280 290 300 320 340 360 410 450
GET GET /v3/auth/tokens (validate new) 270 270 280 290 320 320 360 370
GET GET /v3/auth/tokens (validate revoked) 250 250 260 280 300 320 340 360
GET GET /v3/projects/:id 260 270 280 290 310 330 370 390
GET GET /v3/projects/:id (catalog) 260 270 280 290 310 340 360 388
GET GET /v3/role_assignments 260 260 270 290 300 330 366 366
GET GET /v3/role_assignments?role.id 260 260 270 280 300 320 360 367
GET GET /v3/role_assignments?scope.domain.id 250 260 270 280 290 310 360 399
GET GET /v3/role_assignments?user.id 250 260 270 280 300 330 350 365
GET GET /v3/roles 260 270 280 290 320 340 390 399
GET GET /v3/roles/:id 260 270 280 300 320 330 390 400
GET GET /v3/users/:id 280 280 300 310 330 350 380 417
GET GET /v3/users/:id (catalog) 280 280 290 300 330 350 370 396
POST POST /v3/auth/tokens 250 250 260 280 300 320 340 345
POST POST /v3/auth/tokens (password, invalid) 1,000 1,000 1,000 1,000 1,000 1,000 1,000 1,000
POST POST /v3/auth/tokens (password, project-scoped) 1,000 1,000 1,000 1,000 1,000 1,000 1,616 1,616
POST POST /v3/auth/tokens (password, unscoped) 1,000 1,000 1,000 1,000 1,000 1,000 1,000 1,000
POST POST /v3/auth/tokens (rescope to system) 300 310 320 340 360 380 430 430
POST POST /v3/auth/tokens (rescope, invalid project) 250 250 260 280 300 320 330 345
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 1,000 1,000 1,000 1,000 1,000 1,000 1,000 1,712
Aggregated 270 280 300 310 350 410 1,000 1,712

Status Code Metrics

Method Name Status Codes
DELETE DELETE /v3/auth/tokens 118 [204]
DELETE DELETE /v3/projects/:id (teardown) 2 [204]
DELETE DELETE /v3/roles/:id (teardown) 2 [204]
DELETE DELETE /v3/users/:id (teardown) 3 [204]
GET 1,393 [200]
GET GET /v3/auth/tokens (validate new) 118 [200]
GET GET /v3/auth/tokens (validate revoked) 120 [404]
GET GET /v3/projects/:id 228 [200]
GET GET /v3/projects/:id (catalog) 170 [200]
GET GET /v3/role_assignments 119 [200]
GET GET /v3/role_assignments?role.id 118 [200]
GET GET /v3/role_assignments?scope.domain.id 118 [200]
GET GET /v3/role_assignments?user.id 118 [200]
GET GET /v3/roles 340 [200]
GET GET /v3/roles/:id 227 [200]
GET GET /v3/users/:id 324 [200]
GET GET /v3/users/:id (catalog) 269 [200]
POST POST /v3/auth/tokens 116 [201]
POST POST /v3/auth/tokens (password, invalid) 31 [401]
POST POST /v3/auth/tokens (password, project-scoped) 58 [201]
POST POST /v3/auth/tokens (password, unscoped) 58 [201]
POST POST /v3/auth/tokens (rescope to system) 199 [201]
POST POST /v3/auth/tokens (rescope, invalid project) 121 [401]
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 56 [201]
Aggregated 125 [204], 3,542 [200], 152 [401], 487 [201], 120 [404]

Transaction Metrics

Transaction # Times Run # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
ReadHeavy
0.0 1 0 41.00 41 41 0.03 0.00
0.1 222 0 285.00 202 416 7.40 0.00
0.2 223 0 269.13 192 363 7.43 0.00
0.3 223 0 266.59 191 389 7.43 0.00
TokenLifecycle
1.0 0 0 0.00 0 0 0.00 0.00
1.1 120 0 1035.39 622 1302 4.00 0.00
ValidateToken
2.0 0 0 0.00 0 0 0.00 0.00
2.1 284 0 320.64 233 450 9.47 0.00
UserCRUD
3.0 0 0 0.00 0 0 0.00 0.00
3.1 0 0 0.00 0 0 0.00 0.00
3.2 324 0 281.86 189 417 10.80 0.00
3.3 3 0 154.33 86 189 0.10 0.00
ProjectCRUD
4.0 0 0 0.00 0 0 0.00 0.00
4.1 0 0 0.00 0 0 0.00 0.00
4.2 228 0 266.82 185 394 7.60 0.00
4.3 2 0 154.50 114 195 0.07 0.00
RoleCRUD
5.0 0 0 0.00 0 0 0.00 0.00
5.1 0 0 0.00 0 0 0.00 0.00
5.2 227 0 268.29 197 402 7.57 0.00
5.3 2 0 96.00 71 121 0.07 0.00
RoleList
6.0 0 0 0.00 0 0 0.00 0.00
6.1 340 0 268.98 190 399 11.33 0.00
RoleAssignmentList
7.0 0 0 0.00 0 0 0.00 0.00
7.1 119 0 259.92 189 366 3.97 0.00
7.2 118 0 258.58 188 365 3.93 0.00
7.3 118 0 253.69 187 399 3.93 0.00
7.4 118 0 258.97 201 367 3.93 0.00
UserRead
8.0 0 0 0.00 0 0 0.00 0.00
8.1 270 0 285.02 206 405 9.00 0.00
8.2 269 0 279.74 202 396 8.97 0.00
ProjectRead
9.0 0 0 0.00 0 0 0.00 0.00
9.1 171 0 267.38 190 419 5.70 0.00
9.2 170 0 267.21 204 388 5.67 0.00
PasswordAuth
10.0 58 0 1012.19 559 1421 1.93 0.00
10.1 58 0 1123.02 622 1616 1.93 0.00
PasswordAuthNegative
11.0 31 0 1015.00 709 1357 1.03 0.00
Rescope
12.0 0 0 0.00 0 0 0.00 0.00
12.1 199 0 304.85 215 431 6.63 0.00
RescopeNegative
13.0 0 0 0.00 0 0 0.00 0.00
13.1 121 0 251.45 194 345 4.03 0.00
SystemScopeAuth
14.0 56 0 1106.61 597 1712 1.87 0.00
Aggregated 4075 0 337.40 41 1712 135.83 0.00

Scenario Metrics

Transaction # Users # Times Run Average (ms) Min (ms) Max (ms) Scenarios/s Iterations
ReadHeavy 6 218 821.26 662 1070 7.27 36.33
TokenLifecycle 4 116 1043.34 863 1302 3.87 29.00
ValidateToken 3 281 320.33 233 450 9.37 93.67
UserCRUD 3 321 281.85 189 417 10.70 107.00
ProjectCRUD 2 226 266.77 185 394 7.53 113.00
RoleCRUD 2 225 268.17 197 402 7.50 112.50
RoleList 3 337 268.82 190 399 11.23 112.33
RoleAssignmentList 4 117 1031.99 830 1281 3.90 29.25
UserRead 5 267 564.98 450 723 8.90 53.40
ProjectRead 3 168 534.89 432 687 5.60 56.00
PasswordAuth 4 57 2156.95 1289 2977 1.90 14.25
PasswordAuthNegative 1 30 1004.33 709 1357 1.00 30.00
Rescope 2 197 304.68 215 431 6.57 98.50
RescopeNegative 1 120 251.67 194 345 4.00 120.00
SystemScopeAuth 2 54 1109.56 597 1712 1.80 27.00
Aggregated 45 2734 496.14 185 2977 91.13 1032.23

Error Metrics

Method Name # Error
POST POST /v3/auth/tokens (password, invalid) 76 401 Unauthorized: POST /v3/auth/tokens (password, invalid)
POST POST /v3/auth/tokens (rescope, invalid project) 328 401 Unauthorized: POST /v3/auth/tokens (rescope, invalid project)
GET GET /v3/auth/tokens (validate revoked) 452 404 Not Found: GET /v3/auth/tokens (validate revoked)

View full report

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown

🧪 Tempest Identity Compatibility Results (advisory, non-blocking)

rust

Totals
======
Ran: 128 tests in 34.4885 sec.
 - Passed: 63
 - Skipped: 4
 - Expected Fail: 0
 - Unexpected Success: 0
 - Failed: 61
Sum of execute time for each test: 23.5115 sec.
Failed test IDs
===== FAILED TESTS (target=rust) =====
tempest.api.identity.admin.v3.test_application_credentials.ApplicationCredentialsV3AdminTest.test_create_application_credential_with_roles[id-3b3dd48f-3388-406a-a9e6-4d078a552d0e]
tempest.api.identity.admin.v3.test_credentials.CredentialsTestJSON.test_credentials_create_get_update_delete[id-7cd59bf9-bda4-4c72-9467-d21cab278355,smoke]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_create_domain_without_description[id-2abf8764-309a-4fa9-bc58-201b799817ad]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_create_update_delete_domain[id-f2f5b44a-82e8-4dad-8084-0661ea3b18cf,smoke]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_domain_delete_cascades_content[id-d8d318b7-d1b3-4c37-94c5-3c5ba0b121ea]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_list_domains_filter_by_enabled[id-3fd19840-65c1-43f8-b48c-51bdd066dff9]
tempest.api.identity.admin.v3.test_list_users.UsersV3TestJSON.test_list_users_with_not_enabled[id-bff8bf2f-9408-4ef5-b63a-753c8c2124eb]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_domain_config_and_show_config_groups_and_options[id-9e3ff13c-f597-4f01-9377-d6c06c2a1477]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_update_and_delete_domain_config[id-7161023e-5dd0-4612-9da0-1bac6ac30b63]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_update_and_delete_domain_config_groups_and_opts[id-c7510fa2-6661-4170-9c6b-4783a80651e9]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_show_default_group_config_and_options[id-11a02bf0-6f94-4380-b3b0-c8dc18fc0d22]
tempest.api.identity.admin.v3.test_default_project_id.TestDefaultProjectId.test_default_project_id[id-d6110661-6a71-49a7-a453-b5e26640ff6d]
tempest.api.identity.admin.v3.test_domains_negative.DomainsNegativeTestJSON.test_create_domain_with_name_length_over_64[id-37b1bbf2-d664-4785-9a11-333438586eae,negative]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_create_and_show_consumer[id-c8307ea6-a86c-47fd-ae7b-5b3b2caca76d]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_delete_consumer[id-fdfa1b7f-2a31-4354-b2c7-f6ae20554f93]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_list_consumers[id-09ca50de-78f2-4ffb-ac71-f2254036b2b8]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_update_consumer[id-080a9b1a-c009-47c0-9979-5305bf72e3dc]
tempest.api.identity.admin.v3.test_domains_negative.DomainsNegativeTestJSON.test_delete_active_domain[gate,id-1f3fbff5-4e44-400d-9ca1-d953f05f609b,negative]
setUpClass (tempest.api.identity.admin.v3.test_endpoint_groups.EndPointGroupsTest)
tempest.api.identity.admin.v3.test_groups.GroupsV3TestJSON.test_group_users_add_list_delete[id-1598521a-2f36-4606-8df9-30772bd51339,smoke]
tempest.api.identity.admin.v3.test_list_projects.ListProjectsTestJSON.test_list_projects_with_enabled[id-0fe7a334-675a-4509-b00e-1c4b95d5dae8]
tempest.api.identity.admin.v3.test_list_projects.ListProjectsTestJSON.test_list_projects_with_parent[id-6edc66f5-2941-4a17-9526-4073311c1fac]
tempest.api.identity.admin.v3.test_groups.GroupsV3TestJSON.test_list_user_groups[id-64573281-d26a-4a52-b899-503cb0f4e4ec]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_create_is_domain_project[id-a7eb9416-6f9b-4dbb-b71b-7f73aaef59d5]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_project_create_with_parent[id-1854f9c0-70bc-4d11-a08a-1c789d339e3d]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_project_get_equals_list[id-d1db68b6-aebe-4fa0-b79d-d724d2e21162]
setUpClass (tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON)
tempest.api.identity.admin.v3.test_policies.PoliciesTestJSON.test_create_update_delete_policy[id-e544703a-2f03-4cf2-9b0f-350782fdb0d3,smoke]
tempest.api.identity.admin.v3.test_policies.PoliciesTestJSON.test_list_policies[id-1a0ad286-2d06-4123-ab0d-728893a76201]
tempest.api.identity.admin.v3.test_list_projects.ListProjectsStaticTestJSON.test_list_projects[id-1d830662-22ad-427c-8c3e-4ec854b0af44]
tempest.api.identity.admin.v3.test_project_tags.IdentityV3ProjectTagsTest.test_list_update_delete_project_tags[id-7c123aac-999d-416a-a0fb-84b915ab10de]
tempest.api.identity.admin.v3.test_projects_negative.ProjectsNegativeStaticTestJSON.test_create_projects_name_length_over_64[id-502b6ceb-b0c8-4422-bf53-f08fdb21e2f0,negative]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_get_trusts_all[id-4773ebd5-ecbf-4255-b8d8-b63e6f72b65d,smoke]
tempest.api.identity.admin.v3.test_tokens.TokensV3TestJSON.test_get_available_domain_scopes[id-ec5ecb05-af64-4c04-ac86-4d9f6f12f185]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_get_trusts_query[id-6268b345-87ca-47c0-9ce3-37792b43403a]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_assignments_for_domain_roles[id-3859df7e-5b78-4e4d-b10e-214c8953842a]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_assignments_for_implied_roles_create_delete[id-c8828027-df48-4021-95df-b65b92c7429e]
tempest.api.identity.admin.v3.test_tokens.TokensV3TestJSON.test_rescope_token[id-565fa210-1da1-4563-999b-f7b5b67cf112]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_create_application_credential[id-8080c75c-eddc-4786-941a-c2da7039ae61]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_create_application_credential_expires[id-852daf0c-42b5-4239-8466-d193d0543ed3]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_list_application_credentials[id-ff0cd457-6224-46e7-b79e-0ada4964a8a6]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_query_application_credentials[id-9bb5e5cc-5250-493a-8869-8b665f6aa5f6]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_domain[id-4bf8a70b-e785-413a-ad53-9f91ce02faa7]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_project[id-cbf11737-1904-4690-9613-97bcbb3df1c4]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_system[id-c888fe4f-8018-48db-b959-542225c1b4b6]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_user_on_domain[id-6c9a2940-3625-43a3-ac02-5dcec62ef3bd]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_implied_domain_roles[id-eb1e1c24-1bc4-4d47-9748-e127a1852c82]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_implied_roles_create_check_show_delete[id-c90c316c-d706-4728-bcba-eb1912081b69]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_role_create_update_show_list[id-18afc6c0-46cf-4911-824e-9989cc056c3a,smoke]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_expire[id-0ed14b66-cefd-4b5c-a964-65759453e292]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265,smoke]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd,smoke]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_identity_v3_existence[id-79aec9ae-710f-4c54-a4fc-3aa25b4feac3]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_list_api_versions[id-721f480f-35b6-46c7-846e-047e6acea0dc,smoke]
tempest.api.identity.v3.test_projects.IdentityV3ProjectsTest.test_list_projects_returns_only_authorized_projects[id-86128d46-e170-4644-866a-cc487f699e1d]
tempest.api.identity.v3.test_catalog.IdentityCatalogTest.test_catalog_standardization[id-56b57ced-22b8-4127-9b8a-565dfb0207e2]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_impersonate[id-5a0a91a4-baef-4a14-baba-59bf4d7fcace]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_noimpersonate[id-ed2a8779-a7ac-49dc-afd7-30f32f936ed2]
tempest.api.identity.v3.test_tokens.TokensV3Test.test_validate_token[id-a9512ac3-3909-48a4-b395-11f438e16260]
tempest.api.identity.admin.v3.test_users.UsersV3TestJSON.test_list_user_projects[id-a831e70c-e35b-430b-92ed-81ebbc5437b8]
tempest.api.identity.admin.v3.test_users_negative.UsersNegativeTest.test_create_user_for_non_existent_domain[id-e75f006c-89cc-477b-874d-588e4eab4b17,negative]
===== END FAILED TESTS (target=rust) =====

View full run

@gtema
gtema force-pushed the claude/loadtest-expansion-stress-u8i0j4 branch 2 times, most recently from bcb8f65 to 9de508b Compare July 30, 2026 14:55
Expand the Goose load test into a stress-test suite: seeded users now
get a real shared password and a role on a dedicated auth project, so
password authentication (unscoped, project-scoped, and a negative
wrong-password case) can be exercised under load. Add token-rescoping
scenarios (rescope to system scope, and a negative rescope-to-a-
nonexistent-project case), a system-scoped auth scenario using the
initial bootstrap admin credentials, and an explicit check that a
revoked token no longer validates.

Split src/v3/auth.rs into a v3/auth/ module (lifecycle, password,
rescope, system) to keep each concern in its own file.

Assigned-by: Claude <noreply@anthropic.com>
Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
@gtema
gtema force-pushed the claude/loadtest-expansion-stress-u8i0j4 branch from 9de508b to 478b30a Compare July 30, 2026 18:00
@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

Projectkeystone
Branchclaude/loadtest-expansion-stress-u8i0j4
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
nanoseconds (ns)
(Result Δ%)
Upper Boundary
nanoseconds (ns)
(Limit %)
Command_Serde/apply/remove📈 view plot
🚷 view threshold
128,750.00 ns
(-61.46%)Baseline: 334,061.52 ns
1,647,590.11 ns
(7.81%)
Command_Serde/apply/set📈 view plot
🚷 view threshold
140,860.00 ns
(-62.25%)Baseline: 373,118.78 ns
1,713,156.61 ns
(8.22%)
Command_Serde/pack/delete📈 view plot
🚷 view threshold
121.70 ns
(+3.18%)Baseline: 117.94 ns
157.48 ns
(77.28%)
Command_Serde/pack/delete_index📈 view plot
🚷 view threshold
108.44 ns
(+3.92%)Baseline: 104.35 ns
138.44 ns
(78.33%)
Command_Serde/pack/set📈 view plot
🚷 view threshold
212.97 ns
(+12.57%)Baseline: 189.18 ns
250.49 ns
(85.02%)
Command_Serde/pack/set_index📈 view plot
🚷 view threshold
108.23 ns
(+3.72%)Baseline: 104.35 ns
138.72 ns
(78.02%)
Command_Serde/unpack/delete📈 view plot
🚷 view threshold
193.92 ns
(+6.62%)Baseline: 181.88 ns
263.65 ns
(73.55%)
Command_Serde/unpack/delete_index📈 view plot
🚷 view threshold
157.58 ns
(+3.35%)Baseline: 152.47 ns
214.87 ns
(73.34%)
Command_Serde/unpack/set📈 view plot
🚷 view threshold
276.97 ns
(+8.64%)Baseline: 254.93 ns
348.23 ns
(79.54%)
Command_Serde/unpack/set_index📈 view plot
🚷 view threshold
158.25 ns
(+5.96%)Baseline: 149.34 ns
208.79 ns
(75.80%)
Payload_encryption/pack/remove_cmd📈 view plot
🚷 view threshold
125.98 ns
(+12.40%)Baseline: 112.08 ns
149.37 ns
(84.34%)
Payload_encryption/pack/set_cmd📈 view plot
🚷 view threshold
193.03 ns
(-0.68%)Baseline: 194.36 ns
263.87 ns
(73.15%)
Payload_encryption/unpack/remove_cmd📈 view plot
🚷 view threshold
212.89 ns
(+11.89%)Baseline: 190.28 ns
278.62 ns
(76.41%)
Payload_encryption/unpack/set_cmd📈 view plot
🚷 view threshold
302.09 ns
(+12.95%)Baseline: 267.47 ns
372.40 ns
(81.12%)
Raft_1Node_Latency/prefix/1node📈 view plot
🚷 view threshold
2,402,500.00 ns
(-9.23%)Baseline: 2,646,746.25 ns
6,645,777.94 ns
(36.15%)
Raft_1Node_Latency/read/1node📈 view plot
🚷 view threshold
44,617.00 ns
(+17.42%)Baseline: 37,996.33 ns
53,708.69 ns
(83.07%)
Raft_1Node_Latency/remove/1node📈 view plot
🚷 view threshold
365,940.00 ns
(-58.88%)Baseline: 889,896.25 ns
4,216,617.12 ns
(8.68%)
Raft_1Node_Latency/write/1node📈 view plot
🚷 view threshold
377,370.00 ns
(-62.50%)Baseline: 1,006,372.66 ns
5,518,736.16 ns
(6.84%)
build_snapshot/default📈 view plot
🚷 view threshold
109,080.00 ns
(-14.29%)Baseline: 127,272.27 ns
223,412.40 ns
(48.82%)
fernet token/project📈 view plot
🚷 view threshold
1,488.90 ns
(+5.63%)Baseline: 1,409.58 ns
1,793.88 ns
(83.00%)
get_data_keyspace📈 view plot
🚷 view threshold
0.32 ns
(+2.17%)Baseline: 0.31 ns
0.39 ns
(83.11%)
get_db📈 view plot
🚷 view threshold
0.32 ns
(+3.47%)Baseline: 0.31 ns
0.38 ns
(84.33%)
get_fernet_token_timestamp/project📈 view plot
🚷 view threshold
136.72 ns
(-1.82%)Baseline: 139.25 ns
179.25 ns
(76.27%)
get_keyspace📈 view plot
🚷 view threshold
4.27 ns
(-32.15%)Baseline: 6.29 ns
14.96 ns
(28.52%)
🐰 View full continuous benchmarking report in Bencher

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant