/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Test/Perf/Utilities/ScenarioGenerator.cs
83 строки
2 KB
dotnet-maestro[bot]
[main] Update dependencies from dotnet/command-line-api (#71567)
12 фев 2024, 23:59
12 фев 2024, 23:59
f91c232
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System.Collections.Generic; using System.IO; using static Roslyn.Test.Performance.Utilities.TestUtilities; namespace Roslyn.Test.Performance.Utilities { public class ScenarioGenerator { private const string KernelProviderGuid = @"{9e814aad-3204-11d2-9a82-006008a86939}"; private readonly string _fullPath; private readonly List<string> _buffer; public ScenarioGenerator() { _fullPath = Path.Combine(TestUtilities.GetCPCDirectoryPath(), "scenarios.xml"); _buffer = []; } public void AddScenariosFileStart() { WriteToBuffer(@"<?xml version=""1.0"" encoding=""utf-8"" ?>"); WriteToBuffer(@"<scenarios>"); } public void AddScenariosFileEnd() { WriteToBuffer(@"</scenarios>"); } public void AddStartScenario(string scenarioName, string processName) { WriteToBuffer($@"<scenario name=""{scenarioName}"" process=""{processName}"">"); } public void AddEndScenario() { WriteToBuffer(@"</scenario>"); } public void AddStartEvent(int absoluteInstance) { WriteToBuffer($@"<from providerGuid=""{KernelProviderGuid}"" absoluteInstance=""{absoluteInstance}"" process=""csc"" eventName = ""Process/Start""/>"); } public void AddEndEvent() { WriteToBuffer($@"<to providerGuid=""{KernelProviderGuid}"" absoluteInstance=""1"" process=""csc"" eventName=""Process/Stop""/>"); } public void AddComment(string comment) { WriteToBuffer($@"<!-- {comment} -->"); } public void AddLine(string line) { WriteToBuffer(line); } public void WriteToDisk() { if (File.Exists(_fullPath)) { Log($"deleting {_fullPath}"); File.Delete(_fullPath); } Log($"Writing scenarios.xml to {_fullPath}"); File.WriteAllLines(_fullPath, _buffer); } private void WriteToBuffer(string content) { _buffer.Add(content); } } }