1. NETSetup test sweep 2026-09-18 - TODO list

Run against netbase local pack 0.21.0-ModelFeature.421 (netbase ModelFeature HEAD 31e9bf7c91), NetCore 0.22.6-develop.29, NETCommand 1.5.0-develop.13. Settings src/local.runsettings (TestCategory!=Prod), artifacts in src/TestResults/sweep-20260918/.

Note
this doc only LIST work. Nothing here is fixed - fix is own task.

1.1. Run result

NETSetup.Tests was re-run 2026-09-18/19 in 12 namespace CHUNKS (own testhost + own TRX each), because one single process of all 1358 tests got killed by host memory pressure at ~718. Artifacts: src/TestResults/sweep-20260918/NETSetup.Tests-chunks/.

Test project Discovered Ran Passed Failed State

osisa.OPNSense.Rest.Tests

24

24

24

0

COMPLETE

osisa.OPNSense.Tests

39

35

35

0

COMPLETE

osisa.Inventory.Tests

86

83

89*

0

COMPLETE

osisa.Mikrotik.Tests

241

224

224

0

COMPLETE

osisa.Virtualization.Tests

164

164

166*

0

COMPLETE

NETSetup.Tests

1419

1358

1315

7

COMPLETE (37 not executed)

*) TRX count higher than the discovery count - data-driven rows expand at execution.

Table 1. NETSetup.Tests per chunk
Chunk Passed Failed Skipped Duration

helpers

394

0

12

102s

config

360

0

7

224s

commands

133

0

1

3s

stages

130

1

1

747s

customers

43

0

8

4s

docs

128

0

0

3s

files

61

0

2

39s

infra

4

0

0

2s

datastore

11

4

1

~100m (hung in cleanup, testhost killed by hand)

exe

35

1

5

600s

virtual

16

1

0

4s

rest

0

0

0

2s

Totals across both runs: 1973 discovered, 1888 runnable after the Prod filter, 85 hidden by TestCategory!=Prod.

1.2. TODO 1 - failing tests (7 of 7, complete)

# Test Symptom First look

1

StageTests.S3PublishTests.PublishRuntimeTest

Timeout …​ nach 600000 ms

Publish of the runtime take longer than the global 600s ceiling. Either it hang on a remote source, or it genuinely need its own [Timeout] + LongRunning tag.

2

ExeTests.CreateIsoTests.CreateIso_NotElevated_ShouldFailWithElevationMessage

Timeout …​ nach 300000 ms

Test expect the CLI to REFUSE fast when not elevated. Instead it run 5 minutes. The elevation check either never fire, or the spawned NETSetup.exe block on something before it.

3

VirtualTests.OnHyperV.Windows11ReachabilityTests.Windows11Guest_AlreadyInstalled_ShouldAnswerOverPowerShellDirect

FileNotFoundException: …​\claude\C---gh-main-netsetup\d0b8354b-…​\scratchpad\iso\#VirtualMachines.json

Test read a HARDCODED path into a DEAD agent-session scratchpad dir. Must come from config / test fixture, not a literal. Config-driven rule broken.

4

DataStoreTests.HyperVVirtualMachineReadAllTests.ReadAll_ShouldReturnTheSameCountAsTheNativeApi

Expected count to be 24, but found 11

Repository report 24 (11 real guests + 13 soft-deleted), native API report 11. The count include soft-deleted entries the native API cannot see. Host state + a real semantic question: should ReadAll include soft-deleted?

5

DataStoreTests.HyperVVirtualMachineRepositoryCrudTests2.UnitOfWorkRepositoryTestBase_ReadSoftDeleted_Initial

Expected value to be 0, but found 11

Base test assume a clean store. The store carry 11 soft-deleted guests left by earlier aborted runs. Same root as 4.

6

DataStoreTests.HyperVVirtualMachineRepositoryCrudTests2.UnitOfWorkRepositoryTestBase_SoftDelete_Commit

wurde abgebrochen

CANCELLED, not a real assert. Class cleanup hung (see TODO 5), testhost killed by hand so the sweep could continue. Re-run this class alone on a clean host to get a verdict.

7

DataStoreTests.HyperVVirtualMachineRepositoryCrudTests2.UnitOfWorkRepositoryTestBase_SoftDelete_NoCommit

wurde abgebrochen

Same as 6.

VERDICT 2026-09-19 - failures 4 to 7 are NOT product bugs. The host was cleaned (19 guests removed: 18 soft-delete markers plus the running TestIpfsNixHyperV) and DataStoreTests re-run: 24 passed, 1 skipped, 0 failed, including all four. ReadAll_ShouldReturnTheSameCountAsTheNativeApi and …​_ReadSoftDeleted_Initial were host-state artefacts; …​_SoftDelete_Commit / _NoCommit were cancelled by my own testhost kill. The clean re-run was itself killed on host memory pressure before the summary line, so no TRX exist for it - console log scratchpad/datastore-clean.log.

Real remaining failures: 3 - numbers 1, 2 and 3.

What stay OPEN is the environment, not these tests: the suite ACCUMULATE soft-delete markers and leave guests RUNNING (NETSetupCrudTest1 and TestIpfsNixHyperV were both Running again after the re-run), and that is exactly what poison the following run. See TODO 5.

1.3. TODO 2 - tests that never run (85 Prod-filtered)

All hidden by TestCategory!=Prod in src/local.runsettings. This is BY DESIGN - they reach live hosts (Proxmox nodes, MikroTik/OPNsense boxes, Dropbox image store). Listed so the count is not a surprise.

Project Count Content

NETSetup.Tests

61

devBuilder03/05/06, devRunner01/02/03 reinstall + verification, Proxmox NixOS Ipfs/Nextcloud, OfflineWin11, Win11 C$, ISO publish

osisa.Mikrotik.Tests

17

live RouterOS box

osisa.OPNSense.Tests

4

live OPNsense box

osisa.Inventory.Tests

3

live inventory source

Tagging gap CLOSED in this run: ProxmoxOfflineWin11Tests.Connect_ToProxmoxHost_Succeeds reach the live osisaLib03 node and resolve devBuilder03, but carry only local. Now Prod.

1.4. TODO 3 - tests that never execute (37, NETSetup.Tests)

[Ignore] or Assert.Inconclusive, so they report neither pass nor fail. Reason text below is the one the test itself carry. Split three ways by HOW DEFENSIBLE the switch-off is - attack group C first, because a test with no stated reason cannot be told apart from one silenced to make a run green.

Priority: C (16) before B (10) before A (11).

1.4.1. A - deliberate and justified (11)

Need something this box do not have, and they say so. Leave them, but they belong behind a category (local / Prod / LongRunning) rather than [Ignore], so a run on a capable host pick them up.

Test Reason as given

ArchiveSyncTests.EnsureExtracted_SidecarMismatch_ExitFailure

ExitFailure calls Environment.Exit which crashes test host - integration test only

ResolveConfigNameFallbackTests.ResolveConfigNameFallback_WhenAllPathsFail_ShouldThrowNETSetupException

same - Environment.Exit crashes the test host

ResolveConfigNameFallbackTests.ResolveConfigNameFallback_VmWithoutUsbAndVmConfigMissing_ShouldNotReturnValidConfigName

same - Environment.Exit crashes the test host

ReadAndParseConfigTests.ReadAndParseConfig_ForVmWithoutUsbWhenPrimaryFails_ShouldFallbackToZDrive

Requires Z: drive (VM config partition) - integration test only

FetchConfigOnlineTests.FetchConfigOnline_ForVmWithoutUsb_ShouldNotCreatePartitions

requires the Z: config partition mounted (VM-without-USB path)

MikrotikCommandTests.FlashMikrotik_AgainstRealDevice_ShouldComplete

Integration test: requires a reachable MikroTik device

ChocolateyHelperGetInstalledPackagesTests.GetInstalledPackages_OnLocalHost_ShouldReturnRealPackages

Integration test: requires Chocolatey installed locally

ChocolateyHelperUpgradeAllTests.UpgradeAll_WhenChocoUpgradeSucceeds_ShouldReturnZeroFailures

Integration test - runs real choco upgrade which takes minutes

WakeTests.EnableWOL_ShouldSucceed_WhenValidInterfaceName

Requires elevated permissions and may modify system configuration

NetworkWakeHelperTests.EnableWOL_ShouldNotThrow_WhenValidInterfaceName

Requires elevated permissions and may modify system configuration

HyperVIpfsNodeDeleteTests.Delete_Commit_ShouldSoftDelete_AndExecuteDeletions_ShouldDestroyTheMachine

RUNTIME Assert.Inconclusive, not [Ignore]: "LocalHyperV carry 13 soft-deleted guest(s); refusing to execute deletions". Would run on a clean host - see TODO 5.

1.4.2. B - deliberate but the reason is a smell (10)

Switched off on purpose, but the note do not let anyone judge it. Each need a real reason or a delete.

Test Reason as given

ChocolateyHelperInstallVersionTests.Install_WithVariousPackagesAndVersions_ShouldReturnTrue ("7zip","23.01")

Breaks runner - WHAT breaks is not written down

ChocolateyHelperInstallVersionTests.Install_WithVariousPackagesAndVersions_ShouldReturnTrue ("firefox","121.0")

Breaks runner

ChocolateyHelperInstallVersionTests.Install_WithVariousPackagesAndVersions_ShouldReturnTrue ("googlechrome","120.0.6099.130")

Breaks runner

GetConfigPipelineTests.GetConfig_PipelineOrder_ShouldEndWithReadAndParseConfig

I dont know why this test exists, todo check

GetConfigPipelineTests.GetConfig_WithValidParameters_ShouldReturnNETSetupConfig

AI Test Forever Loop Timeout

GetTests.Assistant_Conversation

Locking

GetTests.Assistant_OneShot

TODO

OSISA_GmbH.GenerateISOAndPushToProxmox ("osisaLiberator01")

WIP, TODO: Soeren

PhysicalFileOperatorTests.EnsureNoDiffWithHashtagToOtherDrive

Local

S2RemoteSourceTests.CopyDriversTest

Unnecessary - then DELETE it, do not ignore it

1.4.3. C - dark, no reason at all (16) - FIX FIRST

Silently off. Nothing say whether the test is broken, obsolete, or was quieted to get a green run.

Test Note

ArpScannerTests.FindIPByMAC_WithNonExistentMAC_ShouldReturnNull

pure unit shape - should be runnable

ArpScannerTests.FindIPByMAC_WithNonExistentAdapterPattern_ShouldReturnNull

pure unit shape - should be runnable

PingLiberatorTests.PingLiberator_WhenVmNotFound_ShouldIncludeVmNameInException

exception-path test, no host needed

PingLiberatorTests.PingLiberator_WhenVmIpCannotBeDiscovered_ShouldThrowNETSetupException

exception-path test, no host needed

NetworkWakeHelperTests.IsWOLEnabled_ShouldNotThrow_WhenValidInterfaceName

read-only sibling of an A-group test

WakeTests.QueryWOLStatus_ShouldSucceed_WhenValidInterfaceName

read-only sibling of an A-group test

ConfigTests2.GetConfigTest

config read - why off?

GetTests.GetID_ShouldGetID_Linux

probably need WSL / Linux env - say so

WebHelperTests.ConnectWifi ("","")

empty DataRow, so it assert nothing anyway

Saner_co_AG.DeserializeSecureString

customer config test

Saner_co_AG.UploadNewConfigurationAndMapFilesToRemoteSourceDropbox (1321)

touch Dropbox - belong in Prod, not [Ignore]

Schnell_Natursteine_AG.UploadNewConfigurationAndMapFilesToRemoteSourceDropbox (491)

touch Dropbox - belong in Prod

OSISA_GmbH.UploadNewOsisaConfigurationAndMapFilesToRemoteSourceDropbox

touch Dropbox - belong in Prod

OSISA_GmbH.SetupNetworkWithConfigOnHyperVTest

touch Hyper-V - belong in local / Prod

OSISA_GmbH.GenerateOfflineISOForNetworkConfigTest

ISO build - belong in LongRunning

Standalone.CreateOffline ("Liberator","HP","CZC4075GB8","192.168.25.130")

hardware-specific DataRow

Pattern worth naming: several C entries are not really "ignored tests" at all, they are live / long-running tests hidden with [Ignore] instead of carrying Prod / local / LongRunning. Tag them and they disappear from this list by the runsettings filter, honestly.

1.5. TODO 4 - test projects outside NETSetup.sln

On disk, never built or run by a solution sweep. Decide: add to the solution, or drop.

  • src/CarreraMarble.Tests

  • src/osisa.KeePass.Tests

  • src/osisa.Plantuml.Tests

  • src/osisa.LanSweeper.Tests (own solution src/osisa.LanSweeper.sln)

1.6. TODO 5 - infrastructure blockers (not netsetup code)

  1. The suite dirty its own host - CLEANED 2026-09-19 (19 guests removed: 18 #-prefixed soft-delete markers plus a running TestIpfsNixHyperV; two orphan VHDX left at C:\NETSetupImages\NETSetupCrudTest1.vhdx and …​\TestIpfsNixHyperV.vhdx). After the re-run the host carry NETSetupCrudTest1 AND TestIpfsNixHyperV Running again, so the accumulation repeat every run. Until the suite tear its own guests down, a DataStore result is only trustworthy on a freshly cleaned box. HyperVIpfsNodeDeleteTests refuse to run at all once markers pile up ("LocalHyperV carry N soft-deleted guest(s); refusing to execute deletions").

  2. DataStore class cleanup HANG (first run only) - HyperVVirtualMachineRepositoryCrudTests2 cleanup ("removing 1 machine(s) of this suite") sat idle ~35 min: testhost CPU moved 0.2 s in 25 s while TestIpfsNixHyperV stayed Running. Fingerprint of the known netbase EnsureRemove bug - stop is async, destroy result discarded. The testhost had to be killed by hand, which cancelled failures 6 and 7. MSTest TestTimeout never fire (it do not cover class cleanup). CAVEAT: on the clean re-run a similar idle stretch turned out to be a legitimately slow 7m45s test, so low CPU alone do NOT prove a hang - check whether a new result line appear after it.

  3. netbase HEAD do not build - osisa.Repositories.sln fail on three GLPI projects nothing else reference. Packed around them with a generated src/osisa.Repositories.NoGlpi.slnf (netbase repo):

    • osisa.GLPI/Repositories/GlpiUnitOfWork.cs + Configuration/ServiceCollectionExtensions.cs - Assets, Assistance, GlpiRepositoryMappings not in context (source-generator output missing)

    • osisa.GLPI/Repositories/GlpiResourceRepository[TEntity,TId].cs:270 - JsonObject ambiguous (System.Text.Json.Nodes vs RestSharp)

    • osisa.GLPI.Generator/GlpiGeneratorRunner.cs:86,94 - EnsureDirectoryAsync / EnsureDeleteAsync ambiguous since NetCore add the ISubPath overload beside string

  4. netbase .421 is LOCAL ONLY - C:\_gh\packages. CI and fresh clone cannot restore until netbase publish it.

  5. One process cannot run the whole suite - a single dotnet test of all 1358 tests was killed on host memory pressure at ~718. The 12-chunk split (scratchpad/run-netsetup-chunks.sh, one testhost per namespace group) completed. Keep chunking.

  6. Serena MCP down all session (:9121 SSE refused), so no symbol-level work was possible.