Beispiel #1
0
        public static Task <int> Main(string[] args)
        {
            var parser = new CommandLineBuilder()
                         .AddCommand(ReportCommandHandler.ReportCommand())
                         .AddCommand(ProcessStatusCommandHandler.ProcessStatusCommand("Lists the dotnet processes that traces can be collected"))
                         .UseDefaults()
                         .Build();

            return(parser.InvokeAsync(args));
        }
Beispiel #2
0
        public async Task ReportsStacksCorrectly(string traceeFramework)
        {
            Command reportCommand = ReportCommandHandler.ReportCommand();

            var console = new TestConsole();
            var parser  = new Parser(reportCommand);

            using TestRunner runner = new TestRunner(CommonHelper.GetTraceePathWithArgs(traceeName: "StackTracee", targetFramework: traceeFramework), output);
            runner.Start();

            // Wait for tracee to get to readkey call
            await Task.Delay(TimeSpan.FromSeconds(1));

            await parser.InvokeAsync($"report -p {runner.Pid}", console);

            string report = console.Out.ToString();

            output.WriteLine($"REPORT_START\n{report}REPORT_END");
            Assert.True(!string.IsNullOrEmpty(report));


            string[] correctStackParts = correctStack.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries);
            string[] stackParts        = report.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries);

            int partIdx = 0;

            while (stackParts[partIdx].StartsWith("#") || stackParts[partIdx].StartsWith("Thread") || stackParts[partIdx].StartsWith("Found"))
            {
                partIdx++;
            }

            Assert.True(stackParts.Length - partIdx == correctStackParts.Length, $"{stackParts.Length - partIdx} != {correctStackParts.Length}");

            for (int i = partIdx, j = 0; i < stackParts.Length && j < correctStackParts.Length; i++, j++)
            {
                Assert.True(correctStackParts[j] == stackParts[i], $"{correctStackParts[j]} != {stackParts[i]}");
            }
        }