-
Notifications
You must be signed in to change notification settings - Fork 1
FAQ
Frequently asked questions about Kronikol.
Do I need to change production code?
No — most extensions use DI decoration (DecorateAll<T>), DelegatingHandlers, or DiagnosticSource listeners. Tracking is added entirely in your test project's ConfigureTestServices. A few extensions offer optional one-token changes (e.g. .BuildTracked() for Kafka) but these are no-ops outside test context.
Why is my dependency showing as "Unknown"?
Test identity isn't propagating to the thread running the dependency call. This is common with background threads, change feed processors, and hosted services. See Background Thread Correlation for the resolution chain (HTTP headers → delegate → TestIdentityScope.Current → GlobalFallback) and how to wire each level.
What's the difference between MessageTracker and TestTrackingMessageHandler?
TestTrackingMessageHandler is a DelegatingHandler for HTTP pipelines — it intercepts HttpClient calls. MessageTracker is for non-HTTP messaging (Service Bus, Kafka, EventHubs, etc.) and provides TrackSendEvent() / TrackConsumeEvent() / TrackSendMessage() methods. See Event & Message Tracking for a detailed comparison.
Why is my diagram empty?
The most common cause is forgetting to enqueue the test context. In your fixture's DisposeAsync():
DiagrammedTestRun.TestContexts.Enqueue(TestContext.Current);Run with DiagnosticMode = true for a detailed breakdown. See Diagnostics and Debugging.
My diagrams are too wide / have massive token strings
See Filtering and Redacting Diagram Content — My Diagrams Are Too Wide. The quickest fix is RequestResponseLogger.MaxContentLength = 2000; in test setup.
Can I use this without a PlantUML server?
Yes — two options:
- Browser-side rendering (default): Uses a self-hosted PlantUML JS library (TeaVM-compiled) that runs entirely in the browser. No server needed. See PlantUML Browser Rendering.
- IKVM local rendering: Runs PlantUML in-process via IKVM (Java-to-.NET bridge). No network calls. See Integration PlantUML IKVM.
How do I track Change Feed processing in parallel tests?
Use the TestCorrelationStore system (v2.36.0+). The CosmosDB tracking extension auto-populates correlations on write, and ChangeFeedCorrelation.Wrap<T>() resolves them at processing time. No production code changes needed. See Parallel-Safe Background Correlation.
My consumer is tracked but downstream HTTP calls show as "Unknown"
This usually means a decoupled processing pattern — the consumer thread has AsyncLocal set but passes work through a Channel<T> or queue to a processing thread that doesn't. Wrap the processing side with ProcessingCorrelation.Wrap<T>(). See Parallel-Safe Background Correlation#setup-guide-decoupled-kafkaservicebus-consumer.
What's the difference between GlobalFallback and TestCorrelationStore?
GlobalFallback is a single process-wide static — only safe for serial execution. TestCorrelationStore is a concurrent dictionary keyed by work-item, so each test's operations are attributed correctly even under parallel execution. Use TestCorrelationStore for new code; GlobalFallback for legacy serial-only fixtures. See Parallel-Safe Background Correlation#comparison-table.
How does test identity propagation work?
Four-level resolution chain, checked in order:
- HTTP request headers (
test-tracking-current-test-name/test-tracking-current-test-id) — propagated byTestTrackingMessageHandler -
CurrentTestInfoFetcherdelegate — set on options, framework-specific -
TestIdentityScope.Current—AsyncLocalambient scope (for background threads) -
TestIdentityScope.GlobalFallback— static fallback (for pre-existing threads)
See Background Thread Correlation for setup examples.
How do I see what's being tracked at runtime?
Enable diagnostic mode:
new ReportConfigurationOptions { DiagnosticMode = true }This generates a DiagnosticReport.html alongside your test report showing all registered tracking components, unmatched client names, unknown entries, and HttpContextAccessor status. See Diagnostics and Debugging.
- How-To Guides — Step-by-step task guides
- Quick Start (xUnit) — Get started in 5 minutes
- Diagnostics and Debugging — Troubleshooting empty reports and missing entries
Getting Started
Common Tasks
Integration Guides
- Integration xUnit3
- Integration xUnit2
- Integration NUnit
- Integration MSTest
- Integration TUnit
- Integration BDDfy xUnit3
- Integration LightBDD xUnit2
- Integration LightBDD xUnit3
- Integration LightBDD TUnit
- Integration ReqNRoll xUnit2
- Integration ReqNRoll xUnit3
- Integration ReqNRoll TUnit
Extensions
- Integration AtlasDataApi Extension
- Integration BigQuery Extension
- Integration Bigtable Extension
- Integration BlobStorage Extension
- Integration ClickHouse Extension
- Integration CloudStorage Extension
- Integration CosmosDB Extension
- Integration Dapper Extension
- Integration DynamoDB Extension
- Integration EF Core Relational Extension
- Integration Elasticsearch Extension
- Integration EventBridge Extension
- Integration EventHubs Extension
- Integration Grpc Extension
- Integration Kafka Extension
- Integration MassTransit Extension
- Integration MongoDB Extension
- Integration MySqlConnector Extension
- Integration Npgsql Extension
- Integration Oracle Extension
- Integration PubSub Extension
- Integration Redis Extension
- Integration S3 Extension
- Integration ServiceBus Extension
- Integration SNS Extension
- Integration Spanner Extension
- Integration SqlClient Extension
- Integration Sqlite Extension
- Integration SQS Extension
- Integration StorageQueues Extension
- Integration OpenTelemetry Extension
- Integration DispatchProxy Extension
- Integration MediatR Extension
- Integration PlantUML IKVM
Configuration
- Tracking Dependencies
- Tracking Custom Dependencies
- HTTP Tracking Setup
- Report Configuration
- Diagram Customisation
- Phase-Aware Tracking
- Content Formatting
- PlantUML Server Configuration
Features
- Generated Reports
- Search Syntax
- Component Diagrams
- PlantUML Browser Rendering
- Inline SVG Rendering
- Internal Flow Tracking
- Tags and Attributes
- Excluding Requests
- Excluded Headers
- Multi-Host Test Architectures
- Event-Driven Architecture Testing
- Service Bus Tracking Patterns
- Background Thread Correlation
- Parallel-Safe Background Correlation
- Event & Message Tracking
- Assertion Tracking
- Step Tracking
- Tabular Attributes
- Large Response and Diagram Handling
- Diagnostics and Debugging
- CI Summary Integration
- CI Artifact Upload
- Merging Parallel Reports
Reference