-
Notifications
You must be signed in to change notification settings - Fork 1
Integration Npgsql Extension
The TestTrackingDiagrams.Extensions.Npgsql package adds PostgreSQL operation tracking to your test diagrams via Npgsql's built-in DiagnosticSource instrumentation. No code changes required in production — just install and configure in your test project.
Zero production changes. Npgsql emits diagnostic events automatically. This extension subscribes to them globally, so every
NpgsqlConnectionin the process is tracked without any wrapping or decoration.
Npgsql publishes DiagnosticSource events under the listener name "Npgsql". The NpgsqlDiagnosticTracker subscribes to these events and correlates BeforeExecuteCommand / AfterExecuteCommand pairs using ExecutionId (a GUID extracted via reflection). Each pair is classified by UnifiedSqlClassifier and logged to RequestResponseLogger.
Because it logs to the same RequestResponseLogger as the standard TestTrackingMessageHandler, SQL operations appear alongside your HTTP API calls in the same sequence diagram.
dotnet add package TestTrackingDiagrams.Extensions.Npgsql// In your test WebApplicationFactory ConfigureTestServices:
services.AddPostgreSqlTestTracking(options =>
{
options.Verbosity = SqlTrackingVerbosityLevel.Detailed;
// options.LogSqlText = true;
// options.LogParameters = true;
});// In your test setup (e.g. constructor or OneTimeSetUp):
NpgsqlTestTracking.EnsureTracking(new NpgsqlTrackingOptions
{
Verbosity = SqlTrackingVerbosityLevel.Detailed
});
// In teardown:
NpgsqlTestTracking.Reset();| Property | Default | Description |
|---|---|---|
ServiceName |
"PostgreSQL" |
The participant name shown in diagrams |
CallerName |
null |
The caller participant (defaults to SUT name) |
Verbosity |
Detailed |
Raw, Detailed, or Summarised
|
LogSqlText |
false |
Include full SQL text in Detailed mode |
LogParameters |
false |
Include parameter values |
DependencyCategory |
"PostgreSQL" |
Controls participant shape/colour |
UriScheme |
"postgresql" |
URI scheme in diagram URIs |
ExcludedOperations |
[] |
Operations to exclude from tracking |
TrackDuringSetup |
true |
Track during test setup phase |
TrackDuringAction |
true |
Track during test action phase |
All options inherit from SqlTrackingOptionsBase in the core package.
| Level | Arrow label | URI |
|---|---|---|
| Raw | Full SQL text | postgresql://host/database |
| Detailed | SELECT FROM Users |
postgresql://host/database/Users |
| Summarised | SELECT |
postgresql:///database/Users |
Uses UnifiedSqlClassifier — supports SELECT, INSERT, UPDATE, DELETE, MERGE, UPSERT (ON CONFLICT DO UPDATE), stored procedures (EXEC/CALL), DDL (CREATE/ALTER/DROP TABLE), TRUNCATE, and transactions. Multi-dialect: handles PostgreSQL double-quotes, brackets, backticks, CTEs, SET prefix stripping, and Spanner hints.
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