Coordinator Test Report
Expandable suites, scenario groups, individual test results, and failure detail in one static report.
Suites
Click a suite, scenario group, or test case to inspect nested results.
Coordinator Acl Audit Http Integration Test7 total 7 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorAclAuditHttpIntegrationTest · 1.407s
Passed7 total 7 passed
passed acl allows write role to read monitoring and mutate admin endpoints() 0.954s
passed acl keeps legacy admin and monitor roles as aliases() 0.015s
passed acl allows read role monitoring reads but rejects admin mutations() 0.008s
passed acl allows read role on read only stream endpoints() 0.058s
passed acl allows member heartbeat but rejects monitoring reads() 0.302s
passed audit log captures delete group mutation() 0.029s
passed audit log captures successful admin scale request() 0.030s
Coordinator Admin Exception Http Integration Test3 total 3 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorAdminExceptionHttpIntegrationTest · 0.099s
Passed3 total 3 passed
passed create stream returns conflict when Redis shard key already exists for prefix() 0.060s
passed consumer concurrency is not exposed as an admin endpoint() 0.014s
passed admin create stream validation errors use coordinator error response() 0.023s
Coordinator Audit Log Sink Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorAuditLogSinkTest · 0.763s
Passed1 total 1 passed
passed redis audit sink appends group-scoped event and trims retained entries() 0.763s
Coordinator Authenticated Member Http Integration Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorAuthenticatedMemberHttpIntegrationTest · 0.069s
Passed1 total 1 passed
passed member api requires basic auth when enabled() 0.069s
Coordinator Consumption Progress Test2 total 2 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorConsumptionProgressTest · 0.009s
Passed2 total 2 passed
passed coordinator fences progress reports for unassigned shards() 0.005s
passed coordinator stores consumer reported shard progress() 0.003s
Coordinator Docker Configuration Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorDockerConfigurationTest · 0.006s
Passed1 total 1 passed
passed docker compose coordinator settings bind to coordinator properties() 0.006s
Graceful leave2 total 2 passed
Graceful leave · 0.009s
Passed2 total 2 passed
passed last member leave makes group empty and clears targets() 0.004s
passed leaving member releases targets and survivor owns every shard() 0.004s
Member expired2 total 2 passed
Member expired · 0.006s
Passed2 total 2 passed
passed expired member rejoin ignores stale ownership report() 0.003s
passed expired owner is reassigned and stale heartbeat is fenced() 0.002s
Member join3 total 3 passed
Member join · 0.010s
Passed3 total 3 passed
passed first member receives every initial shard() 0.002s
passed new member waits for previous owner revoke before receiving moved shard() 0.003s
passed three member join creates balanced target assignment without duplicate owners() 0.003s
New stream topic creation3 total 3 passed
New stream topic creation · 0.008s
Passed3 total 3 passed
passed same shard count scale does not provision a new stream topic version() 0.003s
passed group creation provisions initial stream topic shards() 0.002s
passed upscaling provisions next stream topic shards after preparing migration() 0.002s
Partition upscaling2 total 2 passed
Partition upscaling · 0.009s
Passed2 total 2 passed
passed scale updates shard count and assigns target shards() 0.004s
passed scale updates producer routing metadata() 0.004s
Coordinator Http Integration Test15 total 15 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorHttpIntegrationTest · 1.351s
Passed15 total 15 passed
passed login rejects invalid credentials() 0.022s
passed http api creates group and accepts heartbeat() 0.065s
passed monitoring console is exposed without triggering api basic auth() 0.028s
passed basic auth scheme is parsed case insensitively() 0.010s
passed login issues seven day bearer token for coordinator api calls() 0.051s
passed http api handles graceful leave and monitoring shows empty group() 0.023s
passed monitoring exposes coordination version compatibility lifecycle() 0.039s
passed http api scales group and refreshes producer routing metadata() 0.040s
passed admin api validates create group body() 0.017s
passed openapi docs and swagger ui are exposed for interactive tests() 0.958s
passed monitoring session verifies credentials without reading coordinator state() 0.008s
passed http api returns producer routing metadata() 0.010s
passed member api allows heartbeat without auth by default() 0.011s
passed http stream scale to zero updates every registered consumer group routing() 0.034s
passed admin api requires basic auth() 0.006s
Coordinator Metrics Test8 total 8 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorMetricsTest · 0.030s
Passed8 total 8 passed
passed coordinator records API request latency metrics() 0.016s
passed coordinator records producer routing metrics() 0.003s
passed coordinator exports unknown Redis lag as zero in Prometheus gauge() 0.002s
passed coordinator exports stream shard offset and lag metrics() 0.001s
passed coordinator records state conflict retry metrics() 0.001s
passed coordinator records heartbeat group state and expiry metrics() 0.002s
passed coordinator records scale migration and rebalance metrics() 0.002s
passed coordinator exports consumer shard progress metrics() 0.003s
Coordinator Open Api Operation Id Contract Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorOpenApiOperationIdContractTest · 0.014s
Passed1 total 1 passed
passed openapi operation IDs and controller annotations stay in sync() 0.014s
Coordinator Protocol Defaults Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorProtocolDefaultsTest · 0.000s
Passed1 total 1 passed
passed coordinator defaults come from shared coordination protocol() 0.000s
Coordinator Provisioning Failure Integration Test4 total 4 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorProvisioningFailureIntegrationTest · 0.075s
Passed4 total 4 passed
passed mocked losing create race does not provision rejected shard plan() 0.067s
passed mocked provisioning failure during create does not publish group metadata() 0.002s
passed mocked provisioning failure during scale keeps retryable preparing migration metadata() 0.002s
passed mocked save conflict during scale does not provision until preparing state is committed() 0.003s
Coordinator Rate Limit Http Integration Test2 total 2 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorRateLimitHttpIntegrationTest · 0.065s
Passed2 total 2 passed
passed rate limit does not block monitoring reads or member heartbeats() 0.050s
passed rate limit rejects repeated admin mutations for same caller and group() 0.013s
Assignment algorithm scenarios1 total 1 passed
Assignment algorithm scenarios · 0.014s
Passed1 total 1 passed
passed redistribution keeps survivor sticky shards while balancing expired owner shards() 0.014s
Heartbeat reconciliation component scenarios2 total 2 passed
Heartbeat reconciliation component scenarios · 0.006s
Passed2 total 2 passed
passed new member receives pending shards until previous owner reports released ownership() 0.003s
passed one second coordinator ticks enter rebalancing when a silent member lease expires() 0.002s
Member expiration rebalance workflow1 total 1 passed
Member expiration rebalance workflow · 0.012s
Passed1 total 1 passed
passed coordinator tick expires silent member and survivors converge through heartbeat responses() 0.012s
Coordinator Redis Commands Test2 total 2 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorRedisCommandsTest · 0.799s
Passed2 total 2 passed
passed memory usage routes stream key as the cluster key() 0.794s
passed cluster slot owners resolve stream slots to master nodes() 0.004s
Coordinator Service Test82 total 82 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorServiceTest · 0.298s
Passed82 total 82 passed
passed grafana shard rows expose produced and consumed rates after repeated observations() 0.015s
passed grafana group rows aggregate produced and consumed rates() 0.004s
passed health degrades when redis is required and unavailable() 0.015s
passed rebalance timeout fences stuck owner() 0.003s
passed new logical members rebalance shards by member count() 0.001s
passed health refreshes redis status asynchronously and reuses cache within configured ttl() 0.013s
passed metadata sync does not wait for empty leaving members() 0.002s
passed heartbeat rejects active member epoch reset() 0.001s
passed migration scale updates shard count() 0.001s
passed grafana shard offset reads can run in parallel() 0.056s
passed terminal members are pruned after stale member retention() 0.001s
passed unknown member can rejoin with zero epoch and receive assignment() 0.001s
passed grafana messages can jump to the last page for a single shard() 0.008s
passed delete group rejects live members unless forced() 0.002s
passed admin mutations are blocked while metadata sync is in progress() 0.003s
passed monitoring current assignments ignore expired members() 0.002s
passed assignment waits for previous owner revoke() 0.002s
passed health skips redis ping when redis features are disabled() 0.004s
passed grafana shard rows expose target owners separately from acknowledged current owners() 0.001s
passed producer routing returns shard routing metadata() 0.000s
passed grafana overview scans multiple groups in parallel() 0.029s
passed migration rollback restores previous version() 0.000s
passed scale rejects negative target shard count() 0.001s
passed logical members receive even shard assignments() 0.001s
passed heartbeat rejects epoch reset after ownership was acknowledged even when report is empty() 0.001s
passed grafana message search finds a record id across every shard() 0.003s
passed membership expires owner and reassigns shards() 0.000s
passed heartbeat returns unknown member for missing group() 0.000s
passed health does not wait for a slow redis ping beyond configured timeout() 0.022s
passed expired member leave heartbeat stays fenced() 0.001s
passed metadata sync waits in revoke pending until draining member releases and peers acknowledge() 0.001s
passed monitoring live owner rows exclude expired members with stale current assignments() 0.002s
passed member split join advances assignment epochs() 0.002s
passed scale in completes through Redis drain checks after all live members expire() 0.001s
passed coordinator tick expires silent members without waiting for another heartbeat() 0.001s
passed grafana offset cache reuses shard reads across overview panels() 0.001s
passed metadata sync does not expose new target shards as immediately assigned() 0.001s
passed scale to zero waits when Redis cannot compute removed shard lag() 0.001s
passed heartbeat rejects client advanced member epoch() 0.002s
passed migration rollback rejects unknown id() 0.001s
passed heartbeat fences member that reports shard owned by another active member() 0.003s
passed grafana shard rows can scan all groups for overview dashboards() 0.001s
passed assignment first member gets readable shards() 0.001s
passed scale in with no live members waits when Redis cannot prove removed shard lag() 0.001s
passed heartbeat rejects unsupported negative member epoch() 0.001s
passed duplicate terminal revoke report after release does not fence member() 0.001s
passed grafana option APIs expose current sharded stream selections from metadata() 0.002s
passed metadata sync ignores stale revoke reports from discarded higher version() 0.001s
passed failover resumes pending revoke() 0.002s
passed rebalance timeout keeps timely owner active() 0.001s
passed scale to zero drains and removes every shard() 0.001s
passed initial join heartbeat replay returns current assignment without changing epochs() 0.000s
passed higher metadata version does not bypass fenced member state() 0.000s
passed heartbeat rejects member id mismatch() 0.000s
passed heartbeat with higher metadata version requests sync to current redis metadata() 0.001s
passed heartbeat rejects unknown member leave() 0.001s
passed grafana messages can page backward through a single shard more than once() 0.002s
passed membership rejoin restores expired member() 0.000s
passed heartbeat fences member that reports pending shard ownership before revoke completes() 0.001s
passed membership fences expired owner stale epoch() 0.001s
passed heartbeat fences stale member epoch() 0.001s
passed steady heartbeat replay does not bump metadata or assignment epochs() 0.001s
passed heartbeat accepts previously granted ownership after target changes before ack() 0.001s
passed delete group removes inactive metadata() 0.000s
passed stream scale updates every consumer group and assignments arrive on heartbeat() 0.001s
passed group creation provisions initial shard plan() 0.001s
passed create stream validates invalid stream prefix before storing metadata() 0.000s
passed grafana messages can jump to the last page across all shards() 0.001s
passed grafana offset cache is not invalidated by heartbeat metadata changes() 0.001s
passed migration scale lets live consumers revoke old assignments without fencing() 0.003s
passed scale in migration completes after removed shards are drained() 0.001s
passed membership rejoin restores gracefully left member() 0.001s
passed coordination version is accepted only inside module support range() 0.001s
passed metadata sync serializes concurrent stale revoke reports from multiple members() 0.001s
passed group rejects duplicate create() 0.000s
passed stream scale to zero updates every consumer group routing metadata() 0.001s
passed additional group create under managed prefix does not reject existing coordinator shard keys() 0.001s
passed monitoring read does not acquire critical section or write refreshed state() 0.001s
passed first group create rejects pre-existing Redis stream prefix keys() 0.001s
passed scale in waits for every Redis consumer group on removed shards to drain() 0.001s
passed membership ignores stale ownership on rejoin() 0.000s
passed scale provisions target shard plan after preparing migration state is committed() 0.000s
Coordinator State Mutex Test2 total 2 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorStateMutexTest · 0.005s
Passed2 total 2 passed
passed redis state mutex returns service unavailable when mutex cannot be acquired() 0.002s
passed redis state mutex allows only one critical section at a time() 0.003s
Coordinator State Store Test6 total 6 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CoordinatorStateStoreTest · 0.312s
Passed6 total 6 passed
passed memory store creates saves and lists groups() 0.001s
passed redis keys keep group metadata in one hash slot() 0.001s
passed memory store survives coordinator replacement() 0.001s
passed jdbc store persists group metadata and rejects stale writes() 0.276s
passed redis store rejects put if legacy group value key already exists() 0.016s
passed redis store reads and migrates legacy group value key() 0.016s
Critical Section Aspect Test2 total 2 passed
io.github.ghkdqhrbals.redisstreamcoordinator.CriticalSectionAspectTest · 0.135s
Passed2 total 2 passed
passed critical section rejects new work after coordinator starts terminating() 0.132s
passed critical section annotation applies local monitor and coordinator mutex() 0.003s
Grafana Dashboard Contract Test11 total 11 passed
io.github.ghkdqhrbals.redisstreamcoordinator.GrafanaDashboardContractTest · 0.013s
Passed11 total 11 passed
passed stream messages panel wires bounded pagination controls() 0.001s
passed stream messages tables expose resizable columns() 0.001s
passed admin console exposes shard scaling without producer stress controls() 0.001s
passed public dashboard is compatible with external sharing() 0.001s
passed stream sharding overview groups consumer groups under each stream() 0.001s
passed import dashboards expose datasource and coordinator URL inputs() 0.002s
passed api dashboard latency panels use recent window instead of sticky full-range maxima() 0.001s
passed html graphics datasource calls are grafana subpath safe() 0.001s
passed stream messages panel shows time shard offset and fields columns() 0.000s
passed overview dashboard keeps group and owner columns operator friendly() 0.000s
passed grafana gauge queries carry previous values across dashboard range() 0.003s
Redis Coordinator Metadata Schema Test5 total 5 passed
io.github.ghkdqhrbals.redisstreamcoordinator.RedisCoordinatorMetadataSchemaTest · 0.079s
Passed5 total 5 passed
passed redis metadata parser accepts current and legacy v1 metadata() 0.051s
passed redis metadata parser upgrades legacy coordinator managed shard layout metadata() 0.016s
passed redis metadata parser accepts legacy migration id fields() 0.003s
passed redis metadata parser ignores removed legacy fields() 0.003s
passed redis metadata parser rejects unsupported future schema() 0.003s
Redis Coordinator State Store Integration Test3 total 0 passed 3 skipped
io.github.ghkdqhrbals.redisstreamcoordinator.RedisCoordinatorStateStoreIntegrationTest · 0.000s
Skipped3 total 0 passed 3 skipped
skipped redis store rejects stale snapshot writes() 0.000s
skipped redis stream provisioning creates consumer groups for created and scaled shard versions() 0.000s
skipped redis store writes one metadata hash key() 0.000s
Redis Stream Coordinator Application Test1 total 1 passed
io.github.ghkdqhrbals.redisstreamcoordinator.RedisStreamCoordinatorApplicationTest · 0.004s
Passed1 total 1 passed
passed spring context loads() 0.004s
Redis Stream Provisioning Integration Test4 total 0 passed 4 skipped
io.github.ghkdqhrbals.redisstreamcoordinator.RedisStreamProvisioningIntegrationTest · 0.001s
Skipped4 total 0 passed 4 skipped
skipped stream provisioner is idempotent for existing Redis consumer groups() 0.000s
skipped coordinator provisions Redis consumer groups on create and scale() 0.001s
skipped stream provisioner retry succeeds after partial Redis failure leaves existing groups() 0.000s
skipped monitoring exposes shard offsets lag and paged stream messages() 0.000s
Redis Stream Shard Keys Test6 total 6 passed
io.github.ghkdqhrbals.redisstreamcoordinator.RedisStreamShardKeysTest · 0.004s