Skip to content

fix: Map raft-not-available to proper HTTP status codes - #1149

Merged
gtema merged 1 commit into
mainfrom
claude/loadtest-expansion-stress-u8i0j4
Aug 4, 2026
Merged

fix: Map raft-not-available to proper HTTP status codes#1149
gtema merged 1 commit into
mainfrom
claude/loadtest-expansion-stress-u8i0j4

Conversation

@gtema

@gtema gtema commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Add KeystoneApiError::NotImplemented variant (HTTP 501) and map all
RaftNotAvailable errors to the correct status:

  • Oauth2KeyProviderError::RaftNotAvailable -> NotFound (404) for
    JWKS and well-known endpoints
  • All *ProviderError::RaftNotAvailable -> NotImplemented (501)

Update skaffold.yaml to robustly build raft clusters on deploy:

  • Remove || true from join command to fail fast on broken clusters
  • Add sleep 2 between join iterations to prevent leader overload
  • Replace sleep 5 with list-peers polling loop that waits for all
    nodes to appear in cluster membership
  • Add post-promote verification loop to confirm all replicas are
    voters before proceeding to ensure-signing-key

Signed-off-by: Artem Goncharov artem.goncharov@gmail.com

@gtema
gtema force-pushed the claude/loadtest-expansion-stress-u8i0j4 branch from b0ef743 to 2671a94 Compare August 4, 2026 10:03
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

🦢 Load Test Results

Goose Attack Report

Plan Overview

Action Started Stopped Elapsed Users
Increasing 26-08-04 14:13:27 26-08-04 14:13:49 00:00:22 0 → 45
Maintaining 26-08-04 14:13:49 26-08-04 14:14:19 00:00:30 45
Decreasing 26-08-04 14:14:19 26-08-04 14:14:20 00:00:01 0 ← 45

Request Metrics

Method Name # Requests # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
DELETE DELETE /v3/auth/tokens 42 0 580.14 50 789 1.40 0.00
DELETE DELETE /v3/projects/:id (teardown) 1 0 120.00 120 120 0.03 0.00
DELETE DELETE /v3/roles/:id (teardown) 1 0 322.00 322 322 0.03 0.00
DELETE DELETE /v3/users/:id (teardown) 2 0 274.50 252 297 0.07 0.00
DELETE DELETE /v4/mappings/rulesets/:mapping_id (teardown) 1 0 229.00 229 229 0.03 0.00
DELETE DELETE /v4/oauth2/:domain_id/clients/:provider_id (teardown) 1 0 229.00 229 229 0.03 0.00
GET 568 0 622.29 291 894 18.93 0.00
GET GET /SCIM/v2/:domain_id/Users (sync reconcile list) 1506 1506 19.97 1 807 50.20 50.20
GET GET /v3/auth/tokens (validate new) 42 0 561.98 177 735 1.40 0.00
GET GET /v3/auth/tokens (validate revoked) 43 0 503.40 25 738 1.43 0.00
GET GET /v3/projects/:id 53 0 579.74 401 774 1.77 0.00
GET GET /v3/projects/:id (catalog) 77 0 587.03 403 784 2.57 0.00
GET GET /v3/role_assignments 42 0 556.24 353 748 1.40 0.00
GET GET /v3/role_assignments?role.id 40 0 571.65 451 680 1.33 0.00
GET GET /v3/role_assignments?scope.domain.id 39 0 557.05 374 671 1.30 0.00
GET GET /v3/role_assignments?user.id 41 0 562.24 385 750 1.37 0.00
GET GET /v3/roles 104 0 583.83 395 775 3.47 0.00
GET GET /v3/roles/:id 52 0 583.21 401 782 1.73 0.00
GET GET /v3/users/:id 100 0 607.27 373 810 3.33 0.00
GET GET /v3/users/:id (catalog) 98 0 603.24 288 808 3.27 0.00
GET GET /v4/api-keys 25 0 590.56 446 770 0.83 0.00
GET GET /v4/api-keys/:client_id 25 0 616.20 477 1006 0.83 0.00
GET GET /v4/mappings/rulesets 26 0 595.35 452 723 0.87 0.00
GET GET /v4/mappings/rulesets/:mapping_id 26 0 574.88 447 757 0.87 0.00
GET GET /v4/oauth2/:domain_id/.well-known/openid-configuration 807 0 55.06 9 198 26.90 0.00
GET GET /v4/oauth2/:domain_id/clients 26 0 573.19 422 813 0.87 0.00
GET GET /v4/oauth2/:domain_id/clients/:provider_id 27 0 576.19 357 814 0.90 0.00
GET GET /v4/oauth2/:domain_id/jwks 809 0 55.76 13 250 26.97 0.00
GET GET /v4/scim_realms 17 0 570.18 418 674 0.57 0.00
GET GET /v4/scim_realms/:domain_id/:provider_id 17 0 589.53 476 713 0.57 0.00
POST POST /v3/auth/tokens 41 0 560.85 273 758 1.37 0.00
POST POST /v3/auth/tokens (password, invalid) 31 0 1001.48 561 1421 1.03 0.00
POST POST /v3/auth/tokens (password, project-scoped) 51 0 1318.80 782 2208 1.70 0.00
POST POST /v3/auth/tokens (password, unscoped) 52 0 1118.52 630 1707 1.73 0.00
POST POST /v3/auth/tokens (rescope to system) 93 0 657.10 433 910 3.10 0.00
POST POST /v3/auth/tokens (rescope, invalid project) 56 0 546.23 332 734 1.87 0.00
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 47 0 1332.81 901 2106 1.57 0.00
POST POST /v4/api-keys/:client_id/revoke (teardown) 1 0 359.00 359 359 0.03 0.00
PUT PUT /v4/scim_realms/:domain_id/:provider_id 17 0 644.47 464 955 0.57 0.00
Aggregated 5047 1506 273.01 1 2208 168.23 50.20

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 600 600 600 700 700 700 789 789
DELETE DELETE /v3/projects/:id (teardown) 120 120 120 120 120 120 120 120
DELETE DELETE /v3/roles/:id (teardown) 322 322 322 322 322 322 322 322
DELETE DELETE /v3/users/:id (teardown) 252 252 252 297 297 297 297 297
DELETE DELETE /v4/mappings/rulesets/:mapping_id (teardown) 229 229 229 229 229 229 229 229
DELETE DELETE /v4/oauth2/:domain_id/clients/:provider_id (teardown) 229 229 229 229 229 229 229 229
GET 600 600 700 700 700 800 800 894
GET GET /SCIM/v2/:domain_id/Users (sync reconcile list) 8 9 12 15 21 30 440 800
GET GET /v3/auth/tokens (validate new) 600 600 600 600 700 700 700 700
GET GET /v3/auth/tokens (validate revoked) 500 500 500 600 600 700 700 700
GET GET /v3/projects/:id 600 600 600 600 700 700 700 774
GET GET /v3/projects/:id (catalog) 600 600 600 700 700 700 784 784
GET GET /v3/role_assignments 500 600 600 600 700 700 700 700
GET GET /v3/role_assignments?role.id 600 600 600 600 680 680 680 680
GET GET /v3/role_assignments?scope.domain.id 600 600 600 600 600 600 671 671
GET GET /v3/role_assignments?user.id 600 600 600 600 700 700 750 750
GET GET /v3/roles 600 600 600 700 700 700 700 775
GET GET /v3/roles/:id 600 600 600 600 700 700 782 782
GET GET /v3/users/:id 600 600 600 700 700 700 800 800
GET GET /v3/users/:id (catalog) 600 600 600 700 700 700 800 800
GET GET /v4/api-keys 600 600 600 600 700 700 770 770
GET GET /v4/api-keys/:client_id 600 600 700 700 700 800 1,000 1,000
GET GET /v4/mappings/rulesets 600 600 600 700 700 700 700 700
GET GET /v4/mappings/rulesets/:mapping_id 600 600 600 600 700 700 757 757
GET GET /v4/oauth2/:domain_id/.well-known/openid-configuration 48 58 67 76 91 110 150 198
GET GET /v4/oauth2/:domain_id/clients 600 600 600 600 700 800 800 800
GET GET /v4/oauth2/:domain_id/clients/:provider_id 600 600 600 700 700 700 800 800
GET GET /v4/oauth2/:domain_id/jwks 49 58 68 78 94 110 150 250
GET GET /v4/scim_realms 600 600 600 600 600 674 674 674
GET GET /v4/scim_realms/:domain_id/:provider_id 600 600 700 700 700 700 700 700
POST POST /v3/auth/tokens 600 600 600 700 700 700 758 758
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 2,000 2,000 2,000 2,000 2,000
POST POST /v3/auth/tokens (password, unscoped) 1,000 1,000 1,000 1,000 1,707 1,707 1,707 1,707
POST POST /v3/auth/tokens (rescope to system) 700 700 700 700 800 800 900 900
POST POST /v3/auth/tokens (rescope, invalid project) 500 600 600 600 600 700 700 700
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 1,000 1,000 1,000 2,000 2,000 2,000 2,000 2,000
POST POST /v4/api-keys/:client_id/revoke (teardown) 359 359 359 359 359 359 359 359
PUT PUT /v4/scim_realms/:domain_id/:provider_id 600 600 700 700 700 800 955 955
Aggregated 63 120 500 600 700 800 1,000 2,000

Status Code Metrics

Method Name Status Codes
DELETE DELETE /v3/auth/tokens 42 [204]
DELETE DELETE /v3/projects/:id (teardown) 1 [204]
DELETE DELETE /v3/roles/:id (teardown) 1 [204]
DELETE DELETE /v3/users/:id (teardown) 2 [204]
DELETE DELETE /v4/mappings/rulesets/:mapping_id (teardown) 1 [204]
DELETE DELETE /v4/oauth2/:domain_id/clients/:provider_id (teardown) 1 [204]
GET 568 [200]
GET GET /SCIM/v2/:domain_id/Users (sync reconcile list) 1,474 [429], 32 [401]
GET GET /v3/auth/tokens (validate new) 42 [200]
GET GET /v3/auth/tokens (validate revoked) 43 [404]
GET GET /v3/projects/:id 53 [200]
GET GET /v3/projects/:id (catalog) 77 [200]
GET GET /v3/role_assignments 42 [200]
GET GET /v3/role_assignments?role.id 40 [200]
GET GET /v3/role_assignments?scope.domain.id 39 [200]
GET GET /v3/role_assignments?user.id 41 [200]
GET GET /v3/roles 104 [200]
GET GET /v3/roles/:id 52 [200]
GET GET /v3/users/:id 100 [200]
GET GET /v3/users/:id (catalog) 98 [200]
GET GET /v4/api-keys 25 [200]
GET GET /v4/api-keys/:client_id 25 [200]
GET GET /v4/mappings/rulesets 26 [200]
GET GET /v4/mappings/rulesets/:mapping_id 26 [200]
GET GET /v4/oauth2/:domain_id/.well-known/openid-configuration 807 [200]
GET GET /v4/oauth2/:domain_id/clients 26 [200]
GET GET /v4/oauth2/:domain_id/clients/:provider_id 27 [200]
GET GET /v4/oauth2/:domain_id/jwks 809 [200]
GET GET /v4/scim_realms 17 [200]
GET GET /v4/scim_realms/:domain_id/:provider_id 17 [200]
POST POST /v3/auth/tokens 41 [201]
POST POST /v3/auth/tokens (password, invalid) 31 [401]
POST POST /v3/auth/tokens (password, project-scoped) 51 [201]
POST POST /v3/auth/tokens (password, unscoped) 52 [201]
POST POST /v3/auth/tokens (rescope to system) 93 [201]
POST POST /v3/auth/tokens (rescope, invalid project) 56 [401]
POST POST /v3/auth/tokens (system-scoped, bootstrap admin) 47 [201]
POST POST /v4/api-keys/:client_id/revoke (teardown) 1 [200]
PUT PUT /v4/scim_realms/:domain_id/:provider_id 17 [200]
Aggregated 1,474 [429], 3,079 [200], 119 [401], 43 [404], 48 [204], 284 [201]

Transaction Metrics

Transaction # Times Run # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
ReadHeavy
0.0 0 0 0.00 0 0 0.00 0.00
0.1 101 0 641.66 343 839 3.37 0.00
0.2 102 0 583.81 291 846 3.40 0.00
0.3 100 0 591.67 337 841 3.33 0.00
TokenLifecycle
1.0 0 0 0.00 0 0 0.00 0.00
1.1 43 0 2202.35 615 2679 1.43 0.00
ValidateToken
2.0 0 0 0.00 0 0 0.00 0.00
2.1 88 0 695.18 453 894 2.93 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 100 0 607.31 373 810 3.33 0.00
3.3 2 0 274.50 252 297 0.07 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 53 0 579.74 401 774 1.77 0.00
4.3 1 0 120.00 120 120 0.03 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 52 0 583.25 401 782 1.73 0.00
5.3 1 0 322.00 322 322 0.03 0.00
RoleList
6.0 0 0 0.00 0 0 0.00 0.00
6.1 104 0 583.85 395 775 3.47 0.00
RoleAssignmentList
7.0 0 0 0.00 0 0 0.00 0.00
7.1 42 0 556.26 353 748 1.40 0.00
7.2 41 0 562.29 385 750 1.37 0.00
7.3 39 0 557.10 374 672 1.30 0.00
7.4 40 0 571.75 451 680 1.33 0.00
UserRead
8.0 0 0 0.00 0 0 0.00 0.00
8.1 99 0 634.30 426 849 3.30 0.00
8.2 98 0 603.30 288 808 3.27 0.00
ProjectRead
9.0 0 0 0.00 0 0 0.00 0.00
9.1 78 0 589.62 348 787 2.60 0.00
9.2 77 0 587.08 403 784 2.57 0.00
PasswordAuth
10.0 52 0 1118.56 630 1707 1.73 0.00
10.1 51 0 1318.86 782 2208 1.70 0.00
PasswordAuthNegative
11.0 31 0 1001.55 561 1422 1.03 0.00
Rescope
12.0 0 0 0.00 0 0 0.00 0.00
12.1 93 0 657.15 433 910 3.10 0.00
RescopeNegative
13.0 0 0 0.00 0 0 0.00 0.00
13.1 56 0 546.27 332 734 1.87 0.00
SystemScopeAuth
14.0 47 0 1332.89 901 2106 1.57 0.00
ApiKeyCRUD
15.0 0 0 0.00 0 0 0.00 0.00
15.1 0 0 0.00 0 0 0.00 0.00
15.2 25 0 616.20 477 1006 0.83 0.00
15.3 25 0 590.56 446 770 0.83 0.00
15.4 1 0 359.00 359 359 0.03 0.00
MappingCRUD
16.0 0 0 0.00 0 0 0.00 0.00
16.1 0 0 0.00 0 0 0.00 0.00
16.2 26 0 575.00 447 757 0.87 0.00
16.3 26 0 595.42 452 723 0.87 0.00
16.4 1 0 229.00 229 229 0.03 0.00
OAuth2ClientCRUD
17.0 0 0 0.00 0 0 0.00 0.00
17.1 0 0 0.00 0 0 0.00 0.00
17.2 27 0 576.19 357 814 0.90 0.00
17.3 26 0 573.23 422 813 0.87 0.00
17.4 1 0 229.00 229 229 0.03 0.00
OAuth2Discovery
18.0 809 0 55.79 13 250 26.97 0.00
18.1 807 0 55.10 9 198 26.90 0.00
ScimRealmRead
19.0 0 0 0.00 0 0 0.00 0.00
19.1 17 0 589.65 476 713 0.57 0.00
19.2 17 0 570.24 418 674 0.57 0.00
19.3 17 0 644.47 464 955 0.57 0.00
ScimSync
20.0 0 0 0.00 0 0 0.00 0.00
20.1 0 0 0.00 0 0 0.00 0.00
20.2 0 0 0.00 0 0 0.00 0.00
20.3 1506 0 20.00 1 807 50.20 0.00
20.4 1505 0 0.00 0 0 50.17 0.00
20.5 1505 0 0.00 0 0 50.17 0.00
20.6 1 0 0.00 0 0 0.03 0.00
Aggregated 7933 0 173.69 1 2679 264.43 0.00

Scenario Metrics

Transaction # Users # Times Run Average (ms) Min (ms) Max (ms) Scenarios/s Iterations
ReadHeavy 6 97 1825.93 1500 2200 3.23 16.17
TokenLifecycle 3 40 2283.55 1784 2679 1.33 13.33
ValidateToken 2 86 700.48 511 894 2.87 43.00
UserCRUD 2 98 608.47 373 810 3.27 49.00
ProjectCRUD 1 52 583.17 440 774 1.73 52.00
RoleCRUD 1 51 585.06 401 782 1.70 51.00
RoleList 2 102 586.90 420 775 3.40 51.00
RoleAssignmentList 3 40 2248.90 1802 2684 1.33 13.33
UserRead 4 96 1243.99 904 1614 3.20 24.00
ProjectRead 3 76 1184.43 826 1471 2.53 25.33
PasswordAuth 4 50 2459.52 1670 3517 1.67 12.50
PasswordAuthNegative 1 30 999.77 561 1422 1.00 30.00
Rescope 2 91 662.02 442 910 3.03 45.50
RescopeNegative 1 55 548.87 332 734 1.83 55.00
SystemScopeAuth 2 45 1344.73 901 2106 1.50 22.50
ApiKeyCRUD 1 25 1206.56 975 1777 0.83 25.00
MappingCRUD 1 26 1173.54 923 1386 0.87 26.00
OAuth2ClientCRUD 1 26 1157.77 883 1433 0.87 26.00
OAuth2Discovery 3 806 111.32 33 315 26.87 268.67
ScimRealmRead 1 16 1810.00 1586 2084 0.53 16.00
ScimSync 1 1505 19.51 1 807 50.17 1505.00
Aggregated 45 3413 395.69 1 3517 113.77 2370.33

Error Metrics

Method Name # Error
GET GET /SCIM/v2/:domain_id/Users (sync reconcile list) 49 401 Unauthorized: GET /SCIM/v2/:domain_id/Users (sync reconcile list)
POST POST /SCIM/v2/:domain_id/Users (sync provision) 1 401 Unauthorized: POST /SCIM/v2/:domain_id/Users (sync provision)
POST POST /v3/auth/tokens (password, invalid) 74 401 Unauthorized: POST /v3/auth/tokens (password, invalid)
POST POST /v3/auth/tokens (rescope, invalid project) 146 401 Unauthorized: POST /v3/auth/tokens (rescope, invalid project)
GET GET /v3/auth/tokens (validate revoked) 150 404 Not Found: GET /v3/auth/tokens (validate revoked)
GET GET /SCIM/v2/:domain_id/Users (sync reconcile list) 1474 429 Too Many Requests: GET /SCIM/v2/:domain_id/Users (sync reconcile list)

View full report

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

rust

Totals
======
Ran: 133 tests in 35.5844 sec.
 - Passed: 63
 - Skipped: 4
 - Expected Fail: 0
 - Unexpected Success: 0
 - Failed: 66
Sum of execute time for each test: 23.2240 sec.
Failed test IDs
===== FAILED TESTS (target=rust) =====
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_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]
setUpClass (tempest.api.identity.admin.v3.test_endpoint_groups.EndPointGroupsTest)
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_domains_negative.DomainsNegativeTestJSON.test_create_domain_with_name_length_over_64[id-37b1bbf2-d664-4785-9a11-333438586eae,negative]
tempest.api.identity.admin.v3.test_domains_negative.DomainsNegativeTestJSON.test_delete_active_domain[gate,id-1f3fbff5-4e44-400d-9ca1-d953f05f609b,negative]
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_default_project_id.TestDefaultProjectId.test_default_project_id[id-d6110661-6a71-49a7-a453-b5e26640ff6d]
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_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_inherits.InheritsV3TestJSON.test_inherit_assign_check_revoke_roles_on_projects_group[id-26021436-d5a4-4256-943c-ded01e0d4b45]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_check_revoke_roles_on_projects_user[id-18b70e45-7687-4b72-8277-b8f1a47d7591]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_check_revoke_roles_on_domains_group[id-c7a8dda2-be50-4fb4-9a9c-e830771078b1]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_check_revoke_roles_on_domains_user[id-4e6f0366-97c8-423c-b2be-41eae6ac91c8]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_revoke_user_roles_on_domain[id-3acf666e-5354-42ac-8e17-8b68893bcd36]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_revoke_user_roles_on_project_tree[id-9f02ccd9-9b57-46b4-8f77-dd5a736f3a06]
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_groups.GroupsV3TestJSON.test_group_users_add_list_delete[id-1598521a-2f36-4606-8df9-30772bd51339,smoke]
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_groups.GroupsV3TestJSON.test_list_user_groups[id-64573281-d26a-4a52-b899-503cb0f4e4ec]
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]
tempest.api.identity.admin.v3.test_list_users.UsersV3TestJSON.test_list_users_with_not_enabled[id-bff8bf2f-9408-4ef5-b63a-753c8c2124eb]
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.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_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_projects_negative.ProjectsNegativeStaticTestJSON.test_create_projects_name_length_over_64[id-502b6ceb-b0c8-4422-bf53-f08fdb21e2f0,negative]
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_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.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_role_create_update_show_list[id-18afc6c0-46cf-4911-824e-9989cc056c3a,smoke]
tempest.api.identity.v3.test_projects.IdentityV3ProjectsTest.test_list_projects_returns_only_authorized_projects[id-86128d46-e170-4644-866a-cc487f699e1d]
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_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_tokens.TokensV3TestJSON.test_rescope_token[id-565fa210-1da1-4563-999b-f7b5b67cf112]
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_get_trusts_all[id-4773ebd5-ecbf-4255-b8d8-b63e6f72b65d,smoke]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_get_trusts_query[id-6268b345-87ca-47c0-9ce3-37792b43403a]
tempest.api.identity.admin.v3.test_users.UsersV3TestJSON.test_list_user_projects[id-a831e70c-e35b-430b-92ed-81ebbc5437b8]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_expire[id-0ed14b66-cefd-4b5c-a964-65759453e292]
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.admin.v3.test_users_negative.UsersNegativeTest.test_create_user_for_non_existent_domain[id-e75f006c-89cc-477b-874d-588e4eab4b17,negative]
tempest.api.identity.v3.test_tokens.TokensV3Test.test_validate_token[id-a9512ac3-3909-48a4-b395-11f438e16260]
===== END FAILED TESTS (target=rust) =====

View full run

@github-actions

github-actions Bot commented Aug 4, 2026

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
91,912.00 ns
(-71.05%)Baseline: 317,532.36 ns
1,633,469.06 ns
(5.63%)
Command_Serde/apply/set📈 view plot
🚷 view threshold
99,346.00 ns
(-71.49%)Baseline: 348,442.17 ns
1,679,543.06 ns
(5.92%)
Command_Serde/pack/delete📈 view plot
🚷 view threshold
126.63 ns
(+6.64%)Baseline: 118.75 ns
157.61 ns
(80.35%)
Command_Serde/pack/delete_index📈 view plot
🚷 view threshold
113.56 ns
(+7.90%)Baseline: 105.24 ns
139.37 ns
(81.48%)
Command_Serde/pack/set📈 view plot
🚷 view threshold
195.70 ns
(+3.26%)Baseline: 189.53 ns
248.87 ns
(78.64%)
Command_Serde/pack/set_index📈 view plot
🚷 view threshold
114.23 ns
(+8.51%)Baseline: 105.27 ns
139.43 ns
(81.93%)
Command_Serde/unpack/delete📈 view plot
🚷 view threshold
213.98 ns
(+15.97%)Baseline: 184.51 ns
267.90 ns
(79.87%)
Command_Serde/unpack/delete_index📈 view plot
🚷 view threshold
186.20 ns
(+20.02%)Baseline: 155.14 ns
219.43 ns
(84.85%)
Command_Serde/unpack/set📈 view plot
🚷 view threshold
274.74 ns
(+7.03%)Baseline: 256.69 ns
349.83 ns
(78.54%)
Command_Serde/unpack/set_index📈 view plot
🚷 view threshold
182.66 ns
(+20.58%)Baseline: 151.49 ns
212.43 ns
(85.99%)
Payload_encryption/pack/remove_cmd📈 view plot
🚷 view threshold
118.37 ns
(+4.32%)Baseline: 113.46 ns
150.95 ns
(78.41%)
Payload_encryption/pack/set_cmd📈 view plot
🚷 view threshold
192.45 ns
(-1.92%)Baseline: 196.22 ns
266.12 ns
(72.32%)
Payload_encryption/unpack/remove_cmd📈 view plot
🚷 view threshold
225.27 ns
(+16.39%)Baseline: 193.55 ns
282.46 ns
(79.75%)
Payload_encryption/unpack/set_cmd📈 view plot
🚷 view threshold
279.26 ns
(+3.48%)Baseline: 269.87 ns
373.84 ns
(74.70%)
Raft_1Node_Latency/prefix/1node📈 view plot
🚷 view threshold
4,352,500.00 ns
(+61.37%)Baseline: 2,697,229.06 ns
6,175,665.76 ns
(70.48%)
Raft_1Node_Latency/read/1node📈 view plot
🚷 view threshold
35,622.00 ns
(-6.58%)Baseline: 38,131.31 ns
53,519.76 ns
(66.56%)
Raft_1Node_Latency/remove/1node📈 view plot
🚷 view threshold
270,120.00 ns
(-66.92%)Baseline: 816,664.22 ns
4,097,612.72 ns
(6.59%)
Raft_1Node_Latency/write/1node📈 view plot
🚷 view threshold
289,480.00 ns
(-70.09%)Baseline: 967,742.34 ns
5,491,202.05 ns
(5.27%)
build_snapshot/default📈 view plot
🚷 view threshold
103,950.00 ns
(-16.92%)Baseline: 125,123.67 ns
219,364.20 ns
(47.39%)
fernet token/project📈 view plot
🚷 view threshold
1,559.00 ns
(+9.27%)Baseline: 1,426.78 ns
1,813.43 ns
(85.97%)
get_data_keyspace📈 view plot
🚷 view threshold
0.35 ns
(+11.57%)Baseline: 0.32 ns
0.39 ns
(90.70%)
get_db📈 view plot
🚷 view threshold
0.35 ns
(+11.46%)Baseline: 0.32 ns
0.39 ns
(90.74%)
get_fernet_token_timestamp/project📈 view plot
🚷 view threshold
148.95 ns
(+6.01%)Baseline: 140.50 ns
179.03 ns
(83.20%)
get_keyspace📈 view plot
🚷 view threshold
4.74 ns
(-23.09%)Baseline: 6.17 ns
14.58 ns
(32.52%)
🐰 View full continuous benchmarking report in Bencher

@gtema
gtema force-pushed the claude/loadtest-expansion-stress-u8i0j4 branch from 2671a94 to cbaf7b3 Compare August 4, 2026 12:28
Add KeystoneApiError::NotImplemented variant (HTTP 501) and map all
RaftNotAvailable errors to the correct status:

- Oauth2KeyProviderError::RaftNotAvailable -> NotFound (404) for
  JWKS and well-known endpoints
- All *ProviderError::RaftNotAvailable -> NotImplemented (501)

Update skaffold.yaml to robustly build raft clusters on deploy:

- Remove || true from join command to fail fast on broken clusters
- Add sleep 2 between join iterations to prevent leader overload
- Replace sleep 5 with list-peers polling loop that waits for all
  nodes to appear in cluster membership
- Add post-promote verification loop to confirm all replicas are
  voters before proceeding to ensure-signing-key

Switch loadtest to the k3s with the raft backend

Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
@gtema
gtema force-pushed the claude/loadtest-expansion-stress-u8i0j4 branch from cbaf7b3 to 1b58b83 Compare August 4, 2026 13:40
@gtema
gtema added this pull request to the merge queue Aug 4, 2026
Merged via the queue into main with commit 3ce4eb5 Aug 4, 2026
35 checks passed
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