private static void HandleProtocolVersionMessage(Message message, ReportingChannel channel) { var version = message.Payload?.ToObject <ProtocolVersionMessage>().Version; var supportedVersion = 1; TestHostTracing.Source.TraceInformation( "[ReportingChannel]: Requested Version: {0} - Using Version: {1}", version, supportedVersion); channel.Send(new Message() { MessageType = "ProtocolVersion", Payload = JToken.FromObject(new ProtocolVersionMessage() { Version = supportedVersion, }), }); }
private static void ExecuteRunnerCommand(string testRunner, ReportingChannel channel, List <string> commandArgs) { var result = Command.CreateDotNet(GetCommandName(testRunner), commandArgs, new NuGetFramework("DNXCore", Version.Parse("5.0"))) .OnOutputLine(line => { try { channel.Send(JsonConvert.DeserializeObject <Message>(line)); } catch { TestHostTracing.Source.TraceInformation(line); } }) .Execute(); if (result.ExitCode != 0) { channel.SendError($"{GetCommandName(testRunner)} returned '{result.ExitCode}'."); } }
private static void HandleTestDiscoveryStartMessage(string testRunner, ReportingChannel channel, ProjectContext projectContext, string configuration) { TestHostTracing.Source.TraceInformation("Starting Discovery"); var commandArgs = new List <string> { projectContext.GetOutputPaths(configuration).CompilationFiles.Assembly }; commandArgs.AddRange(new[] { "--list", "--designtime" }); ExecuteRunnerCommand(testRunner, channel, commandArgs); channel.Send(new Message() { MessageType = "TestDiscovery.Response", }); TestHostTracing.Source.TraceInformation("Completed Discovery"); }
private static void ExecuteRunnerCommand(string testRunner, ReportingChannel channel, List<string> commandArgs) { var result = Command.Create(GetCommandName(testRunner), commandArgs, new NuGetFramework("DNXCore", Version.Parse("5.0"))) .OnOutputLine(line => { try { channel.Send(JsonConvert.DeserializeObject<Message>(line)); } catch { TestHostTracing.Source.TraceInformation(line); } }) .Execute(); if (result.ExitCode != 0) { channel.SendError($"{GetCommandName(testRunner)} returned '{result.ExitCode}'."); } }
private static void HandleUnknownMessage(Message message, ReportingChannel channel) { var error = string.Format("Unexpected message type: '{0}'.", message.MessageType); TestHostTracing.Source.TraceEvent(TraceEventType.Error, 0, error); channel.SendError(error); throw new InvalidOperationException(error); }
private static void HandleTestExecutionStartMessage(string testRunner, Message message, ReportingChannel channel, ProjectContext projectContext) { TestHostTracing.Source.TraceInformation("Starting Execution"); var commandArgs = new List<string> { projectContext.GetAssemblyPath(Constants.DefaultConfiguration) }; commandArgs.AddRange(new[] { "--designtime" }); var tests = message.Payload?.ToObject<RunTestsMessage>().Tests; if (tests != null) { foreach (var test in tests) { commandArgs.Add("--test"); commandArgs.Add(test); } } ExecuteRunnerCommand(testRunner, channel, commandArgs); channel.Send(new Message() { MessageType = "TestExecution.Response", }); TestHostTracing.Source.TraceInformation("Completed Execution"); }
private static void HandleTestDiscoveryStartMessage(string testRunner, ReportingChannel channel, ProjectContext projectContext) { TestHostTracing.Source.TraceInformation("Starting Discovery"); var commandArgs = new List<string> { projectContext.GetAssemblyPath(Constants.DefaultConfiguration) }; commandArgs.AddRange(new[] { "--list", "--designtime" }); ExecuteRunnerCommand(testRunner, channel, commandArgs); channel.Send(new Message() { MessageType = "TestDiscovery.Response", }); TestHostTracing.Source.TraceInformation("Completed Discovery"); }
private static void HandleProtocolVersionMessage(Message message, ReportingChannel channel) { var version = message.Payload?.ToObject<ProtocolVersionMessage>().Version; var supportedVersion = 1; TestHostTracing.Source.TraceInformation( "[ReportingChannel]: Requested Version: {0} - Using Version: {1}", version, supportedVersion); channel.Send(new Message() { MessageType = "ProtocolVersion", Payload = JToken.FromObject(new ProtocolVersionMessage() { Version = supportedVersion, }), }); }
private static void HandleDesignTimeMessages(ProjectContext projectContext, string testRunner, ReportingChannel channel) { try { var message = channel.ReadQueue.Take(); if (message.MessageType == "ProtocolVersion") { HandleProtocolVersionMessage(message, channel); // Take the next message, which should be the command to execute. message = channel.ReadQueue.Take(); } if (message.MessageType == "TestDiscovery.Start") { HandleTestDiscoveryStartMessage(testRunner, channel, projectContext); } else if (message.MessageType == "TestExecution.Start") { HandleTestExecutionStartMessage(testRunner, message, channel, projectContext); } else { HandleUnknownMessage(message, channel); } } catch (Exception ex) { channel.SendError(ex); } }
private static void HandleTestExecutionStartMessage(string testRunner, Message message, ReportingChannel channel, ProjectContext projectContext, string configuration) { TestHostTracing.Source.TraceInformation("Starting Execution"); var commandArgs = new List <string> { projectContext.GetOutputPaths(configuration).CompilationFiles.Assembly }; commandArgs.AddRange(new[] { "--designtime" }); var tests = message.Payload?.ToObject <RunTestsMessage>().Tests; if (tests != null) { foreach (var test in tests) { commandArgs.Add("--test"); commandArgs.Add(test); } } ExecuteRunnerCommand(testRunner, channel, commandArgs); channel.Send(new Message() { MessageType = "TestExecution.Response", }); TestHostTracing.Source.TraceInformation("Completed Execution"); }
private static void HandleDesignTimeMessages(ProjectContext projectContext, string testRunner, ReportingChannel channel, string configuration) { try { var message = channel.ReadQueue.Take(); if (message.MessageType == "ProtocolVersion") { HandleProtocolVersionMessage(message, channel); // Take the next message, which should be the command to execute. message = channel.ReadQueue.Take(); } if (message.MessageType == "TestDiscovery.Start") { HandleTestDiscoveryStartMessage(testRunner, channel, projectContext, configuration); } else if (message.MessageType == "TestExecution.Start") { HandleTestExecutionStartMessage(testRunner, message, channel, projectContext, configuration); } else { HandleUnknownMessage(message, channel); } } catch (Exception ex) { channel.SendError(ex); } }
public IReportingChannel CreateAdapterChannel(int port) { return(ReportingChannel.ListenOn(port)); }