Restructure solution layout by module
This commit is contained in:
@@ -1,422 +1,422 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>StellaOps.Auth.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:StellaOps.Auth.AuthorityTelemetry">
|
||||
<summary>
|
||||
Canonical telemetry metadata for the StellaOps Authority stack.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ServiceName">
|
||||
<summary>
|
||||
service.name resource attribute recorded by Authority components.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ServiceNamespace">
|
||||
<summary>
|
||||
service.namespace resource attribute aligning Authority with other StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ActivitySourceName">
|
||||
<summary>
|
||||
Activity source identifier used by Authority instrumentation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.MeterName">
|
||||
<summary>
|
||||
Meter name used by Authority instrumentation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.AuthorityTelemetry.BuildDefaultResourceAttributes(System.Reflection.Assembly)">
|
||||
<summary>
|
||||
Builds the default set of resource attributes (service name/namespace/version).
|
||||
</summary>
|
||||
<param name="assembly">Optional assembly used to resolve the service version.</param>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.AuthorityTelemetry.ResolveServiceVersion(System.Reflection.Assembly)">
|
||||
<summary>
|
||||
Resolves the service version string from the provided assembly (defaults to the Authority telemetry assembly).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.NetworkMask">
|
||||
<summary>
|
||||
Represents an IP network expressed in CIDR notation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.#ctor(System.Net.IPAddress,System.Int32)">
|
||||
<summary>
|
||||
Initialises a new <see cref="T:StellaOps.Auth.Abstractions.NetworkMask"/>.
|
||||
</summary>
|
||||
<param name="network">Canonical network address with host bits zeroed.</param>
|
||||
<param name="prefixLength">Prefix length (0-32 for IPv4, 0-128 for IPv6).</param>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMask.Network">
|
||||
<summary>
|
||||
Canonical network address with host bits zeroed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMask.PrefixLength">
|
||||
<summary>
|
||||
Prefix length.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.Parse(System.String)">
|
||||
<summary>
|
||||
Attempts to parse the supplied value as CIDR notation or a single IP address.
|
||||
</summary>
|
||||
<exception cref="T:System.FormatException">Thrown when the input is not recognised.</exception>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.TryParse(System.String,StellaOps.Auth.Abstractions.NetworkMask@)">
|
||||
<summary>
|
||||
Attempts to parse the supplied value as CIDR notation or a single IP address.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.Contains(System.Net.IPAddress)">
|
||||
<summary>
|
||||
Determines whether the provided address belongs to this network.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.ToString">
|
||||
<inheritdoc />
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.NetworkMaskMatcher">
|
||||
<summary>
|
||||
Evaluates remote addresses against configured network masks.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.#ctor(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Creates a matcher from raw CIDR strings.
|
||||
</summary>
|
||||
<param name="values">Sequence of CIDR entries or IP addresses.</param>
|
||||
<exception cref="T:System.FormatException">Thrown when a value cannot be parsed.</exception>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.#ctor(System.Collections.Generic.IEnumerable{StellaOps.Auth.Abstractions.NetworkMask})">
|
||||
<summary>
|
||||
Creates a matcher from already parsed masks.
|
||||
</summary>
|
||||
<param name="masks">Sequence of network masks.</param>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.AllowAll">
|
||||
<summary>
|
||||
Gets a matcher that allows every address.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.DenyAll">
|
||||
<summary>
|
||||
Gets a matcher that denies every address (no masks configured).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.IsEmpty">
|
||||
<summary>
|
||||
Indicates whether this matcher has no masks configured and does not allow all.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.Masks">
|
||||
<summary>
|
||||
Returns the configured masks.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.IsAllowed(System.Net.IPAddress)">
|
||||
<summary>
|
||||
Checks whether the provided address matches any of the configured masks.
|
||||
</summary>
|
||||
<param name="address">Remote address to test.</param>
|
||||
<returns><c>true</c> when the address is allowed.</returns>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults">
|
||||
<summary>
|
||||
Default authentication constants used by StellaOps resource servers and clients.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.AuthenticationScheme">
|
||||
<summary>
|
||||
Default authentication scheme for StellaOps bearer tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.AuthenticationType">
|
||||
<summary>
|
||||
Logical authentication type attached to <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.PolicyPrefix">
|
||||
<summary>
|
||||
Policy prefix applied to named authorization policies.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsClaimTypes">
|
||||
<summary>
|
||||
Canonical claim type identifiers used across StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Subject">
|
||||
<summary>
|
||||
Subject identifier claim (maps to <c>sub</c> in JWTs).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Tenant">
|
||||
<summary>
|
||||
StellaOps tenant identifier claim (multi-tenant deployments).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.ClientId">
|
||||
<summary>
|
||||
OAuth2/OIDC client identifier claim (maps to <c>client_id</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.TokenId">
|
||||
<summary>
|
||||
Unique token identifier claim (maps to <c>jti</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.AuthenticationMethod">
|
||||
<summary>
|
||||
Authentication method reference claim (<c>amr</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Scope">
|
||||
<summary>
|
||||
Space separated scope list (<c>scope</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.ScopeItem">
|
||||
<summary>
|
||||
Individual scope items (<c>scp</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Audience">
|
||||
<summary>
|
||||
OAuth2 resource audiences (<c>aud</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.IdentityProvider">
|
||||
<summary>
|
||||
Identity provider hint for downstream services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.SessionId">
|
||||
<summary>
|
||||
Session identifier claim (<c>sid</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder">
|
||||
<summary>
|
||||
Fluent helper used to construct <see cref="T:System.Security.Claims.ClaimsPrincipal"/> instances that follow StellaOps conventions.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithSubject(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the canonical subject identifier.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithClientId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the canonical client identifier.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithTenant(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the tenant identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithName(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the user display name claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithIdentityProvider(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the identity provider claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithSessionId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the session identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithTokenId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the token identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAuthenticationMethod(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the authentication method reference claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithNameClaimType(System.String)">
|
||||
<summary>
|
||||
Sets the name claim type appended when building the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithRoleClaimType(System.String)">
|
||||
<summary>
|
||||
Sets the role claim type appended when building the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAuthenticationType(System.String)">
|
||||
<summary>
|
||||
Sets the authentication type stamped on the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithScopes(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Registers the supplied scopes (normalised to lower-case, deduplicated, sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAudiences(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Registers the supplied audiences (trimmed, deduplicated, sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAudience(System.String)">
|
||||
<summary>
|
||||
Adds a single audience.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.AddClaim(System.String,System.String,System.String)">
|
||||
<summary>
|
||||
Adds an arbitrary claim (no deduplication is performed).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.AddClaims(System.Collections.Generic.IEnumerable{System.Security.Claims.Claim})">
|
||||
<summary>
|
||||
Adds multiple claims (incoming claims are cloned to enforce value trimming).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithIssuedAt(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>iat</c> (issued at) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithNotBefore(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>nbf</c> (not before) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithExpires(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>exp</c> (expires) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.NormalizedScopes">
|
||||
<summary>
|
||||
Returns the normalised scope list (deduplicated + sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.Audiences">
|
||||
<summary>
|
||||
Returns the normalised audience list (deduplicated + sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.Build">
|
||||
<summary>
|
||||
Builds the immutable <see cref="T:System.Security.Claims.ClaimsPrincipal"/> instance based on the registered data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory">
|
||||
<summary>
|
||||
Factory helpers for returning RFC 7807 problem responses using StellaOps conventions.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.AuthenticationRequired(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 401 problem response indicating authentication is required.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.InvalidToken(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 401 problem response for invalid, expired, or revoked tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.Forbidden(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 403 problem response when access is denied.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.InsufficientScope(System.Collections.Generic.IReadOnlyCollection{System.String},System.Collections.Generic.IReadOnlyCollection{System.String},System.String)">
|
||||
<summary>
|
||||
Produces a 403 problem response for insufficient scopes.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsScopes">
|
||||
<summary>
|
||||
Canonical scope names supported by StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.ConcelierJobsTrigger">
|
||||
<summary>
|
||||
Scope required to trigger Concelier jobs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.ConcelierMerge">
|
||||
<summary>
|
||||
Scope required to manage Concelier merge operations.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityUsersManage">
|
||||
<summary>
|
||||
Scope granting administrative access to Authority user management.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityClientsManage">
|
||||
<summary>
|
||||
Scope granting administrative access to Authority client registrations.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityAuditRead">
|
||||
<summary>
|
||||
Scope granting read-only access to Authority audit logs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.Bypass">
|
||||
<summary>
|
||||
Synthetic scope representing trusted network bypass.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AdvisoryRead">
|
||||
<summary>
|
||||
Scope granting read-only access to raw advisory ingestion data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AdvisoryIngest">
|
||||
<summary>
|
||||
Scope granting write access for raw advisory ingestion.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.VexRead">
|
||||
<summary>
|
||||
Scope granting read-only access to raw VEX ingestion data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.VexIngest">
|
||||
<summary>
|
||||
Scope granting write access for raw VEX ingestion.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AocVerify">
|
||||
<summary>
|
||||
Scope granting permission to execute aggregation-only contract verification.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsScopes.Normalize(System.String)">
|
||||
<summary>
|
||||
Normalises a scope string (trim/convert to lower case).
|
||||
</summary>
|
||||
<param name="scope">Scope raw value.</param>
|
||||
<returns>Normalised scope or <c>null</c> when the input is blank.</returns>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsScopes.IsKnown(System.String)">
|
||||
<summary>
|
||||
Checks whether the provided scope is registered as a built-in StellaOps scope.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsScopes.All">
|
||||
<summary>
|
||||
Returns the full set of built-in scopes.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>StellaOps.Auth.Abstractions</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:StellaOps.Auth.AuthorityTelemetry">
|
||||
<summary>
|
||||
Canonical telemetry metadata for the StellaOps Authority stack.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ServiceName">
|
||||
<summary>
|
||||
service.name resource attribute recorded by Authority components.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ServiceNamespace">
|
||||
<summary>
|
||||
service.namespace resource attribute aligning Authority with other StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.ActivitySourceName">
|
||||
<summary>
|
||||
Activity source identifier used by Authority instrumentation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.AuthorityTelemetry.MeterName">
|
||||
<summary>
|
||||
Meter name used by Authority instrumentation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.AuthorityTelemetry.BuildDefaultResourceAttributes(System.Reflection.Assembly)">
|
||||
<summary>
|
||||
Builds the default set of resource attributes (service name/namespace/version).
|
||||
</summary>
|
||||
<param name="assembly">Optional assembly used to resolve the service version.</param>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.AuthorityTelemetry.ResolveServiceVersion(System.Reflection.Assembly)">
|
||||
<summary>
|
||||
Resolves the service version string from the provided assembly (defaults to the Authority telemetry assembly).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.NetworkMask">
|
||||
<summary>
|
||||
Represents an IP network expressed in CIDR notation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.#ctor(System.Net.IPAddress,System.Int32)">
|
||||
<summary>
|
||||
Initialises a new <see cref="T:StellaOps.Auth.Abstractions.NetworkMask"/>.
|
||||
</summary>
|
||||
<param name="network">Canonical network address with host bits zeroed.</param>
|
||||
<param name="prefixLength">Prefix length (0-32 for IPv4, 0-128 for IPv6).</param>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMask.Network">
|
||||
<summary>
|
||||
Canonical network address with host bits zeroed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMask.PrefixLength">
|
||||
<summary>
|
||||
Prefix length.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.Parse(System.String)">
|
||||
<summary>
|
||||
Attempts to parse the supplied value as CIDR notation or a single IP address.
|
||||
</summary>
|
||||
<exception cref="T:System.FormatException">Thrown when the input is not recognised.</exception>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.TryParse(System.String,StellaOps.Auth.Abstractions.NetworkMask@)">
|
||||
<summary>
|
||||
Attempts to parse the supplied value as CIDR notation or a single IP address.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.Contains(System.Net.IPAddress)">
|
||||
<summary>
|
||||
Determines whether the provided address belongs to this network.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMask.ToString">
|
||||
<inheritdoc />
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.NetworkMaskMatcher">
|
||||
<summary>
|
||||
Evaluates remote addresses against configured network masks.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.#ctor(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Creates a matcher from raw CIDR strings.
|
||||
</summary>
|
||||
<param name="values">Sequence of CIDR entries or IP addresses.</param>
|
||||
<exception cref="T:System.FormatException">Thrown when a value cannot be parsed.</exception>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.#ctor(System.Collections.Generic.IEnumerable{StellaOps.Auth.Abstractions.NetworkMask})">
|
||||
<summary>
|
||||
Creates a matcher from already parsed masks.
|
||||
</summary>
|
||||
<param name="masks">Sequence of network masks.</param>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.AllowAll">
|
||||
<summary>
|
||||
Gets a matcher that allows every address.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.DenyAll">
|
||||
<summary>
|
||||
Gets a matcher that denies every address (no masks configured).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.IsEmpty">
|
||||
<summary>
|
||||
Indicates whether this matcher has no masks configured and does not allow all.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.NetworkMaskMatcher.Masks">
|
||||
<summary>
|
||||
Returns the configured masks.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.NetworkMaskMatcher.IsAllowed(System.Net.IPAddress)">
|
||||
<summary>
|
||||
Checks whether the provided address matches any of the configured masks.
|
||||
</summary>
|
||||
<param name="address">Remote address to test.</param>
|
||||
<returns><c>true</c> when the address is allowed.</returns>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults">
|
||||
<summary>
|
||||
Default authentication constants used by StellaOps resource servers and clients.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.AuthenticationScheme">
|
||||
<summary>
|
||||
Default authentication scheme for StellaOps bearer tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.AuthenticationType">
|
||||
<summary>
|
||||
Logical authentication type attached to <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsAuthenticationDefaults.PolicyPrefix">
|
||||
<summary>
|
||||
Policy prefix applied to named authorization policies.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsClaimTypes">
|
||||
<summary>
|
||||
Canonical claim type identifiers used across StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Subject">
|
||||
<summary>
|
||||
Subject identifier claim (maps to <c>sub</c> in JWTs).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Tenant">
|
||||
<summary>
|
||||
StellaOps tenant identifier claim (multi-tenant deployments).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.ClientId">
|
||||
<summary>
|
||||
OAuth2/OIDC client identifier claim (maps to <c>client_id</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.TokenId">
|
||||
<summary>
|
||||
Unique token identifier claim (maps to <c>jti</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.AuthenticationMethod">
|
||||
<summary>
|
||||
Authentication method reference claim (<c>amr</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Scope">
|
||||
<summary>
|
||||
Space separated scope list (<c>scope</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.ScopeItem">
|
||||
<summary>
|
||||
Individual scope items (<c>scp</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.Audience">
|
||||
<summary>
|
||||
OAuth2 resource audiences (<c>aud</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.IdentityProvider">
|
||||
<summary>
|
||||
Identity provider hint for downstream services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsClaimTypes.SessionId">
|
||||
<summary>
|
||||
Session identifier claim (<c>sid</c>).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder">
|
||||
<summary>
|
||||
Fluent helper used to construct <see cref="T:System.Security.Claims.ClaimsPrincipal"/> instances that follow StellaOps conventions.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithSubject(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the canonical subject identifier.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithClientId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the canonical client identifier.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithTenant(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the tenant identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithName(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the user display name claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithIdentityProvider(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the identity provider claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithSessionId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the session identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithTokenId(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the token identifier claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAuthenticationMethod(System.String)">
|
||||
<summary>
|
||||
Adds or replaces the authentication method reference claim.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithNameClaimType(System.String)">
|
||||
<summary>
|
||||
Sets the name claim type appended when building the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithRoleClaimType(System.String)">
|
||||
<summary>
|
||||
Sets the role claim type appended when building the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAuthenticationType(System.String)">
|
||||
<summary>
|
||||
Sets the authentication type stamped on the <see cref="T:System.Security.Claims.ClaimsIdentity"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithScopes(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Registers the supplied scopes (normalised to lower-case, deduplicated, sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAudiences(System.Collections.Generic.IEnumerable{System.String})">
|
||||
<summary>
|
||||
Registers the supplied audiences (trimmed, deduplicated, sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithAudience(System.String)">
|
||||
<summary>
|
||||
Adds a single audience.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.AddClaim(System.String,System.String,System.String)">
|
||||
<summary>
|
||||
Adds an arbitrary claim (no deduplication is performed).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.AddClaims(System.Collections.Generic.IEnumerable{System.Security.Claims.Claim})">
|
||||
<summary>
|
||||
Adds multiple claims (incoming claims are cloned to enforce value trimming).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithIssuedAt(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>iat</c> (issued at) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithNotBefore(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>nbf</c> (not before) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.WithExpires(System.DateTimeOffset)">
|
||||
<summary>
|
||||
Adds an <c>exp</c> (expires) claim using Unix time seconds.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.NormalizedScopes">
|
||||
<summary>
|
||||
Returns the normalised scope list (deduplicated + sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.Audiences">
|
||||
<summary>
|
||||
Returns the normalised audience list (deduplicated + sorted).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsPrincipalBuilder.Build">
|
||||
<summary>
|
||||
Builds the immutable <see cref="T:System.Security.Claims.ClaimsPrincipal"/> instance based on the registered data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory">
|
||||
<summary>
|
||||
Factory helpers for returning RFC 7807 problem responses using StellaOps conventions.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.AuthenticationRequired(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 401 problem response indicating authentication is required.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.InvalidToken(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 401 problem response for invalid, expired, or revoked tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.Forbidden(System.String,System.String)">
|
||||
<summary>
|
||||
Produces a 403 problem response when access is denied.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsProblemResultFactory.InsufficientScope(System.Collections.Generic.IReadOnlyCollection{System.String},System.Collections.Generic.IReadOnlyCollection{System.String},System.String)">
|
||||
<summary>
|
||||
Produces a 403 problem response for insufficient scopes.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Abstractions.StellaOpsScopes">
|
||||
<summary>
|
||||
Canonical scope names supported by StellaOps services.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.ConcelierJobsTrigger">
|
||||
<summary>
|
||||
Scope required to trigger Concelier jobs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.ConcelierMerge">
|
||||
<summary>
|
||||
Scope required to manage Concelier merge operations.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityUsersManage">
|
||||
<summary>
|
||||
Scope granting administrative access to Authority user management.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityClientsManage">
|
||||
<summary>
|
||||
Scope granting administrative access to Authority client registrations.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AuthorityAuditRead">
|
||||
<summary>
|
||||
Scope granting read-only access to Authority audit logs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.Bypass">
|
||||
<summary>
|
||||
Synthetic scope representing trusted network bypass.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AdvisoryRead">
|
||||
<summary>
|
||||
Scope granting read-only access to raw advisory ingestion data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AdvisoryIngest">
|
||||
<summary>
|
||||
Scope granting write access for raw advisory ingestion.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.VexRead">
|
||||
<summary>
|
||||
Scope granting read-only access to raw VEX ingestion data.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.VexIngest">
|
||||
<summary>
|
||||
Scope granting write access for raw VEX ingestion.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:StellaOps.Auth.Abstractions.StellaOpsScopes.AocVerify">
|
||||
<summary>
|
||||
Scope granting permission to execute aggregation-only contract verification.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsScopes.Normalize(System.String)">
|
||||
<summary>
|
||||
Normalises a scope string (trim/convert to lower case).
|
||||
</summary>
|
||||
<param name="scope">Scope raw value.</param>
|
||||
<returns>Normalised scope or <c>null</c> when the input is blank.</returns>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Abstractions.StellaOpsScopes.IsKnown(System.String)">
|
||||
<summary>
|
||||
Checks whether the provided scope is registered as a built-in StellaOps scope.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Abstractions.StellaOpsScopes.All">
|
||||
<summary>
|
||||
Returns the full set of built-in scopes.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
@@ -1,233 +1,233 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>StellaOps.Auth.Client</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:StellaOps.Auth.Client.FileTokenCache">
|
||||
<summary>
|
||||
File-based token cache suitable for CLI/offline usage.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.InMemoryTokenCache">
|
||||
<summary>
|
||||
In-memory token cache suitable for service scenarios.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.IStellaOpsTokenCache">
|
||||
<summary>
|
||||
Abstraction for caching StellaOps tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.GetAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves a cached token entry, if present.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.SetAsync(System.String,StellaOps.Auth.Client.StellaOpsTokenCacheEntry,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Stores or updates a token entry for the specified key.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.RemoveAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Removes the cached entry for the specified key.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.IStellaOpsTokenClient">
|
||||
<summary>
|
||||
Abstraction for requesting tokens from StellaOps Authority.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.RequestPasswordTokenAsync(System.String,System.String,System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Requests an access token using the resource owner password credentials flow.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.RequestClientCredentialsTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Requests an access token using the client credentials flow.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.GetJsonWebKeySetAsync(System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves the cached JWKS document.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.GetCachedTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.CacheTokenAsync(System.String,StellaOps.Auth.Client.StellaOpsTokenCacheEntry,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Persists a token entry in the cache.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.ClearCachedTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Removes a cached entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.ServiceCollectionExtensions">
|
||||
<summary>
|
||||
DI helpers for the StellaOps auth client.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.ServiceCollectionExtensions.AddStellaOpsAuthClient(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{StellaOps.Auth.Client.StellaOpsAuthClientOptions})">
|
||||
<summary>
|
||||
Registers the StellaOps auth client with the provided configuration.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.ServiceCollectionExtensions.AddStellaOpsFileTokenCache(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.String)">
|
||||
<summary>
|
||||
Registers a file-backed token cache implementation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsAuthClientOptions">
|
||||
<summary>
|
||||
Options controlling the StellaOps authentication client.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.Authority">
|
||||
<summary>
|
||||
Authority (issuer) base URL.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ClientId">
|
||||
<summary>
|
||||
OAuth client identifier (optional for password flow).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ClientSecret">
|
||||
<summary>
|
||||
OAuth client secret (optional for public clients).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.DefaultScopes">
|
||||
<summary>
|
||||
Default scopes requested for flows that do not explicitly override them.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.RetryDelays">
|
||||
<summary>
|
||||
Retry delays applied by HTTP retry policy (empty uses defaults).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.EnableRetries">
|
||||
<summary>
|
||||
Gets or sets a value indicating whether HTTP retry policies are enabled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.HttpTimeout">
|
||||
<summary>
|
||||
Timeout applied to discovery and token HTTP requests.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.DiscoveryCacheLifetime">
|
||||
<summary>
|
||||
Lifetime of cached discovery metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.JwksCacheLifetime">
|
||||
<summary>
|
||||
Lifetime of cached JWKS metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ExpirationSkew">
|
||||
<summary>
|
||||
Buffer applied when determining cache expiration (default: 30 seconds).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.AllowOfflineCacheFallback">
|
||||
<summary>
|
||||
Gets or sets a value indicating whether cached discovery/JWKS responses may be served when the Authority is unreachable.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.OfflineCacheTolerance">
|
||||
<summary>
|
||||
Additional tolerance window during which stale cache entries remain valid if offline fallback is allowed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.AuthorityUri">
|
||||
<summary>
|
||||
Parsed Authority URI (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.NormalizedScopes">
|
||||
<summary>
|
||||
Normalised scope list (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.NormalizedRetryDelays">
|
||||
<summary>
|
||||
Normalised retry delays (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsAuthClientOptions.Validate">
|
||||
<summary>
|
||||
Validates required values and normalises scope entries.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsDiscoveryCache">
|
||||
<summary>
|
||||
Caches Authority discovery metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.OpenIdConfiguration">
|
||||
<summary>
|
||||
Minimal OpenID Connect configuration representation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.OpenIdConfiguration.#ctor(System.Uri,System.Uri)">
|
||||
<summary>
|
||||
Minimal OpenID Connect configuration representation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsJwksCache">
|
||||
<summary>
|
||||
Caches JWKS documents for Authority.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenCacheEntry">
|
||||
<summary>
|
||||
Represents a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.#ctor(System.String,System.String,System.DateTimeOffset,System.Collections.Generic.IReadOnlyList{System.String},System.String,System.String,System.Collections.Generic.IReadOnlyDictionary{System.String,System.String})">
|
||||
<summary>
|
||||
Represents a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.IsExpired(System.TimeProvider,System.Nullable{System.TimeSpan})">
|
||||
<summary>
|
||||
Determines whether the token is expired given the provided <see cref="T:System.TimeProvider"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.NormalizeScopes">
|
||||
<summary>
|
||||
Creates a copy with scopes normalised.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenClient">
|
||||
<summary>
|
||||
Default implementation of <see cref="T:StellaOps.Auth.Client.IStellaOpsTokenClient"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenResult">
|
||||
<summary>
|
||||
Represents an issued token with metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenResult.#ctor(System.String,System.String,System.DateTimeOffset,System.Collections.Generic.IReadOnlyList{System.String},System.String,System.String,System.String)">
|
||||
<summary>
|
||||
Represents an issued token with metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenResult.ToCacheEntry">
|
||||
<summary>
|
||||
Converts the result to a cache entry.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>StellaOps.Auth.Client</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:StellaOps.Auth.Client.FileTokenCache">
|
||||
<summary>
|
||||
File-based token cache suitable for CLI/offline usage.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.InMemoryTokenCache">
|
||||
<summary>
|
||||
In-memory token cache suitable for service scenarios.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.IStellaOpsTokenCache">
|
||||
<summary>
|
||||
Abstraction for caching StellaOps tokens.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.GetAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves a cached token entry, if present.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.SetAsync(System.String,StellaOps.Auth.Client.StellaOpsTokenCacheEntry,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Stores or updates a token entry for the specified key.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenCache.RemoveAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Removes the cached entry for the specified key.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.IStellaOpsTokenClient">
|
||||
<summary>
|
||||
Abstraction for requesting tokens from StellaOps Authority.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.RequestPasswordTokenAsync(System.String,System.String,System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Requests an access token using the resource owner password credentials flow.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.RequestClientCredentialsTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Requests an access token using the client credentials flow.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.GetJsonWebKeySetAsync(System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves the cached JWKS document.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.GetCachedTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Retrieves a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.CacheTokenAsync(System.String,StellaOps.Auth.Client.StellaOpsTokenCacheEntry,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Persists a token entry in the cache.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.IStellaOpsTokenClient.ClearCachedTokenAsync(System.String,System.Threading.CancellationToken)">
|
||||
<summary>
|
||||
Removes a cached entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.ServiceCollectionExtensions">
|
||||
<summary>
|
||||
DI helpers for the StellaOps auth client.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.ServiceCollectionExtensions.AddStellaOpsAuthClient(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{StellaOps.Auth.Client.StellaOpsAuthClientOptions})">
|
||||
<summary>
|
||||
Registers the StellaOps auth client with the provided configuration.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.ServiceCollectionExtensions.AddStellaOpsFileTokenCache(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.String)">
|
||||
<summary>
|
||||
Registers a file-backed token cache implementation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsAuthClientOptions">
|
||||
<summary>
|
||||
Options controlling the StellaOps authentication client.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.Authority">
|
||||
<summary>
|
||||
Authority (issuer) base URL.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ClientId">
|
||||
<summary>
|
||||
OAuth client identifier (optional for password flow).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ClientSecret">
|
||||
<summary>
|
||||
OAuth client secret (optional for public clients).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.DefaultScopes">
|
||||
<summary>
|
||||
Default scopes requested for flows that do not explicitly override them.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.RetryDelays">
|
||||
<summary>
|
||||
Retry delays applied by HTTP retry policy (empty uses defaults).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.EnableRetries">
|
||||
<summary>
|
||||
Gets or sets a value indicating whether HTTP retry policies are enabled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.HttpTimeout">
|
||||
<summary>
|
||||
Timeout applied to discovery and token HTTP requests.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.DiscoveryCacheLifetime">
|
||||
<summary>
|
||||
Lifetime of cached discovery metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.JwksCacheLifetime">
|
||||
<summary>
|
||||
Lifetime of cached JWKS metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.ExpirationSkew">
|
||||
<summary>
|
||||
Buffer applied when determining cache expiration (default: 30 seconds).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.AllowOfflineCacheFallback">
|
||||
<summary>
|
||||
Gets or sets a value indicating whether cached discovery/JWKS responses may be served when the Authority is unreachable.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.OfflineCacheTolerance">
|
||||
<summary>
|
||||
Additional tolerance window during which stale cache entries remain valid if offline fallback is allowed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.AuthorityUri">
|
||||
<summary>
|
||||
Parsed Authority URI (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.NormalizedScopes">
|
||||
<summary>
|
||||
Normalised scope list (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:StellaOps.Auth.Client.StellaOpsAuthClientOptions.NormalizedRetryDelays">
|
||||
<summary>
|
||||
Normalised retry delays (populated after validation).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsAuthClientOptions.Validate">
|
||||
<summary>
|
||||
Validates required values and normalises scope entries.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsDiscoveryCache">
|
||||
<summary>
|
||||
Caches Authority discovery metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.OpenIdConfiguration">
|
||||
<summary>
|
||||
Minimal OpenID Connect configuration representation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.OpenIdConfiguration.#ctor(System.Uri,System.Uri)">
|
||||
<summary>
|
||||
Minimal OpenID Connect configuration representation.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsJwksCache">
|
||||
<summary>
|
||||
Caches JWKS documents for Authority.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenCacheEntry">
|
||||
<summary>
|
||||
Represents a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.#ctor(System.String,System.String,System.DateTimeOffset,System.Collections.Generic.IReadOnlyList{System.String},System.String,System.String,System.Collections.Generic.IReadOnlyDictionary{System.String,System.String})">
|
||||
<summary>
|
||||
Represents a cached token entry.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.IsExpired(System.TimeProvider,System.Nullable{System.TimeSpan})">
|
||||
<summary>
|
||||
Determines whether the token is expired given the provided <see cref="T:System.TimeProvider"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenCacheEntry.NormalizeScopes">
|
||||
<summary>
|
||||
Creates a copy with scopes normalised.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenClient">
|
||||
<summary>
|
||||
Default implementation of <see cref="T:StellaOps.Auth.Client.IStellaOpsTokenClient"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:StellaOps.Auth.Client.StellaOpsTokenResult">
|
||||
<summary>
|
||||
Represents an issued token with metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenResult.#ctor(System.String,System.String,System.DateTimeOffset,System.Collections.Generic.IReadOnlyList{System.String},System.String,System.String,System.String)">
|
||||
<summary>
|
||||
Represents an issued token with metadata.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:StellaOps.Auth.Client.StellaOpsTokenResult.ToCacheEntry">
|
||||
<summary>
|
||||
Converts the result to a cache entry.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
scenario,iterations,observations,aliases,linksets,mean_total_ms,p95_total_ms,max_total_ms,mean_insert_ms,mean_correlation_ms,mean_throughput_per_sec,min_throughput_per_sec,mean_mongo_throughput_per_sec,min_mongo_throughput_per_sec,max_allocated_mb
|
||||
lnm_ingest_baseline,5,5000,500,6000,555.1984,823.4957,866.6236,366.2635,188.9349,9877.7916,5769.5175,15338.0851,8405.1257,62.4477
|
||||
lnm_ingest_fanout_medium,5,10000,800,14800,785.8909,841.6247,842.8815,453.5087,332.3822,12794.9550,11864.0639,22086.0320,20891.0579,145.8328
|
||||
lnm_ingest_fanout_high,5,15000,1200,17400,1299.3458,1367.0934,1369.9430,741.6265,557.7193,11571.0991,10949.3607,20232.5180,19781.6762,238.3450
|
||||
scenario,iterations,observations,aliases,linksets,mean_total_ms,p95_total_ms,max_total_ms,mean_insert_ms,mean_correlation_ms,mean_throughput_per_sec,min_throughput_per_sec,mean_mongo_throughput_per_sec,min_mongo_throughput_per_sec,max_allocated_mb
|
||||
lnm_ingest_baseline,5,5000,500,6000,555.1984,823.4957,866.6236,366.2635,188.9349,9877.7916,5769.5175,15338.0851,8405.1257,62.4477
|
||||
lnm_ingest_fanout_medium,5,10000,800,14800,785.8909,841.6247,842.8815,453.5087,332.3822,12794.9550,11864.0639,22086.0320,20891.0579,145.8328
|
||||
lnm_ingest_fanout_high,5,15000,1200,17400,1299.3458,1367.0934,1369.9430,741.6265,557.7193,11571.0991,10949.3607,20232.5180,19781.6762,238.3450
|
||||
|
||||
|
@@ -1,84 +1,84 @@
|
||||
{
|
||||
"schemaVersion": "linknotmerge-bench/1.0",
|
||||
"capturedAt": "2025-10-26T21:09:17.6345283+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "lnm_ingest_baseline",
|
||||
"label": "5k observations, 500 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 5000,
|
||||
"aliases": 500,
|
||||
"linksets": 6000,
|
||||
"meanTotalMs": 555.1983600000001,
|
||||
"p95TotalMs": 823.49568,
|
||||
"maxTotalMs": 866.6236,
|
||||
"meanInsertMs": 366.2635,
|
||||
"meanCorrelationMs": 188.93486000000001,
|
||||
"meanThroughputPerSecond": 9877.791561756272,
|
||||
"minThroughputPerSecond": 5769.517469868118,
|
||||
"meanMongoThroughputPerSecond": 15338.085148262326,
|
||||
"minMongoThroughputPerSecond": 8405.1257146248,
|
||||
"maxAllocatedMb": 62.44767761230469,
|
||||
"thresholdMs": 900,
|
||||
"minThroughputThresholdPerSecond": 5500,
|
||||
"minMongoThroughputThresholdPerSecond": 8000,
|
||||
"maxAllocatedThresholdMb": 160,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "lnm_ingest_fanout_medium",
|
||||
"label": "10k observations, 800 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 10000,
|
||||
"aliases": 800,
|
||||
"linksets": 14800,
|
||||
"meanTotalMs": 785.89092,
|
||||
"p95TotalMs": 841.6247,
|
||||
"maxTotalMs": 842.8815,
|
||||
"meanInsertMs": 453.50868,
|
||||
"meanCorrelationMs": 332.38224,
|
||||
"meanThroughputPerSecond": 12794.954951406156,
|
||||
"minThroughputPerSecond": 11864.063928322072,
|
||||
"meanMongoThroughputPerSecond": 22086.032034175576,
|
||||
"minMongoThroughputPerSecond": 20891.057937797712,
|
||||
"maxAllocatedMb": 145.83282470703125,
|
||||
"thresholdMs": 1300,
|
||||
"minThroughputThresholdPerSecond": 8000,
|
||||
"minMongoThroughputThresholdPerSecond": 13000,
|
||||
"maxAllocatedThresholdMb": 220,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "lnm_ingest_fanout_high",
|
||||
"label": "15k observations, 1200 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 15000,
|
||||
"aliases": 1200,
|
||||
"linksets": 17400,
|
||||
"meanTotalMs": 1299.3458,
|
||||
"p95TotalMs": 1367.09344,
|
||||
"maxTotalMs": 1369.943,
|
||||
"meanInsertMs": 741.62654,
|
||||
"meanCorrelationMs": 557.71926,
|
||||
"meanThroughputPerSecond": 11571.099129140825,
|
||||
"minThroughputPerSecond": 10949.360666830664,
|
||||
"meanMongoThroughputPerSecond": 20232.5179777937,
|
||||
"minMongoThroughputPerSecond": 19781.676233305086,
|
||||
"maxAllocatedMb": 238.34496307373047,
|
||||
"thresholdMs": 2200,
|
||||
"minThroughputThresholdPerSecond": 7000,
|
||||
"minMongoThroughputThresholdPerSecond": 13000,
|
||||
"maxAllocatedThresholdMb": 300,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"schemaVersion": "linknotmerge-bench/1.0",
|
||||
"capturedAt": "2025-10-26T21:09:17.6345283+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "lnm_ingest_baseline",
|
||||
"label": "5k observations, 500 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 5000,
|
||||
"aliases": 500,
|
||||
"linksets": 6000,
|
||||
"meanTotalMs": 555.1983600000001,
|
||||
"p95TotalMs": 823.49568,
|
||||
"maxTotalMs": 866.6236,
|
||||
"meanInsertMs": 366.2635,
|
||||
"meanCorrelationMs": 188.93486000000001,
|
||||
"meanThroughputPerSecond": 9877.791561756272,
|
||||
"minThroughputPerSecond": 5769.517469868118,
|
||||
"meanMongoThroughputPerSecond": 15338.085148262326,
|
||||
"minMongoThroughputPerSecond": 8405.1257146248,
|
||||
"maxAllocatedMb": 62.44767761230469,
|
||||
"thresholdMs": 900,
|
||||
"minThroughputThresholdPerSecond": 5500,
|
||||
"minMongoThroughputThresholdPerSecond": 8000,
|
||||
"maxAllocatedThresholdMb": 160,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "lnm_ingest_fanout_medium",
|
||||
"label": "10k observations, 800 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 10000,
|
||||
"aliases": 800,
|
||||
"linksets": 14800,
|
||||
"meanTotalMs": 785.89092,
|
||||
"p95TotalMs": 841.6247,
|
||||
"maxTotalMs": 842.8815,
|
||||
"meanInsertMs": 453.50868,
|
||||
"meanCorrelationMs": 332.38224,
|
||||
"meanThroughputPerSecond": 12794.954951406156,
|
||||
"minThroughputPerSecond": 11864.063928322072,
|
||||
"meanMongoThroughputPerSecond": 22086.032034175576,
|
||||
"minMongoThroughputPerSecond": 20891.057937797712,
|
||||
"maxAllocatedMb": 145.83282470703125,
|
||||
"thresholdMs": 1300,
|
||||
"minThroughputThresholdPerSecond": 8000,
|
||||
"minMongoThroughputThresholdPerSecond": 13000,
|
||||
"maxAllocatedThresholdMb": 220,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "lnm_ingest_fanout_high",
|
||||
"label": "15k observations, 1200 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 15000,
|
||||
"aliases": 1200,
|
||||
"linksets": 17400,
|
||||
"meanTotalMs": 1299.3458,
|
||||
"p95TotalMs": 1367.09344,
|
||||
"maxTotalMs": 1369.943,
|
||||
"meanInsertMs": 741.62654,
|
||||
"meanCorrelationMs": 557.71926,
|
||||
"meanThroughputPerSecond": 11571.099129140825,
|
||||
"minThroughputPerSecond": 10949.360666830664,
|
||||
"meanMongoThroughputPerSecond": 20232.5179777937,
|
||||
"minMongoThroughputPerSecond": 19781.676233305086,
|
||||
"maxAllocatedMb": 238.34496307373047,
|
||||
"thresholdMs": 2200,
|
||||
"minThroughputThresholdPerSecond": 7000,
|
||||
"minMongoThroughputThresholdPerSecond": 13000,
|
||||
"maxAllocatedThresholdMb": 300,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,60 +1,60 @@
|
||||
# HELP linknotmerge_bench_total_ms Link-Not-Merge benchmark total duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_total_ms gauge
|
||||
# HELP linknotmerge_bench_correlation_ms Link-Not-Merge benchmark correlation duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_correlation_ms gauge
|
||||
# HELP linknotmerge_bench_insert_ms Link-Not-Merge benchmark Mongo insert duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_insert_ms gauge
|
||||
# HELP linknotmerge_bench_throughput_per_sec Link-Not-Merge benchmark throughput metrics (observations per second).
|
||||
# TYPE linknotmerge_bench_throughput_per_sec gauge
|
||||
# HELP linknotmerge_bench_mongo_throughput_per_sec Link-Not-Merge benchmark Mongo throughput metrics (operations per second).
|
||||
# TYPE linknotmerge_bench_mongo_throughput_per_sec gauge
|
||||
# HELP linknotmerge_bench_allocated_mb Link-Not-Merge benchmark allocation metrics (megabytes).
|
||||
# TYPE linknotmerge_bench_allocated_mb gauge
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_baseline"} 555.19836000000009
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_baseline"} 823.49567999999999
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_baseline"} 866.62360000000001
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_baseline"} 900
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_baseline"} 188.93486000000001
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_baseline"} 366.26350000000002
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_baseline"} 9877.7915617562721
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_baseline"} 5769.5174698681176
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 5500
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_baseline"} 15338.085148262326
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_baseline"} 8405.1257146248008
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 8000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_baseline"} 62.447677612304688
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_baseline"} 160
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_baseline"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_baseline"} 0
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_medium"} 785.89092000000005
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_medium"} 841.62469999999996
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_medium"} 842.88149999999996
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_medium"} 1300
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_medium"} 332.38224000000002
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_medium"} 453.50868000000003
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 12794.954951406156
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 11864.063928322072
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 8000
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 22086.032034175576
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 20891.057937797712
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 13000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_medium"} 145.83282470703125
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_medium"} 220
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_medium"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_medium"} 0
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_high"} 1299.3458000000001
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_high"} 1367.0934400000001
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_high"} 1369.943
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_high"} 2200
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_high"} 557.71925999999996
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_high"} 741.62653999999998
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 11571.099129140825
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 10949.360666830664
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 7000
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 20232.517977793701
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 19781.676233305086
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 13000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_high"} 238.34496307373047
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_high"} 300
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_high"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_high"} 0
|
||||
# HELP linknotmerge_bench_total_ms Link-Not-Merge benchmark total duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_total_ms gauge
|
||||
# HELP linknotmerge_bench_correlation_ms Link-Not-Merge benchmark correlation duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_correlation_ms gauge
|
||||
# HELP linknotmerge_bench_insert_ms Link-Not-Merge benchmark Mongo insert duration metrics (milliseconds).
|
||||
# TYPE linknotmerge_bench_insert_ms gauge
|
||||
# HELP linknotmerge_bench_throughput_per_sec Link-Not-Merge benchmark throughput metrics (observations per second).
|
||||
# TYPE linknotmerge_bench_throughput_per_sec gauge
|
||||
# HELP linknotmerge_bench_mongo_throughput_per_sec Link-Not-Merge benchmark Mongo throughput metrics (operations per second).
|
||||
# TYPE linknotmerge_bench_mongo_throughput_per_sec gauge
|
||||
# HELP linknotmerge_bench_allocated_mb Link-Not-Merge benchmark allocation metrics (megabytes).
|
||||
# TYPE linknotmerge_bench_allocated_mb gauge
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_baseline"} 555.19836000000009
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_baseline"} 823.49567999999999
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_baseline"} 866.62360000000001
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_baseline"} 900
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_baseline"} 188.93486000000001
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_baseline"} 366.26350000000002
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_baseline"} 9877.7915617562721
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_baseline"} 5769.5174698681176
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 5500
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_baseline"} 15338.085148262326
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_baseline"} 8405.1257146248008
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 8000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_baseline"} 62.447677612304688
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_baseline"} 160
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_baseline"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_baseline"} 0
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_medium"} 785.89092000000005
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_medium"} 841.62469999999996
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_medium"} 842.88149999999996
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_medium"} 1300
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_medium"} 332.38224000000002
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_medium"} 453.50868000000003
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 12794.954951406156
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 11864.063928322072
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 8000
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 22086.032034175576
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 20891.057937797712
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 13000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_medium"} 145.83282470703125
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_medium"} 220
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_medium"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_medium"} 0
|
||||
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_high"} 1299.3458000000001
|
||||
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_high"} 1367.0934400000001
|
||||
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_high"} 1369.943
|
||||
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_high"} 2200
|
||||
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_high"} 557.71925999999996
|
||||
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_high"} 741.62653999999998
|
||||
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 11571.099129140825
|
||||
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 10949.360666830664
|
||||
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 7000
|
||||
linknotmerge_bench_mean_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 20232.517977793701
|
||||
linknotmerge_bench_min_mongo_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 19781.676233305086
|
||||
linknotmerge_bench_mongo_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 13000
|
||||
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_high"} 238.34496307373047
|
||||
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_high"} 300
|
||||
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_high"} 1.1499999999999999
|
||||
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_high"} 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
scenario,iterations,observations,statements,events,mean_total_ms,p95_total_ms,max_total_ms,mean_insert_ms,mean_correlation_ms,mean_observation_throughput_per_sec,min_observation_throughput_per_sec,mean_event_throughput_per_sec,min_event_throughput_per_sec,max_allocated_mb
|
||||
vex_ingest_baseline,5,4000,24000,21326,842.8191,1319.3038,1432.7675,346.7277,496.0915,5349.8940,2791.7998,48942.4901,24653.0556,138.6365
|
||||
vex_ingest_medium,5,8000,64000,56720,1525.9929,1706.8900,1748.9056,533.3378,992.6552,5274.5883,4574.2892,57654.9190,48531.7353,326.8638
|
||||
vex_ingest_high,5,12000,120000,106910,2988.5094,3422.1728,3438.9364,903.3927,2085.1167,4066.2300,3489.4510,52456.9493,42358.0556,583.9903
|
||||
scenario,iterations,observations,statements,events,mean_total_ms,p95_total_ms,max_total_ms,mean_insert_ms,mean_correlation_ms,mean_observation_throughput_per_sec,min_observation_throughput_per_sec,mean_event_throughput_per_sec,min_event_throughput_per_sec,max_allocated_mb
|
||||
vex_ingest_baseline,5,4000,24000,21326,842.8191,1319.3038,1432.7675,346.7277,496.0915,5349.8940,2791.7998,48942.4901,24653.0556,138.6365
|
||||
vex_ingest_medium,5,8000,64000,56720,1525.9929,1706.8900,1748.9056,533.3378,992.6552,5274.5883,4574.2892,57654.9190,48531.7353,326.8638
|
||||
vex_ingest_high,5,12000,120000,106910,2988.5094,3422.1728,3438.9364,903.3927,2085.1167,4066.2300,3489.4510,52456.9493,42358.0556,583.9903
|
||||
|
||||
|
@@ -1,84 +1,84 @@
|
||||
{
|
||||
"schemaVersion": "linknotmerge-vex-bench/1.0",
|
||||
"capturedAt": "2025-10-26T21:29:34.4007212+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "vex_ingest_baseline",
|
||||
"label": "4k observations, 400 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 4000,
|
||||
"statements": 24000,
|
||||
"events": 21326,
|
||||
"meanTotalMs": 842.81914,
|
||||
"p95TotalMs": 1319.3037799999997,
|
||||
"maxTotalMs": 1432.7675,
|
||||
"meanInsertMs": 346.72766,
|
||||
"meanCorrelationMs": 496.09147999999993,
|
||||
"meanObservationThroughputPerSecond": 5349.894040882909,
|
||||
"minObservationThroughputPerSecond": 2791.7997860783416,
|
||||
"meanEventThroughputPerSecond": 48942.49008943273,
|
||||
"minEventThroughputPerSecond": 24653.055581276763,
|
||||
"maxAllocatedMb": 138.63648986816406,
|
||||
"thresholdMs": 2300,
|
||||
"minObservationThroughputThresholdPerSecond": 1800,
|
||||
"minEventThroughputThresholdPerSecond": 2000,
|
||||
"maxAllocatedThresholdMb": 220,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "vex_ingest_medium",
|
||||
"label": "8k observations, 700 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 8000,
|
||||
"statements": 64000,
|
||||
"events": 56720,
|
||||
"meanTotalMs": 1525.99294,
|
||||
"p95TotalMs": 1706.89,
|
||||
"maxTotalMs": 1748.9056,
|
||||
"meanInsertMs": 533.3377800000001,
|
||||
"meanCorrelationMs": 992.6551599999999,
|
||||
"meanObservationThroughputPerSecond": 5274.588273225903,
|
||||
"minObservationThroughputPerSecond": 4574.289201201025,
|
||||
"meanEventThroughputPerSecond": 57654.91903920916,
|
||||
"minEventThroughputPerSecond": 48531.73532270095,
|
||||
"maxAllocatedMb": 326.8638000488281,
|
||||
"thresholdMs": 3200,
|
||||
"minObservationThroughputThresholdPerSecond": 2200,
|
||||
"minEventThroughputThresholdPerSecond": 2500,
|
||||
"maxAllocatedThresholdMb": 400,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "vex_ingest_high",
|
||||
"label": "12k observations, 1100 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 12000,
|
||||
"statements": 120000,
|
||||
"events": 106910,
|
||||
"meanTotalMs": 2988.50936,
|
||||
"p95TotalMs": 3422.1728,
|
||||
"maxTotalMs": 3438.9364,
|
||||
"meanInsertMs": 903.3926800000002,
|
||||
"meanCorrelationMs": 2085.11668,
|
||||
"meanObservationThroughputPerSecond": 4066.2299506870645,
|
||||
"minObservationThroughputPerSecond": 3489.450982577055,
|
||||
"meanEventThroughputPerSecond": 52456.94928323016,
|
||||
"minEventThroughputPerSecond": 42358.05564361166,
|
||||
"maxAllocatedMb": 583.9903411865234,
|
||||
"thresholdMs": 4200,
|
||||
"minObservationThroughputThresholdPerSecond": 2200,
|
||||
"minEventThroughputThresholdPerSecond": 2500,
|
||||
"maxAllocatedThresholdMb": 700,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"schemaVersion": "linknotmerge-vex-bench/1.0",
|
||||
"capturedAt": "2025-10-26T21:29:34.4007212+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "vex_ingest_baseline",
|
||||
"label": "4k observations, 400 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 4000,
|
||||
"statements": 24000,
|
||||
"events": 21326,
|
||||
"meanTotalMs": 842.81914,
|
||||
"p95TotalMs": 1319.3037799999997,
|
||||
"maxTotalMs": 1432.7675,
|
||||
"meanInsertMs": 346.72766,
|
||||
"meanCorrelationMs": 496.09147999999993,
|
||||
"meanObservationThroughputPerSecond": 5349.894040882909,
|
||||
"minObservationThroughputPerSecond": 2791.7997860783416,
|
||||
"meanEventThroughputPerSecond": 48942.49008943273,
|
||||
"minEventThroughputPerSecond": 24653.055581276763,
|
||||
"maxAllocatedMb": 138.63648986816406,
|
||||
"thresholdMs": 2300,
|
||||
"minObservationThroughputThresholdPerSecond": 1800,
|
||||
"minEventThroughputThresholdPerSecond": 2000,
|
||||
"maxAllocatedThresholdMb": 220,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "vex_ingest_medium",
|
||||
"label": "8k observations, 700 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 8000,
|
||||
"statements": 64000,
|
||||
"events": 56720,
|
||||
"meanTotalMs": 1525.99294,
|
||||
"p95TotalMs": 1706.89,
|
||||
"maxTotalMs": 1748.9056,
|
||||
"meanInsertMs": 533.3377800000001,
|
||||
"meanCorrelationMs": 992.6551599999999,
|
||||
"meanObservationThroughputPerSecond": 5274.588273225903,
|
||||
"minObservationThroughputPerSecond": 4574.289201201025,
|
||||
"meanEventThroughputPerSecond": 57654.91903920916,
|
||||
"minEventThroughputPerSecond": 48531.73532270095,
|
||||
"maxAllocatedMb": 326.8638000488281,
|
||||
"thresholdMs": 3200,
|
||||
"minObservationThroughputThresholdPerSecond": 2200,
|
||||
"minEventThroughputThresholdPerSecond": 2500,
|
||||
"maxAllocatedThresholdMb": 400,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "vex_ingest_high",
|
||||
"label": "12k observations, 1100 aliases",
|
||||
"iterations": 5,
|
||||
"observations": 12000,
|
||||
"statements": 120000,
|
||||
"events": 106910,
|
||||
"meanTotalMs": 2988.50936,
|
||||
"p95TotalMs": 3422.1728,
|
||||
"maxTotalMs": 3438.9364,
|
||||
"meanInsertMs": 903.3926800000002,
|
||||
"meanCorrelationMs": 2085.11668,
|
||||
"meanObservationThroughputPerSecond": 4066.2299506870645,
|
||||
"minObservationThroughputPerSecond": 3489.450982577055,
|
||||
"meanEventThroughputPerSecond": 52456.94928323016,
|
||||
"minEventThroughputPerSecond": 42358.05564361166,
|
||||
"maxAllocatedMb": 583.9903411865234,
|
||||
"thresholdMs": 4200,
|
||||
"minObservationThroughputThresholdPerSecond": 2200,
|
||||
"minEventThroughputThresholdPerSecond": 2500,
|
||||
"maxAllocatedThresholdMb": 700,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,50 +1,50 @@
|
||||
# HELP linknotmerge_vex_bench_total_ms Link-Not-Merge VEX benchmark total duration (milliseconds).
|
||||
# TYPE linknotmerge_vex_bench_total_ms gauge
|
||||
# HELP linknotmerge_vex_bench_throughput_per_sec Link-Not-Merge VEX benchmark observation throughput (observations per second).
|
||||
# TYPE linknotmerge_vex_bench_throughput_per_sec gauge
|
||||
# HELP linknotmerge_vex_bench_event_throughput_per_sec Link-Not-Merge VEX benchmark event throughput (events per second).
|
||||
# TYPE linknotmerge_vex_bench_event_throughput_per_sec gauge
|
||||
# HELP linknotmerge_vex_bench_allocated_mb Link-Not-Merge VEX benchmark max allocations (megabytes).
|
||||
# TYPE linknotmerge_vex_bench_allocated_mb gauge
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_baseline"} 842.81913999999995
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_baseline"} 1319.3037799999997
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_baseline"} 1432.7674999999999
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_baseline"} 2300
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_baseline"} 5349.8940408829094
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_baseline"} 2791.7997860783416
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_baseline"} 1800
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_baseline"} 48942.490089432729
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_baseline"} 24653.055581276763
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_baseline"} 2000
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_baseline"} 138.63648986816406
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_baseline"} 220
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_baseline"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_baseline"} 0
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_medium"} 1525.9929400000001
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_medium"} 1706.8900000000001
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_medium"} 1748.9056
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_medium"} 3200
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_medium"} 5274.5882732259033
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_medium"} 4574.2892012010252
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_medium"} 2200
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_medium"} 57654.919039209162
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_medium"} 48531.735322700952
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_medium"} 2500
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_medium"} 326.86380004882812
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_medium"} 400
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_medium"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_medium"} 0
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_high"} 2988.50936
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_high"} 3422.1727999999998
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_high"} 3438.9364
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_high"} 4200
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_high"} 4066.2299506870645
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_high"} 3489.4509825770551
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_high"} 2200
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_high"} 52456.949283230162
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_high"} 42358.05564361166
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_high"} 2500
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_high"} 583.99034118652344
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_high"} 700
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_high"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_high"} 0
|
||||
# HELP linknotmerge_vex_bench_total_ms Link-Not-Merge VEX benchmark total duration (milliseconds).
|
||||
# TYPE linknotmerge_vex_bench_total_ms gauge
|
||||
# HELP linknotmerge_vex_bench_throughput_per_sec Link-Not-Merge VEX benchmark observation throughput (observations per second).
|
||||
# TYPE linknotmerge_vex_bench_throughput_per_sec gauge
|
||||
# HELP linknotmerge_vex_bench_event_throughput_per_sec Link-Not-Merge VEX benchmark event throughput (events per second).
|
||||
# TYPE linknotmerge_vex_bench_event_throughput_per_sec gauge
|
||||
# HELP linknotmerge_vex_bench_allocated_mb Link-Not-Merge VEX benchmark max allocations (megabytes).
|
||||
# TYPE linknotmerge_vex_bench_allocated_mb gauge
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_baseline"} 842.81913999999995
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_baseline"} 1319.3037799999997
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_baseline"} 1432.7674999999999
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_baseline"} 2300
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_baseline"} 5349.8940408829094
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_baseline"} 2791.7997860783416
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_baseline"} 1800
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_baseline"} 48942.490089432729
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_baseline"} 24653.055581276763
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_baseline"} 2000
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_baseline"} 138.63648986816406
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_baseline"} 220
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_baseline"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_baseline"} 0
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_medium"} 1525.9929400000001
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_medium"} 1706.8900000000001
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_medium"} 1748.9056
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_medium"} 3200
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_medium"} 5274.5882732259033
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_medium"} 4574.2892012010252
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_medium"} 2200
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_medium"} 57654.919039209162
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_medium"} 48531.735322700952
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_medium"} 2500
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_medium"} 326.86380004882812
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_medium"} 400
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_medium"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_medium"} 0
|
||||
linknotmerge_vex_bench_mean_total_ms{scenario="vex_ingest_high"} 2988.50936
|
||||
linknotmerge_vex_bench_p95_total_ms{scenario="vex_ingest_high"} 3422.1727999999998
|
||||
linknotmerge_vex_bench_max_total_ms{scenario="vex_ingest_high"} 3438.9364
|
||||
linknotmerge_vex_bench_threshold_ms{scenario="vex_ingest_high"} 4200
|
||||
linknotmerge_vex_bench_mean_observation_throughput_per_sec{scenario="vex_ingest_high"} 4066.2299506870645
|
||||
linknotmerge_vex_bench_min_observation_throughput_per_sec{scenario="vex_ingest_high"} 3489.4509825770551
|
||||
linknotmerge_vex_bench_observation_throughput_floor_per_sec{scenario="vex_ingest_high"} 2200
|
||||
linknotmerge_vex_bench_mean_event_throughput_per_sec{scenario="vex_ingest_high"} 52456.949283230162
|
||||
linknotmerge_vex_bench_min_event_throughput_per_sec{scenario="vex_ingest_high"} 42358.05564361166
|
||||
linknotmerge_vex_bench_event_throughput_floor_per_sec{scenario="vex_ingest_high"} 2500
|
||||
linknotmerge_vex_bench_max_allocated_mb{scenario="vex_ingest_high"} 583.99034118652344
|
||||
linknotmerge_vex_bench_max_allocated_threshold_mb{scenario="vex_ingest_high"} 700
|
||||
linknotmerge_vex_bench_regression_limit{scenario="vex_ingest_high"} 1.1499999999999999
|
||||
linknotmerge_vex_bench_regression_breached{scenario="vex_ingest_high"} 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
scenario,iterations,events,deliveries,mean_ms,p95_ms,max_ms,mean_throughput_per_sec,min_throughput_per_sec,max_allocated_mb
|
||||
notify_dispatch_density_05,5,5000,20000,3.4150,4.1722,4.3039,6053938.5172,4646948.1168,0.0000
|
||||
notify_dispatch_density_20,5,7500,675000,24.2274,25.8517,26.0526,27923335.5855,25909122.3141,0.0000
|
||||
notify_dispatch_density_40,5,10000,4000080,138.7387,147.7174,149.1124,28916602.9214,26825938.0172,0.0000
|
||||
scenario,iterations,events,deliveries,mean_ms,p95_ms,max_ms,mean_throughput_per_sec,min_throughput_per_sec,max_allocated_mb
|
||||
notify_dispatch_density_05,5,5000,20000,3.4150,4.1722,4.3039,6053938.5172,4646948.1168,0.0000
|
||||
notify_dispatch_density_20,5,7500,675000,24.2274,25.8517,26.0526,27923335.5855,25909122.3141,0.0000
|
||||
notify_dispatch_density_40,5,10000,4000080,138.7387,147.7174,149.1124,28916602.9214,26825938.0172,0.0000
|
||||
|
||||
|
@@ -1,84 +1,84 @@
|
||||
{
|
||||
"schemaVersion": "notify-dispatch-bench/1.0",
|
||||
"capturedAt": "2025-10-26T20:28:56.3603045+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "notify_dispatch_density_05",
|
||||
"label": "50 rules / 5% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 5000,
|
||||
"totalRules": 50,
|
||||
"actionsPerRule": 2,
|
||||
"averageMatchesPerEvent": 2,
|
||||
"minMatchesPerEvent": 2,
|
||||
"maxMatchesPerEvent": 2,
|
||||
"averageDeliveriesPerEvent": 4,
|
||||
"totalDeliveries": 20000,
|
||||
"meanMs": 3.41498,
|
||||
"p95Ms": 4.17216,
|
||||
"maxMs": 4.3039,
|
||||
"meanThroughputPerSecond": 6053938.51717893,
|
||||
"minThroughputPerSecond": 4646948.116824276,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 400,
|
||||
"minThroughputThresholdPerSecond": 15000,
|
||||
"maxAllocatedThresholdMb": 128,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notify_dispatch_density_20",
|
||||
"label": "150 rules / 20% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 7500,
|
||||
"totalRules": 150,
|
||||
"actionsPerRule": 3,
|
||||
"averageMatchesPerEvent": 30,
|
||||
"minMatchesPerEvent": 30,
|
||||
"maxMatchesPerEvent": 30,
|
||||
"averageDeliveriesPerEvent": 90,
|
||||
"totalDeliveries": 675000,
|
||||
"meanMs": 24.2274,
|
||||
"p95Ms": 25.85172,
|
||||
"maxMs": 26.0526,
|
||||
"meanThroughputPerSecond": 27923335.585545264,
|
||||
"minThroughputPerSecond": 25909122.314087655,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 650,
|
||||
"minThroughputThresholdPerSecond": 30000,
|
||||
"maxAllocatedThresholdMb": 192,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notify_dispatch_density_40",
|
||||
"label": "300 rules / 40% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 10000,
|
||||
"totalRules": 300,
|
||||
"actionsPerRule": 4,
|
||||
"averageMatchesPerEvent": 100.002,
|
||||
"minMatchesPerEvent": 60,
|
||||
"maxMatchesPerEvent": 120,
|
||||
"averageDeliveriesPerEvent": 400.008,
|
||||
"totalDeliveries": 4000080,
|
||||
"meanMs": 138.73866,
|
||||
"p95Ms": 147.71738000000002,
|
||||
"maxMs": 149.1124,
|
||||
"meanThroughputPerSecond": 28916602.921385907,
|
||||
"minThroughputPerSecond": 26825938.017227273,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 900,
|
||||
"minThroughputThresholdPerSecond": 45000,
|
||||
"maxAllocatedThresholdMb": 256,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"schemaVersion": "notify-dispatch-bench/1.0",
|
||||
"capturedAt": "2025-10-26T20:28:56.3603045+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "notify_dispatch_density_05",
|
||||
"label": "50 rules / 5% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 5000,
|
||||
"totalRules": 50,
|
||||
"actionsPerRule": 2,
|
||||
"averageMatchesPerEvent": 2,
|
||||
"minMatchesPerEvent": 2,
|
||||
"maxMatchesPerEvent": 2,
|
||||
"averageDeliveriesPerEvent": 4,
|
||||
"totalDeliveries": 20000,
|
||||
"meanMs": 3.41498,
|
||||
"p95Ms": 4.17216,
|
||||
"maxMs": 4.3039,
|
||||
"meanThroughputPerSecond": 6053938.51717893,
|
||||
"minThroughputPerSecond": 4646948.116824276,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 400,
|
||||
"minThroughputThresholdPerSecond": 15000,
|
||||
"maxAllocatedThresholdMb": 128,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notify_dispatch_density_20",
|
||||
"label": "150 rules / 20% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 7500,
|
||||
"totalRules": 150,
|
||||
"actionsPerRule": 3,
|
||||
"averageMatchesPerEvent": 30,
|
||||
"minMatchesPerEvent": 30,
|
||||
"maxMatchesPerEvent": 30,
|
||||
"averageDeliveriesPerEvent": 90,
|
||||
"totalDeliveries": 675000,
|
||||
"meanMs": 24.2274,
|
||||
"p95Ms": 25.85172,
|
||||
"maxMs": 26.0526,
|
||||
"meanThroughputPerSecond": 27923335.585545264,
|
||||
"minThroughputPerSecond": 25909122.314087655,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 650,
|
||||
"minThroughputThresholdPerSecond": 30000,
|
||||
"maxAllocatedThresholdMb": 192,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notify_dispatch_density_40",
|
||||
"label": "300 rules / 40% fanout",
|
||||
"iterations": 5,
|
||||
"totalEvents": 10000,
|
||||
"totalRules": 300,
|
||||
"actionsPerRule": 4,
|
||||
"averageMatchesPerEvent": 100.002,
|
||||
"minMatchesPerEvent": 60,
|
||||
"maxMatchesPerEvent": 120,
|
||||
"averageDeliveriesPerEvent": 400.008,
|
||||
"totalDeliveries": 4000080,
|
||||
"meanMs": 138.73866,
|
||||
"p95Ms": 147.71738000000002,
|
||||
"maxMs": 149.1124,
|
||||
"meanThroughputPerSecond": 28916602.921385907,
|
||||
"minThroughputPerSecond": 26825938.017227273,
|
||||
"maxAllocatedMb": 0,
|
||||
"thresholdMs": 900,
|
||||
"minThroughputThresholdPerSecond": 45000,
|
||||
"maxAllocatedThresholdMb": 256,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,39 +1,39 @@
|
||||
# HELP notify_dispatch_bench_duration_ms Notify dispatch benchmark duration metrics (milliseconds).
|
||||
# TYPE notify_dispatch_bench_duration_ms gauge
|
||||
# HELP notify_dispatch_bench_throughput_per_sec Notify dispatch benchmark throughput metrics (deliveries per second).
|
||||
# TYPE notify_dispatch_bench_throughput_per_sec gauge
|
||||
# HELP notify_dispatch_bench_allocation_mb Notify dispatch benchmark allocation metrics (megabytes).
|
||||
# TYPE notify_dispatch_bench_allocation_mb gauge
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_05"} 3.4149799999999999
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_05"} 4.1721599999999999
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_05"} 4.3038999999999996
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_05"} 400
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_05"} 6053938.5171789303
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_05"} 4646948.1168242758
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_05"} 15000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_05"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_05"} 128
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_05"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_05"} 0
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_20"} 24.227399999999999
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_20"} 25.85172
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_20"} 26.052600000000002
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_20"} 650
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_20"} 27923335.585545264
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_20"} 25909122.314087655
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_20"} 30000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_20"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_20"} 192
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_20"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_20"} 0
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_40"} 138.73866000000001
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_40"} 147.71738000000002
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_40"} 149.11240000000001
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_40"} 900
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_40"} 28916602.921385907
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_40"} 26825938.017227273
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_40"} 45000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_40"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_40"} 256
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_40"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_40"} 0
|
||||
# HELP notify_dispatch_bench_duration_ms Notify dispatch benchmark duration metrics (milliseconds).
|
||||
# TYPE notify_dispatch_bench_duration_ms gauge
|
||||
# HELP notify_dispatch_bench_throughput_per_sec Notify dispatch benchmark throughput metrics (deliveries per second).
|
||||
# TYPE notify_dispatch_bench_throughput_per_sec gauge
|
||||
# HELP notify_dispatch_bench_allocation_mb Notify dispatch benchmark allocation metrics (megabytes).
|
||||
# TYPE notify_dispatch_bench_allocation_mb gauge
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_05"} 3.4149799999999999
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_05"} 4.1721599999999999
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_05"} 4.3038999999999996
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_05"} 400
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_05"} 6053938.5171789303
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_05"} 4646948.1168242758
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_05"} 15000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_05"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_05"} 128
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_05"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_05"} 0
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_20"} 24.227399999999999
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_20"} 25.85172
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_20"} 26.052600000000002
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_20"} 650
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_20"} 27923335.585545264
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_20"} 25909122.314087655
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_20"} 30000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_20"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_20"} 192
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_20"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_20"} 0
|
||||
notify_dispatch_bench_mean_ms{scenario="notify_dispatch_density_40"} 138.73866000000001
|
||||
notify_dispatch_bench_p95_ms{scenario="notify_dispatch_density_40"} 147.71738000000002
|
||||
notify_dispatch_bench_max_ms{scenario="notify_dispatch_density_40"} 149.11240000000001
|
||||
notify_dispatch_bench_threshold_ms{scenario="notify_dispatch_density_40"} 900
|
||||
notify_dispatch_bench_mean_throughput_per_sec{scenario="notify_dispatch_density_40"} 28916602.921385907
|
||||
notify_dispatch_bench_min_throughput_per_sec{scenario="notify_dispatch_density_40"} 26825938.017227273
|
||||
notify_dispatch_bench_min_throughput_threshold_per_sec{scenario="notify_dispatch_density_40"} 45000
|
||||
notify_dispatch_bench_max_allocated_mb{scenario="notify_dispatch_density_40"} 0
|
||||
notify_dispatch_bench_max_allocated_threshold_mb{scenario="notify_dispatch_density_40"} 256
|
||||
notify_dispatch_bench_regression_limit{scenario="notify_dispatch_density_40"} 1.1499999999999999
|
||||
notify_dispatch_bench_regression_breached{scenario="notify_dispatch_density_40"} 0
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
scenario,iterations,findings,mean_ms,p95_ms,max_ms,mean_throughput_per_sec,min_throughput_per_sec,max_allocated_mb
|
||||
policy_eval_baseline,3,1000000,1109.3542,1257.7493,1280.1721,912094.5581,781144.9726,563.6901
|
||||
scenario,iterations,findings,mean_ms,p95_ms,max_ms,mean_throughput_per_sec,min_throughput_per_sec,max_allocated_mb
|
||||
policy_eval_baseline,3,1000000,1109.3542,1257.7493,1280.1721,912094.5581,781144.9726,563.6901
|
||||
|
||||
|
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"schemaVersion": "policy-bench/1.0",
|
||||
"capturedAt": "2025-10-26T19:57:27.4363234+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "policy_eval_baseline",
|
||||
"label": "Policy evaluation (100k components, 1M findings)",
|
||||
"iterations": 3,
|
||||
"findingCount": 1000000,
|
||||
"meanMs": 1109.3542333333335,
|
||||
"p95Ms": 1257.74929,
|
||||
"maxMs": 1280.1721,
|
||||
"meanThroughputPerSecond": 912094.5580512757,
|
||||
"minThroughputPerSecond": 781144.9726173537,
|
||||
"maxAllocatedMb": 563.6900634765625,
|
||||
"thresholdMs": 20000,
|
||||
"minThroughputThresholdPerSecond": 60000,
|
||||
"maxAllocatedThresholdMb": 900,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"schemaVersion": "policy-bench/1.0",
|
||||
"capturedAt": "2025-10-26T19:57:27.4363234+00:00",
|
||||
"scenarios": [
|
||||
{
|
||||
"id": "policy_eval_baseline",
|
||||
"label": "Policy evaluation (100k components, 1M findings)",
|
||||
"iterations": 3,
|
||||
"findingCount": 1000000,
|
||||
"meanMs": 1109.3542333333335,
|
||||
"p95Ms": 1257.74929,
|
||||
"maxMs": 1280.1721,
|
||||
"meanThroughputPerSecond": 912094.5580512757,
|
||||
"minThroughputPerSecond": 781144.9726173537,
|
||||
"maxAllocatedMb": 563.6900634765625,
|
||||
"thresholdMs": 20000,
|
||||
"minThroughputThresholdPerSecond": 60000,
|
||||
"maxAllocatedThresholdMb": 900,
|
||||
"regression": {
|
||||
"limit": 1.15,
|
||||
"breached": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
# HELP policy_engine_bench_duration_ms Policy Engine benchmark duration metrics (milliseconds).
|
||||
# TYPE policy_engine_bench_duration_ms gauge
|
||||
# HELP policy_engine_bench_throughput_per_sec Policy Engine benchmark throughput metrics (findings per second).
|
||||
# TYPE policy_engine_bench_throughput_per_sec gauge
|
||||
# HELP policy_engine_bench_allocation_mb Policy Engine benchmark allocation metrics (megabytes).
|
||||
# TYPE policy_engine_bench_allocation_mb gauge
|
||||
policy_engine_bench_mean_ms{scenario="policy_eval_baseline"} 1109.3542333333335
|
||||
policy_engine_bench_p95_ms{scenario="policy_eval_baseline"} 1257.74929
|
||||
policy_engine_bench_max_ms{scenario="policy_eval_baseline"} 1280.1721
|
||||
policy_engine_bench_threshold_ms{scenario="policy_eval_baseline"} 20000
|
||||
policy_engine_bench_mean_throughput_per_sec{scenario="policy_eval_baseline"} 912094.55805127567
|
||||
policy_engine_bench_min_throughput_per_sec{scenario="policy_eval_baseline"} 781144.97261735366
|
||||
policy_engine_bench_min_throughput_threshold_per_sec{scenario="policy_eval_baseline"} 60000
|
||||
policy_engine_bench_max_allocated_mb{scenario="policy_eval_baseline"} 563.6900634765625
|
||||
policy_engine_bench_max_allocated_threshold_mb{scenario="policy_eval_baseline"} 900
|
||||
policy_engine_bench_regression_limit{scenario="policy_eval_baseline"} 1.1499999999999999
|
||||
policy_engine_bench_regression_breached{scenario="policy_eval_baseline"} 0
|
||||
# HELP policy_engine_bench_duration_ms Policy Engine benchmark duration metrics (milliseconds).
|
||||
# TYPE policy_engine_bench_duration_ms gauge
|
||||
# HELP policy_engine_bench_throughput_per_sec Policy Engine benchmark throughput metrics (findings per second).
|
||||
# TYPE policy_engine_bench_throughput_per_sec gauge
|
||||
# HELP policy_engine_bench_allocation_mb Policy Engine benchmark allocation metrics (megabytes).
|
||||
# TYPE policy_engine_bench_allocation_mb gauge
|
||||
policy_engine_bench_mean_ms{scenario="policy_eval_baseline"} 1109.3542333333335
|
||||
policy_engine_bench_p95_ms{scenario="policy_eval_baseline"} 1257.74929
|
||||
policy_engine_bench_max_ms{scenario="policy_eval_baseline"} 1280.1721
|
||||
policy_engine_bench_threshold_ms{scenario="policy_eval_baseline"} 20000
|
||||
policy_engine_bench_mean_throughput_per_sec{scenario="policy_eval_baseline"} 912094.55805127567
|
||||
policy_engine_bench_min_throughput_per_sec{scenario="policy_eval_baseline"} 781144.97261735366
|
||||
policy_engine_bench_min_throughput_threshold_per_sec{scenario="policy_eval_baseline"} 60000
|
||||
policy_engine_bench_max_allocated_mb{scenario="policy_eval_baseline"} 563.6900634765625
|
||||
policy_engine_bench_max_allocated_threshold_mb{scenario="policy_eval_baseline"} 900
|
||||
policy_engine_bench_regression_limit{scenario="policy_eval_baseline"} 1.1499999999999999
|
||||
policy_engine_bench_regression_breached{scenario="policy_eval_baseline"} 0
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
[
|
||||
{
|
||||
"ScenarioName": "baseline",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/openssl@1.1.1w": "Blocked",
|
||||
"library:pkg/internal-runtime@1.0.0": "Warned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"ScenarioName": "internal-only",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/internal-app@2.0.0": "RequiresVex",
|
||||
"library:pkg/kev-component@3.1.4": "RequiresVex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"ScenarioName": "serverless",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/aws-lambda@1.0.0": "Blocked",
|
||||
"image:sha256:untrusted-base": "Blocked"
|
||||
}
|
||||
}
|
||||
[
|
||||
{
|
||||
"ScenarioName": "baseline",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/openssl@1.1.1w": "Blocked",
|
||||
"library:pkg/internal-runtime@1.0.0": "Warned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"ScenarioName": "internal-only",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/internal-app@2.0.0": "RequiresVex",
|
||||
"library:pkg/kev-component@3.1.4": "RequiresVex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"ScenarioName": "serverless",
|
||||
"Success": true,
|
||||
"ChangedCount": 2,
|
||||
"Failures": [],
|
||||
"ActualStatuses": {
|
||||
"library:pkg/aws-lambda@1.0.0": "Blocked",
|
||||
"image:sha256:untrusted-base": "Blocked"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using CycloneDX.Models;
|
||||
|
||||
Console.WriteLine(string.Join(", ", Enum.GetNames(typeof(Component.Classification))));
|
||||
using System;
|
||||
using CycloneDX.Models;
|
||||
|
||||
Console.WriteLine(string.Join(", ", Enum.GetNames(typeof(Component.Classification))));
|
||||
|
||||
Reference in New Issue
Block a user