From 149cc59b78e3960d0d03d9c3ff686131621ebe98 Mon Sep 17 00:00:00 2001
From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch>
Date: Sun, 11 Mar 2018 14:34:36 +0100
Subject: [PATCH] Homogenize code with ATxCommon.

---
 ATxDiagnostics/ATxDiagnostics.cs | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/ATxDiagnostics/ATxDiagnostics.cs b/ATxDiagnostics/ATxDiagnostics.cs
index 0d10ae8..a03d5af 100644
--- a/ATxDiagnostics/ATxDiagnostics.cs
+++ b/ATxDiagnostics/ATxDiagnostics.cs
@@ -30,25 +30,31 @@ namespace ATxDiagnostics
             Log.Debug(SystemChecks.GetCpuUsage());
             Log.Debug(SystemChecks.GetCpuUsage());
             Log.Debug(SystemChecks.GetCpuUsage());
-            Log.Debug(SystemChecks.GetCpuUsage());
             */
+            Log.Debug(SystemChecks.GetCpuUsage());
             Log.Debug(QueryCpuLoad());
         }
 
         private static int QueryCpuLoad() {
             Log.Trace("Querying WMI for CPU load...");
-            var searcher = new ManagementObjectSearcher(
-                "root\\CIMV2",
-                "select Name, PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor",
-                new EnumerationOptions {
-                    Timeout = new TimeSpan(0, 0, 10),
-                    ReturnImmediately = false,
-                }
-                );
+            var watch = Stopwatch.StartNew();
+            var queryString = "SELECT Name, PercentProcessorTime " +
+                              "FROM Win32_PerfFormattedData_PerfOS_Processor";
+            var opts = new EnumerationOptions {
+                Timeout = new TimeSpan(0, 0, 10),
+                ReturnImmediately = false,
+            };
+            var searcher = new ManagementObjectSearcher("", queryString, opts);
             Int32 usageInt32 = -1;
 
 
             var managementObjects = searcher.Get();
+            if (managementObjects.Count == 0) {
+                Log.Error("No objects returned from WMI!");
+                watch.Stop();
+                Log.Debug("WMI query took {0} ms.", watch.ElapsedMilliseconds);
+                return -1;
+            }
             Log.Trace("WMI query returned {0} objects.", managementObjects.Count);
             foreach (var mo in managementObjects) {
                 var obj = (ManagementObject)mo;
@@ -58,16 +64,14 @@ namespace ATxDiagnostics
                 usageInt32 = Convert.ToInt32(usage);
                 Log.Trace("CPU usage {1}: {0}", usageInt32, name);
 
-                //if (name.ToString().Equals("_Total")) {
-                //    usageInt32 = Convert.ToInt32(usage);
-                //    Log.Trace("CPU usage: {0}", usageInt32);
-                //}
-
             }
 
             managementObjects.Dispose();
             searcher.Dispose();
 
+            watch.Stop();
+            Log.Debug("WMI query took {0} ms.", watch.ElapsedMilliseconds);
+
             return usageInt32;
         }
     }
-- 
GitLab