diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/runtest.proj | 3 | ||||
-rw-r--r-- | tests/src/JIT/config/benchmark+roslyn/benchmark+roslyn.csproj | 3 | ||||
-rw-r--r-- | tests/src/JIT/config/benchmark/benchmark.csproj | 3 | ||||
-rw-r--r-- | tests/src/dirs.proj | 1 | ||||
-rw-r--r-- | tests/src/performance/performance.csproj | 3 | ||||
-rw-r--r-- | tests/src/tracing/common/common.csproj | 2 | ||||
-rw-r--r-- | tests/src/tracing/eventpipesmoke/EventPipeSmoke.cs | 2 | ||||
-rw-r--r-- | tests/src/tracing/eventpipesmoke/eventpipesmoke.csproj | 2 | ||||
-rw-r--r-- | tests/src/tracing/eventpipetrace/EventPipeTrace.cs | 110 | ||||
-rw-r--r-- | tests/src/tracing/eventpipetrace/eventpipetrace.csproj | 30 | ||||
-rw-r--r-- | tests/src/tracing/eventsourcesmoke/EventSourceSmoke.cs | 2 | ||||
-rw-r--r-- | tests/src/tracing/eventsourcetrace/EventSourceTrace.cs | 131 | ||||
-rw-r--r-- | tests/src/tracing/eventsourcetrace/eventsourcetrace.csproj | 30 |
13 files changed, 314 insertions, 8 deletions
diff --git a/tests/runtest.proj b/tests/runtest.proj index 9c12e275d7..3ab7b9f708 100644 --- a/tests/runtest.proj +++ b/tests/runtest.proj @@ -12,7 +12,6 @@ <ItemGroup> <DisabledTestDir Include="Common" /> - <DisabledTestDir Include="tracing" /> <_SkipTestDir Include="@(DisabledTestDir)" /> </ItemGroup> @@ -404,4 +403,4 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). <Target Name="Clean"> <RemoveDir Condition=" '$(BuildWrappers)'=='true'" Directories="$(XunitWrapperGeneratedCSDirBase);$(XunitWrapperOutputIntermediatedDirBase)" ContinueOnError="WarnAndContinue" /> </Target> -</Project>
\ No newline at end of file +</Project> diff --git a/tests/src/JIT/config/benchmark+roslyn/benchmark+roslyn.csproj b/tests/src/JIT/config/benchmark+roslyn/benchmark+roslyn.csproj index 77cba12414..563a9a7087 100644 --- a/tests/src/JIT/config/benchmark+roslyn/benchmark+roslyn.csproj +++ b/tests/src/JIT/config/benchmark+roslyn/benchmark+roslyn.csproj @@ -67,6 +67,9 @@ <PackageReference Include="System.Threading"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> + <PackageReference Include="System.Threading.Thread"> + <Version>4.4.0-beta-24913-02</Version> + </PackageReference> <PackageReference Include="System.Threading.Tasks"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> diff --git a/tests/src/JIT/config/benchmark/benchmark.csproj b/tests/src/JIT/config/benchmark/benchmark.csproj index 5ade686330..4d49fdee3e 100644 --- a/tests/src/JIT/config/benchmark/benchmark.csproj +++ b/tests/src/JIT/config/benchmark/benchmark.csproj @@ -76,6 +76,9 @@ <PackageReference Include="System.Threading"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> + <PackageReference Include="System.Threading.Thread"> + <Version>4.4.0-beta-24913-02</Version> + </PackageReference> <PackageReference Include="System.Threading.Tasks"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> diff --git a/tests/src/dirs.proj b/tests/src/dirs.proj index 471598d82d..543935f752 100644 --- a/tests/src/dirs.proj +++ b/tests/src/dirs.proj @@ -30,6 +30,7 @@ <DisabledProjects Include="Performance\performance.csproj" /> <DisabledProjects Include="Loader\classloader\generics\regressions\DD117522\Test.csproj" /> <DisabledProjects Include="Loader\classloader\generics\GenericMethods\VSW491668.csproj" /> <!-- issue 5501 --> + <DisabledProjects Include="tracing\eventsource*" /> </ItemGroup> <ItemGroup> diff --git a/tests/src/performance/performance.csproj b/tests/src/performance/performance.csproj index 8c2cd3c7de..94caf35ac2 100644 --- a/tests/src/performance/performance.csproj +++ b/tests/src/performance/performance.csproj @@ -70,6 +70,9 @@ <PackageReference Include="System.Threading"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> + <PackageReference Include="System.Threading.Thread"> + <Version>4.4.0-beta-24913-02</Version> + </PackageReference> <PackageReference Include="System.Threading.Tasks"> <Version>4.4.0-beta-24913-02</Version> </PackageReference> diff --git a/tests/src/tracing/common/common.csproj b/tests/src/tracing/common/common.csproj index ca34349b16..ca10e7ffe2 100644 --- a/tests/src/tracing/common/common.csproj +++ b/tests/src/tracing/common/common.csproj @@ -12,7 +12,7 @@ <CLRTestKind>BuildOnly</CLRTestKind> <DefineConstants>$(DefineConstants);STATIC</DefineConstants> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <CLRTestPriority>1</CLRTestPriority> + <CLRTestPriority>0</CLRTestPriority> </PropertyGroup> <!-- Default configurations to help VS understand the configurations --> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> diff --git a/tests/src/tracing/eventpipesmoke/EventPipeSmoke.cs b/tests/src/tracing/eventpipesmoke/EventPipeSmoke.cs index c12893d38a..2fa8786fd2 100644 --- a/tests/src/tracing/eventpipesmoke/EventPipeSmoke.cs +++ b/tests/src/tracing/eventpipesmoke/EventPipeSmoke.cs @@ -1,7 +1,5 @@ using System; -using System.Threading.Tasks; using System.IO; - using Tracing.Tests.Common; namespace Tracing.Tests diff --git a/tests/src/tracing/eventpipesmoke/eventpipesmoke.csproj b/tests/src/tracing/eventpipesmoke/eventpipesmoke.csproj index 8ba6eb5c4a..4a1cd0c0ce 100644 --- a/tests/src/tracing/eventpipesmoke/eventpipesmoke.csproj +++ b/tests/src/tracing/eventpipesmoke/eventpipesmoke.csproj @@ -12,7 +12,7 @@ <CLRTestKind>BuildAndRun</CLRTestKind> <DefineConstants>$(DefineConstants);STATIC</DefineConstants> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <CLRTestPriority>1</CLRTestPriority> + <CLRTestPriority>0</CLRTestPriority> </PropertyGroup> <!-- Default configurations to help VS understand the configurations --> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"></PropertyGroup> diff --git a/tests/src/tracing/eventpipetrace/EventPipeTrace.cs b/tests/src/tracing/eventpipetrace/EventPipeTrace.cs new file mode 100644 index 0000000000..af0c619ef9 --- /dev/null +++ b/tests/src/tracing/eventpipetrace/EventPipeTrace.cs @@ -0,0 +1,110 @@ +using System; +using System.IO; +using Tracing.Tests.Common; +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Parsers.Clr; + +namespace Tracing.Tests +{ + class EventPipeTrace + { + private static int allocIterations = 10000; + private static int gcIterations = 10; + + static void AssertEqual<T>(T left, T right) where T : IEquatable<T> + { + if (left.Equals(right) == false) + { + throw new Exception(string.Format("Values were not equal! {0} and {1}", left, right)); + } + } + + static int Main(string[] args) + { + bool pass = true; + bool keepOutput = false; + + // Use the first arg as an output filename if there is one + string outputFilename = null; + if (args.Length >= 1) { + outputFilename = args[0]; + keepOutput = true; + } + else { + outputFilename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".netperf"; + } + + try + { + Console.WriteLine("\tStart: Enable tracing."); + TraceControl.EnableDefault(outputFilename); + Console.WriteLine("\tEnd: Enable tracing.\n"); + + Console.WriteLine("\tStart: Generating CLR events"); + // Allocate for allocIterations iterations. + for(int i=0; i<allocIterations; i++) + { + GC.KeepAlive(new object()); + } + // GC gcIternation times + for(int i=0; i<gcIterations; i++) + { + GC.Collect(); + } + Console.WriteLine("\tEnd: Generating CLR Events\n"); + + Console.WriteLine("\tStart: Disable tracing."); + TraceControl.Disable(); + Console.WriteLine("\tEnd: Disable tracing.\n"); + + Console.WriteLine("\tStart: Processing events from file."); + int allocTickCount = 0; + int gcTriggerCount = 0; + using (var trace = TraceEventDispatcher.GetDispatcherFromFileName(outputFilename)) + { + trace.Clr.GCAllocationTick += delegate(GCAllocationTickTraceData data) + { + allocTickCount += 1; + + // Some basic integrity checks + // AssertEqual(data.TypeName, "System.Object"); https://github.com/Microsoft/perfview/issues/470 + AssertEqual(data.AllocationKind.ToString(), GCAllocationKind.Small.ToString()); + AssertEqual(data.ProviderName, "Microsoft-Windows-DotNETRuntime"); + AssertEqual(data.EventName, "GC/AllocationTick"); + }; + trace.Clr.GCTriggered += delegate(GCTriggeredTraceData data) + { + gcTriggerCount += 1; + + // Some basic integrity checks + AssertEqual(data.Reason.ToString(), GCReason.Induced.ToString()); + AssertEqual(data.ProviderName, "Microsoft-Windows-DotNETRuntime"); + AssertEqual(data.EventName, "GC/Triggered"); + }; + + trace.Process(); + } + Console.WriteLine("\tEnd: Processing events from file.\n"); + + Console.WriteLine("\tProcessed {0} GCAllocationTick events", allocTickCount); + Console.WriteLine("\tProcessed {0} GCTriggered events", gcTriggerCount); + + pass &= allocTickCount > 0; + pass &= gcTriggerCount == gcIterations; + } + finally { + if (keepOutput) + { + Console.WriteLine("\n\tOutput file: {0}", outputFilename); + } + else + { + System.IO.File.Delete(outputFilename); + } + } + + return pass ? 100 : 0; + } + } +} diff --git a/tests/src/tracing/eventpipetrace/eventpipetrace.csproj b/tests/src/tracing/eventpipetrace/eventpipetrace.csproj new file mode 100644 index 0000000000..ec7305abe9 --- /dev/null +++ b/tests/src/tracing/eventpipetrace/eventpipetrace.csproj @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{8E3244CB-407F-4142-BAAB-E7A55901A5FA}</ProjectGuid> + <OutputType>Exe</OutputType> + <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir> + <CLRTestKind>BuildAndRun</CLRTestKind> + <DefineConstants>$(DefineConstants);STATIC</DefineConstants> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <CLRTestPriority>0</CLRTestPriority> + </PropertyGroup> + <!-- Default configurations to help VS understand the configurations --> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"></PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"></PropertyGroup> + <ItemGroup> + <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"> + <Visible>False</Visible> + </CodeAnalysisDependentAssemblyPaths> + </ItemGroup> + <ItemGroup> + <Compile Include="EventPipeTrace.cs" /> + <ProjectReference Include="../common/common.csproj" /> + </ItemGroup> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" /> +</Project>
\ No newline at end of file diff --git a/tests/src/tracing/eventsourcesmoke/EventSourceSmoke.cs b/tests/src/tracing/eventsourcesmoke/EventSourceSmoke.cs index b7d321dde6..ddd5192e18 100644 --- a/tests/src/tracing/eventsourcesmoke/EventSourceSmoke.cs +++ b/tests/src/tracing/eventsourcesmoke/EventSourceSmoke.cs @@ -1,8 +1,6 @@ using System; -using System.Threading.Tasks; using System.IO; using System.Diagnostics.Tracing; - using Tracing.Tests.Common; namespace Tracing.Tests diff --git a/tests/src/tracing/eventsourcetrace/EventSourceTrace.cs b/tests/src/tracing/eventsourcetrace/EventSourceTrace.cs new file mode 100644 index 0000000000..57a53183ed --- /dev/null +++ b/tests/src/tracing/eventsourcetrace/EventSourceTrace.cs @@ -0,0 +1,131 @@ +using System; +using System.IO; +using System.Collections.Generic; +using Tracing.Tests.Common; +using System.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Parsers.Clr; + +namespace Tracing.Tests +{ + [EventSource(Name = "SimpleEventSource")] + class SimpleEventSource : EventSource + { + public SimpleEventSource() : base(true) { } + + [Event(1)] + internal void MathResult(int x, int y, int z, string formula) { this.WriteEvent(1, x, y, z, formula); } + } + + class EventSourceTrace + { + private static int messageIterations = 10000; + + public static TraceConfiguration GetConfig(EventSource eventSource, string outputFile="default.netperf") + { + // Setup the configuration values. + uint circularBufferMB = 1024; // 1 GB + uint level = 5;//(uint)EventLevel.Informational; + TimeSpan profSampleDelay = TimeSpan.FromMilliseconds(1); + + // Create a new instance of EventPipeConfiguration. + TraceConfiguration config = new TraceConfiguration(outputFile, circularBufferMB); + // Setup the provider values. + // Public provider. + string providerName = eventSource.Name; + UInt64 keywords = 0xffffffffffffffff; + + // Enable the provider. + config.EnableProvider(providerName, keywords, level); + + // Set the sampling rate. + config.SetSamplingRate(profSampleDelay); + + return config; + } + + static int Main(string[] args) + { + bool pass = true; + bool keepOutput = false; + + // Use the first arg as an output filename if there is one + string outputFilename = null; + if (args.Length >= 1) { + outputFilename = args[0]; + keepOutput = true; + } + else { + outputFilename = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".netperf"; + } + + SimpleEventSource eventSource = new SimpleEventSource(); + + try + { + Console.WriteLine("\tStart: Enable tracing."); + TraceControl.Enable(GetConfig(eventSource, outputFilename)); + Console.WriteLine("\tEnd: Enable tracing.\n"); + + Console.WriteLine("\tStart: Messaging."); + // Send messages + // Use random numbers and addition as a simple, human readble checksum + Random generator = new Random(); + for(int i=0; i<messageIterations; i++) + { + int x = generator.Next(1,1000); + int y = generator.Next(1,1000); + string formula = String.Format("{0} + {1} = {2}", x, y, x+y); + + eventSource.MathResult(x, y, x+y, formula); + } + Console.WriteLine("\tEnd: Messaging.\n"); + + Console.WriteLine("\tStart: Disable tracing."); + TraceControl.Disable(); + Console.WriteLine("\tEnd: Disable tracing.\n"); + + Console.WriteLine("\tStart: Processing events from file."); + int msgCount = 0; + using (var trace = TraceEventDispatcher.GetDispatcherFromFileName(outputFilename)) + { + var names = new HashSet<string>(); + + trace.Dynamic.All += delegate(TraceEvent data) + { + if (!names.Contains(data.ProviderName)) + { + Console.WriteLine("\t{0}", data.ProviderName); + names.Add(data.ProviderName); + } + + if (data.ProviderName == "SimpleEventSource") + { + msgCount += 1; + } + }; + + trace.Process(); + } + Console.WriteLine("\tEnd: Processing events from file.\n"); + + Console.WriteLine("\tProcessed {0} events from EventSource", msgCount); + + pass &= msgCount == messageIterations; + } + finally { + if (keepOutput) + { + Console.WriteLine("\n\tOutput file: {0}", outputFilename); + } + else + { + System.IO.File.Delete(outputFilename); + } + } + + return pass ? 100 : 0; + } + } +} diff --git a/tests/src/tracing/eventsourcetrace/eventsourcetrace.csproj b/tests/src/tracing/eventsourcetrace/eventsourcetrace.csproj new file mode 100644 index 0000000000..833146ec64 --- /dev/null +++ b/tests/src/tracing/eventsourcetrace/eventsourcetrace.csproj @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{8E3244CB-407F-4142-BAAB-E7A55901A5FA}</ProjectGuid> + <OutputType>Exe</OutputType> + <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir> + <CLRTestKind>BuildAndRun</CLRTestKind> + <DefineConstants>$(DefineConstants);STATIC</DefineConstants> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <CLRTestPriority>1</CLRTestPriority> + </PropertyGroup> + <!-- Default configurations to help VS understand the configurations --> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"></PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'"></PropertyGroup> + <ItemGroup> + <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies"> + <Visible>False</Visible> + </CodeAnalysisDependentAssemblyPaths> + </ItemGroup> + <ItemGroup> + <Compile Include="EventSourceTrace.cs" /> + <ProjectReference Include="../common/common.csproj" /> + </ItemGroup> + <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" /> +</Project>
\ No newline at end of file |