Commit Graph

18 Commits

Author SHA1 Message Date
Joseph Doherty
a9967d3077 test(parity): port consumer pull queue & filter tests (T14) + DB update
Port 48 Go parity tests from TestJetStreamConsumerPull* and related
functions in jetstream_consumer_test.go to unit-level .NET tests.

Enhancements to PullConsumerEngine:
- MaxBytes enforcement in FetchAsync loop (stops delivery when budget exceeded)
- PullRequestWaitQueue with priority-ordered stable enqueue and popAndRequeue
  round-robin semantics within same-priority groups
- PullWaitingRequest record with Priority, RemainingBatch, Reply fields

Enhancements to ConsumerConfig:
- MaxWaiting, MaxRequestBatch, MaxRequestMaxBytes, MaxRequestExpiresMs

New tests (51 total in ConsumerPullQueueTests.cs):
- Pull MaxAckPending enforcement, FIFO delivery, one-shot semantics
- Pull timeout (ExpiresMs), NoWait behavior, MaxBytes byte budget
- Three-filter and multi-filter subject filtering, filter update
- WaitQueue priority ordering and popAndRequeue round-robin
- Pending count tracking, ack floor advancement, redelivery
- DeliverPolicy Last/LastPerSubject/ByStartTime with filters
- ConsumerIsFiltered detection, overlapping subject filters

DB: 37 Go tests mapped → ConsumerPullQueueTests.cs (1,386 total mapped)
2026-02-24 19:53:25 -05:00
Joseph Doherty
b4ad71012f test(parity): port FileStore recovery & compaction tests (T1) + DB update
Ports 34 Go FileStore tests from filestore_test.go to
FileStoreRecovery2Tests.cs (31 pass, 4 skipped). Tests cover block
recovery, compaction, PSIM indexing, skip-msg handling, TTL expiry,
corrupt index/state detection, and read-only permission checks.

Updates docs/test_parity.db with mapped/skipped status for all 34 tests.
2026-02-24 19:39:40 -05:00
Joseph Doherty
e9b8855dce chore: mark ~211 Go tests as not_applicable in parity DB
norace (126), platform-specific (23), Go-specific (40), benchmarks (22)
2026-02-24 19:22:04 -05:00
Joseph Doherty
365cbb80ae test(parity): port 168 RAFT and JetStream cluster Go tests + DB update (B10+B11)
- RaftGoParityTests.cs: 86 tests covering elections, log replication, snapshots,
  membership changes, peer tracking (Go ref: raft_test.go)
- JetStreamClusterGoParityTests.cs: 66 tests covering stream/consumer CRUD,
  placement, leader failover, meta group (Go ref: jetstream_cluster_*_test.go)
- StreamReplicaGroupApplyTests.cs: 16 tests for per-stream RAFT apply logic
- test_parity.db: 1,241 mapped Go tests (up from 1,148, +93 new mappings)
2026-02-24 17:29:48 -05:00
Joseph Doherty
579063dabd test(parity): port 373 Go tests across protocol and services subsystems (C11+E15)
Protocol (C11):
- ClientProtocolGoParityTests: 45 tests (header stripping, tracing, limits, NRG)
- ConsumerGoParityTests: 60 tests (filters, actions, pinned, priority groups)
- JetStreamGoParityTests: 38 tests (stream CRUD, purge, mirror, retention)

Services (E15):
- MqttGoParityTests: 65 tests (packet parsing, QoS, retained, sessions)
- WsGoParityTests: 58 tests (compression, JWT auth, frame encoding)
- EventGoParityTests: 56 tests (event DTOs, serialization, health checks)
- AccountGoParityTests: 28 tests (route mapping, system account, limits)
- MonitorGoParityTests: 23 tests (connz filtering, pagination, sort)

DB: 1,148/2,937 mapped (39.1%), up from 1,012 (34.5%)
2026-02-24 16:52:15 -05:00
Joseph Doherty
94878d3dcc feat(monitoring+events): add connz filtering, event payloads, and message trace context (E12+E13+E14)
- Add ConnzHandler with sorting, filtering, pagination, CID lookup, and closed connection ring buffer
- Add full Go events.go parity types (ConnectEventMsg, DisconnectEventMsg, ServerStatsMsg, etc.)
- Add MessageTraceContext for per-message trace propagation with header parsing
- 74 new tests (17 ConnzFilter + 16 EventPayload + 41 MessageTraceContext)
2026-02-24 16:17:21 -05:00
Joseph Doherty
02531dda58 feat(config+ws): add TLS cert reload, WS compression negotiation, WS JWT auth (E9+E10+E11)
E9: TLS Certificate Reload
- Add TlsCertificateProvider with Interlocked-swappable cert field
- New connections get current cert, existing connections keep theirs
- ConfigReloader.ReloadTlsCertificate rebuilds SslServerAuthenticationOptions
- NatsServer.ApplyConfigChanges triggers TLS reload on TLS config changes
- 11 tests covering cert swap, versioning, thread safety, config diff

E10: WebSocket Compression Negotiation (RFC 7692)
- Add WsDeflateNegotiator to parse Sec-WebSocket-Extensions parameters
- Parse server_no_context_takeover, client_no_context_takeover,
  server_max_window_bits, client_max_window_bits
- WsDeflateParams record struct with ToResponseHeaderValue()
- NATS always enforces no_context_takeover (matching Go server)
- WsUpgrade returns negotiated WsDeflateParams in upgrade result
- 22 tests covering parameter parsing, clamping, response headers

E11: WebSocket JWT Authentication
- Extract JWT from Authorization header (Bearer token), cookie, or ?jwt= query param
- Priority: Authorization header > cookie > query parameter
- WsUpgrade.TryUpgradeAsync now parses query string from request URI
- Add FailUnauthorizedAsync for 401 responses
- 24 tests covering all JWT extraction sources and priority ordering
2026-02-24 16:03:46 -05:00
Joseph Doherty
c6ecbbfbcc feat(config): add system account, SIGHUP reload, and auth change propagation (E6+E7+E8)
E6: Add IsSystemAccount property to Account, mark $SYS account as system,
add IsSystemSubject/IsSubscriptionAllowed/GetSubListForSubject helpers to
route $SYS.> subjects to the system account's SubList and block non-system
accounts from subscribing.

E7: Add ConfigReloader.ReloadAsync and ApplyDiff for structured async reload,
add ConfigReloadResult/ConfigApplyResult types. SIGHUP handler already wired
via PosixSignalRegistration in HandleSignals.

E8: Add PropagateAuthChanges to re-evaluate connected clients after auth
config reload, disconnecting clients whose credentials no longer pass
authentication with -ERR 'Authorization Violation'.
2026-02-24 15:48:48 -05:00
Joseph Doherty
18acd6f4e2 feat(jetstream): add mirror sync loop and source coordination with filtering (C9+C10) 2026-02-24 15:41:35 -05:00
Joseph Doherty
6ad8ab69bf docs: update test_parity.db with C7+C8, D4+D5, E4+E5 Go parity mappings 2026-02-24 15:35:55 -05:00
Joseph Doherty
1da1849ed6 docs: update test_parity.db with E4+E5 Go parity mappings 2026-02-24 15:31:48 -05:00
Joseph Doherty
d259a2d03e docs: update test_parity.db with C5+C6, D2+D3, E2+E3 Go parity mappings
- Consumer priority groups and pull timeout/filter mappings
- Route pool accounting and S2 compression mappings
- MQTT session persistence, QoS 2, and retained message mappings
- Total mapped: 924 → 938 of 2,937
2026-02-24 15:14:42 -05:00
Joseph Doherty
21d10582b3 docs: update test_parity.db with C3+C4, D1, E1 Go parity mappings
- 10 consumer delivery/redelivery mappings (PushConsumer, RedeliveryTracker)
- 7 gateway interest-only mode mappings (GatewayInterestTracker)
- 10 MQTT binary parser mappings (MqttBinaryDecoder)
- Total mapped: 909 → 924 of 2,937
2026-02-24 15:04:22 -05:00
Joseph Doherty
a201e8019a test(config): port Go opts_test.go config parsing tests
Adds OptsGoParityTests.cs with 49 tests porting 15 unmapped Go test
functions from server/opts_test.go: random port semantics, listen port
config variants, multiple users, authorization block parsing, options
defaults (TestDefaultSentinel), write_deadline parsing, path handling,
variable/env-var substitution chains, and unknown field tolerance.
2026-02-24 14:54:00 -05:00
Joseph Doherty
adee23f853 docs: update test_parity.db with AckProcessor Go parity mappings 2026-02-24 14:52:16 -05:00
Joseph Doherty
4092e15ace docs: update test_parity.db with FileStore Go parity mappings
Map 36 additional Go tests from filestore_test.go to .NET equivalents
in FileStoreGoParityTests.cs. FileStore mapped: 73 -> 109. Total: 893/2937.
2026-02-24 14:44:09 -05:00
Joseph Doherty
0a9db430d5 docs: add test_mappings table with FK relationships
Many-to-many mapping between go_tests and dotnet_tests via
test_mappings table. 988 mappings linking 857 Go tests to
690 .NET tests. Confidence levels: exact, comment_ref, keyword,
manual, auto.
2026-02-24 10:14:58 -05:00
Joseph Doherty
bff24d29c7 docs: add SQLite parity tracking database
test_parity.db contains go_tests (2,937 rows) and dotnet_tests
(2,966 rows) tables for querying Go-to-.NET test mapping across
Claude sessions. 857 mapped, 2,080 unmapped.
2026-02-24 10:12:42 -05:00