提交 9e4efe9f 编写于 作者: B Balaji Soundrarajan

Merge pull request #10754 from basoundr/SupportTestsProvidingScenarios

This change enables the test csx files to provide the scenarios that needs to be monitored within a test execution
......@@ -41,13 +41,22 @@ foreach (dynamic test in testInstances)
for (int i = 0; i < iterations; i++)
{
traceManager.StartScenarios();
traceManager.Start();
traceManager.StartScenario(test.Name + i, test.MeasuredProc);
traceManager.StartEvent();
test.Test();
traceManager.EndEvent();
traceManager.EndScenario();
traceManager.StartScenarios();
if (test.ProvidesScenarios)
{
traceManager.WriteScenarios(test.GetScenarios());
test.Test();
}
else
{
traceManager.StartScenario(test.Name + i, test.MeasuredProc);
traceManager.StartEvent();
test.Test();
traceManager.EndEvent();
traceManager.EndScenario();
}
traceManager.EndScenarios();
traceManager.WriteScenariosFileToDisk();
......
......@@ -30,6 +30,11 @@ class CSharpCompilerTest: PerfTest
public override int Iterations => 2;
public override string Name => "csharp " + _rspFile;
public override string MeasuredProc => "csc";
public override bool ProvidesScenarios => false;
public override string[] GetScenarios()
{
throw new System.NotImplementedException();
}
}
TestThisPlease(
......
......@@ -24,6 +24,11 @@ class HelloWorldTest: PerfTest
public override int Iterations => 2;
public override string Name => "hello world";
public override string MeasuredProc => "csc";
public override bool ProvidesScenarios => false;
public override string[] GetScenarios()
{
throw new System.NotImplementedException();
}
}
TestThisPlease(new HelloWorldTest());
......@@ -51,7 +51,7 @@ public class ScenarioGenerator
public void AddStartEvent(int absoluteInstance)
{
WriteToBuffer($@"<from providerGuid=""{KernelProviderGuid}"" absoluteInstance=""{absoluteInstance}"" process=""csc"" eventName = ""Process/Start""/>");
WriteToBuffer($@"<from providerGuid=""{KernelProviderGuid}"" absoluteInstance=""{absoluteInstance}"" process=""csc"" eventName=""Process/Start""/>");
}
public void AddEndEvent()
......@@ -63,6 +63,11 @@ public class ScenarioGenerator
{
WriteToBuffer($@"<!-- {comment} -->");
}
public void AddLine(string line)
{
WriteToBuffer(line);
}
public void WriteToDisk()
{
......
......@@ -138,6 +138,8 @@ abstract class PerfTest: RelativeDirectory {
Log(description + ": " + value.ToString());
}
public abstract bool ProvidesScenarios { get; }
public abstract string[] GetScenarios();
public abstract void Setup();
public abstract void Test();
public abstract int Iterations { get; }
......
......@@ -21,6 +21,7 @@ interface ITraceManager
void StartScenario(string scenarioName, string processName);
void StartScenarios();
void Stop();
void WriteScenarios(string[] scenarios);
void WriteScenariosFileToDisk();
}
......@@ -106,6 +107,10 @@ class NoOpTraceManager : ITraceManager
{
}
public void WriteScenarios(string[] scenarios)
{
}
public void WriteScenariosFileToDisk()
{
}
......@@ -209,6 +214,14 @@ class TraceManager: ITraceManager
{
_scenarioGenerator.AddScenariosFileEnd();
}
public void WriteScenarios(string[] scenarios)
{
foreach (var line in scenarios)
{
_scenarioGenerator.AddLine(line);
}
}
public void WriteScenariosFileToDisk()
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册