Fix IncrementingCounter payload generation (#433)
authorSung Yoon Whang <suwhang@microsoft.com>
Fri, 16 Aug 2019 20:16:17 +0000 (13:16 -0700)
committerGitHub <noreply@github.com>
Fri, 16 Aug 2019 20:16:17 +0000 (13:16 -0700)
* Fix IncrementingCounter payload generation

* code review

src/Tools/dotnet-counters/CounterMonitor.cs
src/Tools/dotnet-counters/CounterPayload.cs

index bce93d7de271cba007ab820c509a26cec99fd03a..7d20489931ab3ab48181bd3c476e5226cd810c02 100644 (file)
@@ -55,11 +55,11 @@ namespace Microsoft.Diagnostics.Tools.Counters
                 ICounterPayload payload;
                 if (payloadFields.ContainsKey("CounterType"))
                 {
-                    payload = payloadFields["CounterType"].Equals("Sum") ? (ICounterPayload)new IncrementingCounterPayload(payloadFields) : (ICounterPayload)new CounterPayload(payloadFields);
+                    payload = payloadFields["CounterType"].Equals("Sum") ? (ICounterPayload)new IncrementingCounterPayload(payloadFields, _interval) : (ICounterPayload)new CounterPayload(payloadFields);
                 }
                 else
                 {
-                    payload = payloadFields.Count == 6 ? (ICounterPayload)new IncrementingCounterPayload(payloadFields) : (ICounterPayload)new CounterPayload(payloadFields);
+                    payload = payloadFields.Count == 6 ? (ICounterPayload)new IncrementingCounterPayload(payloadFields, _interval) : (ICounterPayload)new CounterPayload(payloadFields);
                 }
                 writer.Update(obj.ProviderName, payload, pauseCmdSet);
             }
index 8a8e751319dbdd9bfd10d66dfb800cbbbd205cc3..9f2f70b11b62460d11fd7194e88360983cae8d63 100644 (file)
@@ -50,12 +50,16 @@ namespace Microsoft.Diagnostics.Tools.Counters
         public string m_Value;
         public string m_DisplayName;
         public string m_DisplayRateTimeScale;
-        public IncrementingCounterPayload(IDictionary<string, object> payloadFields)
+        public IncrementingCounterPayload(IDictionary<string, object> payloadFields, int interval)
         {
             m_Name = payloadFields["Name"].ToString();
             m_Value = payloadFields["Increment"].ToString();
             m_DisplayName = payloadFields["DisplayName"].ToString();
-            m_DisplayRateTimeScale = TimeSpan.Parse(payloadFields["DisplayRateTimeScale"].ToString()).ToString("%s' sec'");
+            m_DisplayRateTimeScale = payloadFields["DisplayRateTimeScale"].ToString();
+
+            // In case these properties are not provided, set them to appropriate values.
+            m_DisplayName = m_DisplayName.Length == 0 ? m_Name : m_DisplayName;
+            m_DisplayRateTimeScale = m_DisplayRateTimeScale.Length == 0 ? $"{interval} sec" : TimeSpan.Parse(m_DisplayRateTimeScale).ToString("%s' sec'");
         }
 
         public string GetName()