Commit 7a44caa1 authored by Matt Hyman's avatar Matt Hyman Committed by GitHub
Browse files

Merge pull request #255 from Microsoft/user/mattH/performanceDataFix

Fix SystemPerformanceInformation DataContract and add assert when web socket fails to parse data.
parents 8914e384 eb1343da
Loading
Loading
Loading
Loading
+23 −23
Original line number Diff line number Diff line
@@ -145,14 +145,14 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests.Core
            Assert.AreEqual(systemIdleprocess.Name, "System Idle Process");
            Assert.IsNull(systemIdleprocess.PackageFullName);
            Assert.AreEqual(systemIdleprocess.PageFile, 0U);
            Assert.AreEqual(systemIdleprocess.PrivateWorkingSet, 4096);
            Assert.AreEqual(systemIdleprocess.ProcessId, 0);
            Assert.AreEqual(systemIdleprocess.PrivateWorkingSet, 4096U);
            Assert.AreEqual(systemIdleprocess.ProcessId, 0U);
            Assert.IsNull(systemIdleprocess.Publisher);
            Assert.AreEqual(systemIdleprocess.SessionId, 0U);
            Assert.AreEqual(systemIdleprocess.TotalCommit, 0);
            Assert.AreEqual(systemIdleprocess.TotalCommit, 0U);
            Assert.AreEqual(systemIdleprocess.UserName, "NT AUTHORITY\\SYSTEM");
            Assert.IsNull(systemIdleprocess.Version);
            Assert.AreEqual(systemIdleprocess.VirtualSize, 65536);
            Assert.AreEqual(systemIdleprocess.VirtualSize, 65536U);
            Assert.AreEqual(systemIdleprocess.WorkingSet, 4096U);

            DeviceProcessInfo devHomeProcess = processes[1];
@@ -163,14 +163,14 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests.Core
            Assert.AreEqual(devHomeProcess.Name, "svchost.exe");
            Assert.IsNull(devHomeProcess.PackageFullName);
            Assert.AreEqual(devHomeProcess.PageFile, 5472256U);
            Assert.AreEqual(devHomeProcess.PrivateWorkingSet, 4755456);
            Assert.AreEqual(devHomeProcess.ProcessId, 892);
            Assert.AreEqual(devHomeProcess.PrivateWorkingSet, 4755456U);
            Assert.AreEqual(devHomeProcess.ProcessId, 892U);
            Assert.IsNull(devHomeProcess.Publisher);
            Assert.AreEqual(devHomeProcess.SessionId, 0U);
            Assert.AreEqual(devHomeProcess.TotalCommit, 5914624);
            Assert.AreEqual(devHomeProcess.TotalCommit, 5914624U);
            Assert.AreEqual(devHomeProcess.UserName, "NT AUTHORITY\\SYSTEM");
            Assert.IsNull(devHomeProcess.Version);
            Assert.AreEqual(devHomeProcess.VirtualSize, 2203387539456);
            Assert.AreEqual(devHomeProcess.VirtualSize, 2203387539456U);
            Assert.AreEqual(devHomeProcess.WorkingSet, 17285120U);
        }

@@ -181,18 +181,18 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests.Core
        private static void ValidateSystemPerm(SystemPerformanceInformation systemPerfInfo)
        {
            // Check some known things about this response.
            Assert.AreEqual(systemPerfInfo.AvailablePages, 369054);
            Assert.AreEqual(systemPerfInfo.CommitLimit, 784851);
            Assert.AreEqual(systemPerfInfo.CommittedPages, 322627);
            Assert.AreEqual(systemPerfInfo.CpuLoad, 1);
            Assert.AreEqual(systemPerfInfo.IoOtherSpeed, 3692);
            Assert.AreEqual(systemPerfInfo.IoReadSpeed, 36);
            Assert.AreEqual(systemPerfInfo.IoWriteSpeed, 6480);
            Assert.AreEqual(systemPerfInfo.NonPagedPoolPages, 42504);
            Assert.AreEqual(systemPerfInfo.PageSize, 4096);
            Assert.AreEqual(systemPerfInfo.PagedPoolPages, 30697);
            Assert.AreEqual(systemPerfInfo.TotalInstalledKb, 1048592);
            Assert.AreEqual(systemPerfInfo.TotalPages, 655360);
            Assert.AreEqual(systemPerfInfo.AvailablePages, 369054U);
            Assert.AreEqual(systemPerfInfo.CommitLimit, 784851U);
            Assert.AreEqual(systemPerfInfo.CommittedPages, 322627U);
            Assert.AreEqual(systemPerfInfo.CpuLoad, 1U);
            Assert.AreEqual(systemPerfInfo.IoOtherSpeed, 3692U);
            Assert.AreEqual(systemPerfInfo.IoReadSpeed, 36U);
            Assert.AreEqual(systemPerfInfo.IoWriteSpeed, 6480U);
            Assert.AreEqual(systemPerfInfo.NonPagedPoolPages, 42504U);
            Assert.AreEqual(systemPerfInfo.PageSize, 4096U);
            Assert.AreEqual(systemPerfInfo.PagedPoolPages, 30697U);
            Assert.AreEqual(systemPerfInfo.TotalInstalledKb, 1048592U);
            Assert.AreEqual(systemPerfInfo.TotalPages, 655360U);

            Assert.AreEqual(systemPerfInfo.GpuData.Adapters.Count, 1);
            GpuAdapter gpuAdapter = systemPerfInfo.GpuData.Adapters[0];
@@ -204,11 +204,11 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests.Core

            Assert.AreEqual(gpuAdapter.EnginesUtilization.Count, 7);
            double enguineUtilization = gpuAdapter.EnginesUtilization[0];
            Assert.AreEqual(enguineUtilization, 0.0011459999950602651);
            Assert.AreEqual(enguineUtilization, 0.001146);

            NetworkPerformanceData networkPerformanceData = systemPerfInfo.NetworkData;
            Assert.AreEqual(networkPerformanceData.BytesIn, 15000);
            Assert.AreEqual(networkPerformanceData.BytesOut, 0);
            Assert.AreEqual(networkPerformanceData.BytesIn, 15000U);
            Assert.AreEqual(networkPerformanceData.BytesOut, 0U);
        }
    }
}
+14 −14
Original line number Diff line number Diff line
@@ -22,18 +22,18 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests
        internal static void ValidateSystemPerfAsync(SystemPerformanceInformation systemPerfInfo)
        {
            // Check some known things about this response.
            Assert.AreEqual(275897, systemPerfInfo.AvailablePages);
            Assert.AreEqual(764290, systemPerfInfo.CommitLimit);
            Assert.AreEqual(225486, systemPerfInfo.CommittedPages);
            Assert.AreEqual(20, systemPerfInfo.CpuLoad);
            Assert.AreEqual(4337544, systemPerfInfo.IoOtherSpeed);
            Assert.AreEqual(1717438, systemPerfInfo.IoReadSpeed);
            Assert.AreEqual(788621, systemPerfInfo.IoWriteSpeed);
            Assert.AreEqual(15470, systemPerfInfo.NonPagedPoolPages);
            Assert.AreEqual(4096, systemPerfInfo.PageSize);
            Assert.AreEqual(18894, systemPerfInfo.PagedPoolPages);
            Assert.AreEqual(2097152, systemPerfInfo.TotalInstalledKb);
            Assert.AreEqual(502146, systemPerfInfo.TotalPages);
            Assert.AreEqual(275897U, systemPerfInfo.AvailablePages);
            Assert.AreEqual(764290U, systemPerfInfo.CommitLimit);
            Assert.AreEqual(225486U, systemPerfInfo.CommittedPages);
            Assert.AreEqual(20U, systemPerfInfo.CpuLoad);
            Assert.AreEqual(4337544U, systemPerfInfo.IoOtherSpeed);
            Assert.AreEqual(1717438U, systemPerfInfo.IoReadSpeed);
            Assert.AreEqual(788621U, systemPerfInfo.IoWriteSpeed);
            Assert.AreEqual(15470U, systemPerfInfo.NonPagedPoolPages);
            Assert.AreEqual(4096U, systemPerfInfo.PageSize);
            Assert.AreEqual(18894U, systemPerfInfo.PagedPoolPages);
            Assert.AreEqual(2097152U, systemPerfInfo.TotalInstalledKb);
            Assert.AreEqual(502146U, systemPerfInfo.TotalPages);

            Assert.AreEqual(systemPerfInfo.GpuData.Adapters.Count, 1);
            GpuAdapter gpuAdapter = systemPerfInfo.GpuData.Adapters[0];
@@ -47,8 +47,8 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests
            Assert.AreEqual("7.098184", gpuAdapter.EnginesUtilization[0].ToString("n6"));

            NetworkPerformanceData networkPerformanceData = systemPerfInfo.NetworkData;
            Assert.AreEqual(0, networkPerformanceData.BytesIn);
            Assert.AreEqual(0, networkPerformanceData.BytesOut);
            Assert.AreEqual(0U, networkPerformanceData.BytesIn);
            Assert.AreEqual(0U, networkPerformanceData.BytesOut);
        }
        
        /// <summary>
+23 −23
Original line number Diff line number Diff line
@@ -682,14 +682,14 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests
            Assert.AreEqual(systemIdleprocess.Name, "System Idle Process");
            Assert.IsNull(systemIdleprocess.PackageFullName);
            Assert.AreEqual(systemIdleprocess.PageFile, 0U);
            Assert.AreEqual(systemIdleprocess.PrivateWorkingSet, 4096);
            Assert.AreEqual(systemIdleprocess.ProcessId, 0);
            Assert.AreEqual(systemIdleprocess.PrivateWorkingSet, 4096U);
            Assert.AreEqual(systemIdleprocess.ProcessId, 0U);
            Assert.IsNull(systemIdleprocess.Publisher);
            Assert.AreEqual(systemIdleprocess.SessionId, 0U);
            Assert.AreEqual(systemIdleprocess.TotalCommit, 0);
            Assert.AreEqual(systemIdleprocess.TotalCommit, 0U);
            Assert.AreEqual(systemIdleprocess.UserName, "NT AUTHORITY\\SYSTEM");
            Assert.IsNull(systemIdleprocess.Version);
            Assert.AreEqual(systemIdleprocess.VirtualSize, 65536);
            Assert.AreEqual(systemIdleprocess.VirtualSize, 65536U);
            Assert.AreEqual(systemIdleprocess.WorkingSet, 4096U);

            DeviceProcessInfo devHomeProcess = processes[56];
@@ -700,18 +700,18 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests
            Assert.AreEqual(devHomeProcess.Name, "WWAHost.exe");
            Assert.AreEqual(devHomeProcess.PackageFullName, "Microsoft.Xbox.DevHome_100.1607.9000.0_x64__8wekyb3d8bbwe");
            Assert.AreEqual(devHomeProcess.PageFile, 47067136U);
            Assert.AreEqual(devHomeProcess.PrivateWorkingSet, 32796672);
            Assert.AreEqual(devHomeProcess.ProcessId, 3424);
            Assert.AreEqual(devHomeProcess.PrivateWorkingSet, 32796672U);
            Assert.AreEqual(devHomeProcess.ProcessId, 3424U);
            Assert.AreEqual(devHomeProcess.Publisher, "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US");
            Assert.AreEqual(devHomeProcess.SessionId, 0U);
            Assert.AreEqual(devHomeProcess.TotalCommit, 49213440);
            Assert.AreEqual(devHomeProcess.TotalCommit, 49213440U);

            Assert.AreEqual(devHomeProcess.UserName, "TESTXBOX\\DefaultAccount");
            Assert.AreEqual(devHomeProcess.Version.Build, 9000U);
            Assert.AreEqual(devHomeProcess.Version.Major, 100U);
            Assert.AreEqual(devHomeProcess.Version.Minor, 1607U);
            Assert.AreEqual(devHomeProcess.Version.Revision, 0U);
            Assert.AreEqual(devHomeProcess.VirtualSize, 2234032066560);
            Assert.AreEqual(devHomeProcess.VirtualSize, 2234032066560U);
            Assert.AreEqual(devHomeProcess.WorkingSet, 79466496U);
        }

@@ -722,18 +722,18 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests
        private static void ValidateSystemPerm(SystemPerformanceInformation systemPerfInfo)
        {
            // Check some known things about this response.
            Assert.AreEqual(systemPerfInfo.AvailablePages, 369054);
            Assert.AreEqual(systemPerfInfo.CommitLimit, 784851);
            Assert.AreEqual(systemPerfInfo.CommittedPages, 322627);
            Assert.AreEqual(systemPerfInfo.CpuLoad, 1);
            Assert.AreEqual(systemPerfInfo.IoOtherSpeed, 3692);
            Assert.AreEqual(systemPerfInfo.IoReadSpeed, 36);
            Assert.AreEqual(systemPerfInfo.IoWriteSpeed, 6480);
            Assert.AreEqual(systemPerfInfo.NonPagedPoolPages, 42504);
            Assert.AreEqual(systemPerfInfo.PageSize, 4096);
            Assert.AreEqual(systemPerfInfo.PagedPoolPages, 30697);
            Assert.AreEqual(systemPerfInfo.TotalInstalledKb, 1048592);
            Assert.AreEqual(systemPerfInfo.TotalPages, 655360);
            Assert.AreEqual(systemPerfInfo.AvailablePages, 369054U);
            Assert.AreEqual(systemPerfInfo.CommitLimit, 784851U);
            Assert.AreEqual(systemPerfInfo.CommittedPages, 322627U);
            Assert.AreEqual(systemPerfInfo.CpuLoad, 1U);
            Assert.AreEqual(systemPerfInfo.IoOtherSpeed, 3692U);
            Assert.AreEqual(systemPerfInfo.IoReadSpeed, 36U);
            Assert.AreEqual(systemPerfInfo.IoWriteSpeed, 6480U);
            Assert.AreEqual(systemPerfInfo.NonPagedPoolPages, 42504U);
            Assert.AreEqual(systemPerfInfo.PageSize, 4096U);
            Assert.AreEqual(systemPerfInfo.PagedPoolPages, 30697U);
            Assert.AreEqual(systemPerfInfo.TotalInstalledKb, 1048592U);
            Assert.AreEqual(systemPerfInfo.TotalPages, 655360U);

            Assert.AreEqual(systemPerfInfo.GpuData.Adapters.Count, 1);
            GpuAdapter gpuAdapter = systemPerfInfo.GpuData.Adapters[0];
@@ -745,11 +745,11 @@ namespace Microsoft.Tools.WindowsDevicePortal.Tests

            Assert.AreEqual(gpuAdapter.EnginesUtilization.Count, 7);
            double enguineUtilization = gpuAdapter.EnginesUtilization[0];
            Assert.AreEqual(enguineUtilization, 0.0011459999950602651);
            Assert.AreEqual(enguineUtilization, 0.001146);

            NetworkPerformanceData networkPerformanceData = systemPerfInfo.NetworkData;
            Assert.AreEqual(networkPerformanceData.BytesIn, 15000);
            Assert.AreEqual(networkPerformanceData.BytesOut, 0);
            Assert.AreEqual(networkPerformanceData.BytesIn, 15000U);
            Assert.AreEqual(networkPerformanceData.BytesOut, 0U);
        }
    }
}
 No newline at end of file
+19 −19
Original line number Diff line number Diff line
@@ -329,13 +329,13 @@ namespace Microsoft.Tools.WindowsDevicePortal
            /// Gets total Dedicated memory in bytes
            /// </summary>
            [DataMember(Name = "DedicatedMemory")]
            public uint DedicatedMemory { get; private set; }
            public ulong DedicatedMemory { get; private set; }

            /// <summary>
            /// Gets used Dedicated memory in bytes
            /// </summary>
            [DataMember(Name = "DedicatedMemoryUsed")]
            public uint DedicatedMemoryUsed { get; private set; }
            public ulong DedicatedMemoryUsed { get; private set; }

            /// <summary>
            /// Gets description
@@ -347,19 +347,19 @@ namespace Microsoft.Tools.WindowsDevicePortal
            /// Gets system memory in bytes
            /// </summary>
            [DataMember(Name = "SystemMemory")]
            public uint SystemMemory { get; private set; }
            public ulong SystemMemory { get; private set; }

            /// <summary>
            /// Gets memory used in bytes
            /// </summary>
            [DataMember(Name = "SystemMemoryUsed")]
            public uint SystemMemoryUsed { get; private set; }
            public ulong SystemMemoryUsed { get; private set; }

            /// <summary>
            /// Gets engines utilization as percent of maximum. 
            /// </summary>
            [DataMember(Name = "EnginesUtilization")]
            public List<float> EnginesUtilization { get; private set; }
            public List<double> EnginesUtilization { get; private set; }
        }

        /// <summary>
@@ -385,13 +385,13 @@ namespace Microsoft.Tools.WindowsDevicePortal
            /// Gets current download speed in bytes per second
            /// </summary>
            [DataMember(Name = "NetworkInBytes")]
            public int BytesIn { get; private set; }
            public ulong BytesIn { get; private set; }

            /// <summary>
            ///  Gets current upload speed in bytes per second
            /// </summary>
            [DataMember(Name = "NetworkOutBytes")]
            public int BytesOut { get; private set; }
            public ulong BytesOut { get; private set; }
        }

        /// <summary>
@@ -463,73 +463,73 @@ namespace Microsoft.Tools.WindowsDevicePortal
            /// Gets available pages
            /// </summary>
            [DataMember(Name = "AvailablePages")]
            public int AvailablePages { get; private set; }
            public ulong AvailablePages { get; private set; }

            /// <summary>
            /// Gets commit limit in bytes
            /// </summary>
            [DataMember(Name = "CommitLimit")]
            public int CommitLimit { get; private set; }
            public uint CommitLimit { get; private set; }

            /// <summary>
            /// Gets committed pages
            /// </summary>
            [DataMember(Name = "CommittedPages")]
            public int CommittedPages { get; private set; }
            public uint CommittedPages { get; private set; }

            /// <summary>
            /// Gets CPU load as percent of maximum (0 - 100)
            /// </summary>
            [DataMember(Name = "CpuLoad")]
            public int CpuLoad { get; private set; }
            public uint CpuLoad { get; private set; }

            /// <summary>
            /// Gets IO Other Speed in bytes per second
            /// </summary>
            [DataMember(Name = "IOOtherSpeed")]
            public int IoOtherSpeed { get; private set; }
            public ulong IoOtherSpeed { get; private set; }

            /// <summary>
            /// Gets IO Read speed in bytes per second. 
            /// </summary>
            [DataMember(Name = "IOReadSpeed")]
            public int IoReadSpeed { get; private set; }
            public ulong IoReadSpeed { get; private set; }

            /// <summary>
            /// Gets IO write speed in bytes per second
            /// </summary>
            [DataMember(Name = "IOWriteSpeed")]
            public int IoWriteSpeed { get; private set; }
            public ulong IoWriteSpeed { get; private set; }

            /// <summary>
            /// Gets Non paged pool pages
            /// </summary>
            [DataMember(Name = "NonPagedPoolPages")]
            public int NonPagedPoolPages { get; private set; }
            public uint NonPagedPoolPages { get; private set; }

            /// <summary>
            /// Gets page size
            /// </summary>
            [DataMember(Name = "PageSize")]
            public int PageSize { get; private set; }
            public uint PageSize { get; private set; }

            /// <summary>
            /// Gets paged pool pages
            /// </summary>
            [DataMember(Name = "PagedPoolPages")]
            public int PagedPoolPages { get; private set; }
            public uint PagedPoolPages { get; private set; }

            /// <summary>
            /// Gets total installed in KB
            /// </summary>
            [DataMember(Name = "TotalInstalledInKb")]
            public int TotalInstalledKb { get; private set; }
            public ulong TotalInstalledKb { get; private set; }

            /// <summary>
            /// Gets total pages
            /// </summary>
            [DataMember(Name = "TotalPages")]
            public int TotalPages { get; private set; }
            public uint TotalPages { get; private set; }

            /// <summary>
            /// Gets GPU data
+15 −4
Original line number Diff line number Diff line
@@ -5,7 +5,9 @@
//----------------------------------------------------------------------------------------------

using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Threading.Tasks;

@@ -159,12 +161,21 @@ namespace Microsoft.Tools.WindowsDevicePortal
                        };
                        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T), settings);

                        try
                        {
                            T message = (T)serializer.ReadObject(stream);

                            this.WebSocketMessageReceived?.Invoke(
                                this,
                                new WebSocketMessageReceivedEventArgs<T>(message));
                        }
                        catch(SerializationException)
                        {
                            // Assert on serialization failure.
                            Debug.Assert(false);
                            throw;
                        }
                    }
                }
            }
        }