Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathPerfUnitTest.cs
More file actions
Latest commit
93 lines (74 loc) · 3.69 KB
/
Copy pathPerfUnitTest.cs
File metadata and controls
93 lines (74 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
usingSystem;
usingSystem.IO;
usingSystem.Linq;
usingSystem.Threading;
usingMicrosoft.Performance.SDK;
usingMicrosoft.Performance.SDK.Processing;
usingMicrosoft.VisualStudio.TestTools.UnitTesting;
usingMoq;
usingPerfDataExtensions.Tables;
usingUnitTestCommon;
namespacePerfUnitTest
{
[TestClass]
publicclassPerfUnitTest
{
[TestMethod]
publicvoidProcessPerfCpuClock()
{
// Input data
string[]perfData={@"..\..\..\..\TestData\Perf\perf.data.txt"};
varperfDataPath=newFileInfo(perfData[0]);
Assert.IsTrue(perfDataPath.Exists);
varperfDataPathFullPath=perfDataPath.FullName;
vardatasource=newMock<IDataSource>();
datasource.Setup(ds =>ds.Uri).Returns(newUri(perfDataPathFullPath));
// Env
varappEnv=newMock<IApplicationEnvironment>();
varserializer=newMock<ITableConfigurationsSerializer>();
appEnv.Setup(ae =>ae.Serializer).Returns(serializer.Object);
varprocessorEnv=newMock<IProcessorEnvironment>();
// DataSource and Processor
varperfDataProcessingSource=newPerfDataProcessingSource.PerfDataProcessingSource();
perfDataProcessingSource.SetApplicationEnvironment(appEnv.Object);
varperfDataProcessor=perfDataProcessingSource.CreateProcessor(datasource.Object,processorEnv.Object,ProcessorOptions.Default);
// Enable table
varenableSuccess=perfDataProcessor.TryEnableTable(PerfTxtCpuSamplingTable.TableDescriptor);
Assert.IsTrue(enableSuccess);
varperfDataProcessorTask=perfDataProcessor.ProcessAsync(newProgress(),newCancellationToken());
perfDataProcessorTask.GetAwaiter().GetResult();
Assert.IsTrue(perfDataProcessorTask.IsCompleted&&!perfDataProcessorTask.IsFaulted);
vardataSourceInfo=perfDataProcessor.GetDataSourceInfo();
Assert.IsTrue(dataSourceInfo.FirstEventTimestampNanoseconds>=0&&dataSourceInfo.EndTimestampNanoseconds>=0);
// Build table
vartableBuilder=newTableBuilder();
perfDataProcessor.BuildTable(PerfTxtCpuSamplingTable.TableDescriptor,tableBuilder);
vartbr=tableBuilder.TableBuilderWithRowCount;
TableBuilderTests.TestRowTypesMatchColTypes(tbr,0);
varrowNumber=2;
// Sample #
varsampleNumber=(long)tbr.Columns.ElementAt(0).Project(rowNumber);
Assert.IsTrue(sampleNumber==2);
// Timestamp
varts=(Timestamp)tbr.Columns.ElementAt(1).Project(rowNumber);
Assert.IsTrue(ts==newTimestamp(27000));
// IP
varip=(string)tbr.Columns.ElementAt(2).Project(rowNumber);
Assert.IsTrue(ip=="is_prime");
// IPModule
varipModule=(string)tbr.Columns.ElementAt(3).Project(rowNumber);
Assert.IsTrue(ipModule=="stress-ng");
// Process
varprocess=(string)tbr.Columns.ElementAt(7).Project(rowNumber);
// Assert.IsTrue(process == "Process stress-ng-cpu (7499)"); // TODO - Figure this out - some sort of race condition not present in UI. Sometimes this populates, sometimes not
// CPU
varcpu=(int)tbr.Columns.ElementAt(13).Project(rowNumber);
Assert.IsTrue(cpu==4);
// Callstack
varcallstack=(string[])tbr.Columns.ElementAt(14).Project(rowNumber);
Assert.IsTrue(callstack[0]=="stress-ng!is_prime");
}
}
}