Wie lese ich den Leistungszähler "NumberOfActiveConnections" der Kategorie ".NET Data Provider for SqlServer" aus einem Einheitstest in MS Test aus?
Ich versuche das Folgende, aber es scheint, dass ich den Instanznamen falsch verstehe. Die MSDN-Dokumentation behauptet, dass dies ein korrekter Weg ist, um den Instanznamen einer WinForms-Anwendung zu erhalten, aber dies wird nicht mit MS Test funktionieren:
string instanceName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
Wenn ich den obigen Code von MS Test aus ausführe, erhalte ich null
zurück von dem Anruf bei GetEntryAssembly()
Ich habe auch versucht, den Namen des MS-Testprozesses und andere Varianten zu verwenden, aber ohne Erfolg.
Dies ist der Beispielcode, der eine Ausnahme auslöst, wenn ich einen der Instanznamen von oben verwende:
PerformanceCounter counter = new PerformanceCounter(
".NET Data Provider for SqlServer",
"NumberOfActiveConnections",
instanceName,
true);
Assert.AreEqual<long>(0, counter.RawValue);
Ich aktiviere den "NumberOfActiveConnections"-Zähler, indem ich dies der app.config wie folgt hinzufüge MSDN-Dokumentation :
<system.diagnostics>
<switches>
<add name="ConnectionPoolPerformanceCounterDetail" value="4"/>
</switches>
</system.diagnostics>
Vielleicht liegt das Problem darin, dass die Leistungszähler für die MS Test-Hostdomäne aktiviert sind, aber nicht für die Domäne, in der die Tests tatsächlich ausgeführt werden?