sqlinsight-pro/tests/SQLInsight.IntegrationTests
Søren Eggert Lundsteen Olsen 6d8a5d9ad7 Review 1.5: a Windows server that hangs no longer holds up the agent; reads are bounded and backed off
Deadlines
- Event log over RPC (MS-EVEN6): the whole read has a deadline (OperationTimeout per log);
  the token cancels the EventLogSession's operations and is checked before each
  FormatDescription, and the agent stops waiting even if the native call ignores it.
  Reported as ServerAccessProblem.Timeout ("svarede ikke i tide over hændelsesloggens
  protokol (RPC) inden for N sekunder").
- Every CIM call runs on the thread pool and is awaited with the caller's token; a call
  that ignores cancellation is abandoned and the CIM session is closed once it returns.
- Each server cycle has a deadline (new SQLInsight:Servers:CycleTimeout, default 5 min,
  1-30 min, at least 2 x OperationTimeout): the areas not read by then are "ikke målbar"
  ("Serveren svarede ikke inden for N minutter, så indsamlingen blev afbrudt; …"),
  logged once, and the slot is freed.
- Scheduled tasks: run information is read within a time budget (CycleTimeout / 3); the
  rest keep their state without the last run, and the coverage note says so.
- "Test server" has an overall deadline (WindowsServerTester, default 2 min); areas not
  done in time are reported as not answered, so the result is always stored.

Backoff and memory
- A server that does not answer (Unreachable/Timeout, or a timed-out cycle) is backed
  off 1, 2, 5, 10, then 15 minutes, reset when it answers.
- Protocol Auto: the protocol that worked (e.g. DCOM after WS-Man was refused, also for
  access denied) is tried first for an hour, then WS-Man is tried again; a server whose
  event log RPC failed is read over CIM for an hour.
- Over WS-Man with read-only WinRM rights Task Scheduler's GetInfoByName is denied: with
  Auto the tasks are read over DCOM instead (remembered for the server); with WSMan forced
  the reason says to choose Auto or DCOM. The advice "winrm configSDDL default" (broader
  WinRM rights) is gone; texts follow the grant script (-WinRM read right,
  -EnableFirewall -AgentAddress), not Remote Management Users.

Events
- Each log continues from its own mark (ServerEventSnapshot.LogReadUntil, a small additive
  field in Core): a truncated System log no longer loses the events between its last
  read event and the newest Application event.
- CIM fallback: Win32_NTLogEvent is streamed and only the oldest max per log are kept
  (memory bounded, deterministic order), consistent with the RPC read and the coverage
  text, which now names the logs that had more.

Other
- CimInstances (and method results) are mapped to SQLInsight's types and disposed at once.
- Options are clamped when bound (ServerOptions/SyntheticCheckOptions.Normalize):
  OperationTimeout 5 s-5 min, MaxEventsPerCollection 10-10000, MaxWatched 1-200,
  MaxParallelServers/Checks 1-32, retention days >= 1, ForecastHistoryDays 1-365,
  FailuresBeforeFinding/SlowRunsBeforeFinding 1-99.
- Shutdown: the timer's cancellation is caught, running cycles are awaited before the
  throttle is disposed; a cycle's time is taken when it gets its slot; a TaskCanceledException
  that is not shutdown no longer ends the service.
- Retention maintenance also runs (hourly) when SQLInsight:Servers:Enabled is false but
  synthetic checks are on.
- LocalCimTests run alone (collection without parallelization), share one warmed-up
  session, use the same 2 min operation timeout and a 5 min deadline per test, a smaller
  workload, and report timings in assertion messages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 16:02:17 +02:00
..
ActivityTests.cs Long and large transactions and long-running statements (8b, 8d) 2026-10-02 10:36:41 +02:00
AgentPipelineTests.cs Fase 4: community and local rules written as SQL 2026-09-29 10:23:01 +00:00
AgentRequestTests.cs Agent: instances from the repository, request queue, sealed passwords, AX hub opt-in 2026-10-02 13:22:41 +02:00
AgentSession.cs Integration tests: fake Axapta 3.0 (bmssa) and AX 2012 R2 databases 2026-10-02 13:54:23 +02:00
CollectorTests.cs Plan analysis test: start from an empty plan cache 2026-10-02 11:14:54 +02:00
ConfigurationPageTests.cs Configuration page with change log 2026-10-02 08:12:26 +02:00
CustomRuleIntegrationTests.cs Fase 4: community and local rules written as SQL 2026-09-29 10:23:01 +00:00
DiscoveryTests.cs Collectors: monitor only chosen databases; database discovery and permission check 2026-10-02 13:22:41 +02:00
DynamicsAxTests.cs Review 1.4: AX detection survives passing errors; revoke only what the grant gave; smaller fixes 2026-10-02 14:45:31 +02:00
DynamicsAxWebTests.cs Integration tests: fake Axapta 3.0 (bmssa) and AX 2012 R2 databases 2026-10-02 13:54:23 +02:00
ErrorLogTests.cs SQL Server error log without elevated rights (8a) 2026-10-02 10:30:41 +02:00
HighAvailabilityTests.cs Fase 2: Always On availability groups and SQL Agent jobs 2026-09-29 07:53:49 +00:00
HubApiTests.cs Fase 3: signed updates of rule packs and the application 2026-09-29 09:19:41 +00:00
HubEndToEndTests.cs Dynamics AX: notice a GRANT within minutes, one AX lookup per custom-rule run 2026-10-02 13:54:36 +02:00
HubFixture.cs Fase 3: Hub portal for vendor staff 2026-09-29 08:58:34 +00:00
HubInsightTests.cs Fase 4: experience across customers 2026-09-29 10:33:37 +00:00
HubMaintenanceTests.cs Fase 3: data processing, hub retention and deployment 2026-09-29 09:29:20 +00:00
HubPortalSupportTests.cs Hub: support case numbers, customer case API, mail, support report 2026-10-01 11:33:55 +02:00
HubPortalTests.cs Fase 3: Hub portal for vendor staff 2026-09-29 08:58:34 +00:00
HubSupportApiTests.cs Hub: support case numbers, customer case API, mail, support report 2026-10-01 11:33:55 +02:00
HubSupportEndToEndTests.cs Customers file support cases in SQLInsight Web and follow their status 2026-10-01 11:34:06 +02:00
HubSupportLogicTests.cs Hub: support case numbers, customer case API, mail, support report 2026-10-01 11:33:55 +02:00
IndexUsageTests.cs Index usage over time and never-updated statistics (8g, F) 2026-10-02 10:55:22 +02:00
InstanceConfigurationRepositoryTests.cs Review 1.3: overview leaves out removed instances and marks paused ones 2026-10-02 13:22:42 +02:00
InstanceProbeTests.cs Fase 0: solution structure, capability model, rule engine, least-privilege script 2026-09-29 05:40:49 +00:00
InstanceSetupApiTests.cs Review 1.3: redact logins and user names in the configuration API 2026-10-02 13:22:42 +02:00
InstanceSetupWebTests.cs Review 1.3: local Administrators may change the configuration until AdminGroups is set; MSI property ADMIN_GROUPS 2026-10-02 13:22:42 +02:00
LeastPrivilegeTests.cs Fase 1: collectors and rule pack (41 rules) 2026-09-29 06:17:08 +00:00
NavigationTests.cs Menu in foldable groups 2026-10-02 09:17:43 +02:00
NotificationIntegrationTests.cs Fase 2: notifications by e-mail, Teams and webhook 2026-09-29 08:08:06 +00:00
PrivilegeTests.cs Privilege audit: sysadmin and server roles with AD unfolding 2026-10-02 08:39:56 +02:00
ReplicationTests.cs Replication from the distributor (8f) 2026-10-02 10:48:46 +02:00
ReportTests.cs Fase 4: management and compliance reports as PDF 2026-09-29 10:09:10 +00:00
RepositoryTests.cs Stop SQLInsight deadlocking itself, and stop reporting its own deadlocks 2026-10-02 07:34:59 +02:00
ServerAgentTests.cs Review 1.5: a Windows server that hangs no longer holds up the agent; reads are bounded and backed off 2026-10-02 16:02:17 +02:00
ServerApiTests.cs Review 1.5: API v1 redacts the agent's account, logins, user names and URL queries; history, event log metadata, paging 2026-10-02 15:53:26 +02:00
ServerRepositoryTests.cs Review 1.5: repository: reuse waiting agent requests, active findings only on monitored servers and checks, cleanup on removal 2026-10-02 15:53:26 +02:00
ServerWebTests.cs Review 1.5: server and check pages: one overview query, paused checks are not run, bad numbers refused, seconds kept 2026-10-02 15:53:26 +02:00
SQLInsight.IntegrationTests.csproj Collection: Windows servers over CIM (WS-Man, DCOM fallback) and synthetic check runners 2026-10-02 14:58:18 +02:00
SqlServerFixture.cs Fase 2: Always On availability groups and SQL Agent jobs 2026-09-29 07:53:49 +00:00
SupportApiTests.cs Support cases through the API: create, read and close 2026-10-02 09:47:58 +02:00
SyntheticSqlCheckTests.cs Collection: Windows servers over CIM (WS-Man, DCOM fallback) and synthetic check runners 2026-10-02 14:58:18 +02:00
TempdbTests.cs tempdb and version store (8c) 2026-10-02 10:42:38 +02:00
TimeWindowAnalysisTests.cs Explain and assess measurements for the customer 2026-10-02 08:57:10 +02:00
UpdateIntegrationTests.cs Fase 3: signed updates of rule packs and the application 2026-09-29 09:19:41 +00:00
WaitSamplingTests.cs Wait type drill-down with active session sampling 2026-10-02 08:50:31 +02:00
WebApiTests.cs Separate "check by hand" from "not relevant" for version-gated rules 2026-10-02 09:59:50 +02:00
WebSupportTests.cs Support cases through the API: create, read and close 2026-10-02 09:47:58 +02:00
WebTests.cs Rules the version does not support are "not applicable", not "not measurable" 2026-10-01 16:05:39 +02:00