public async Task Kernel_can_be_interacted_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel() }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var x = 123;"), 1); writer.WriteMessage(new SubmitCode("x"), 2); writer.WriteMessage(new Quit(), 3); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); this.Assent(text, _configuration); }
public async Task Kernel_client_surfaces_code_submission_Errors() { var kernel = new CSharpKernel(); var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var a = 12"), 1); writer.WriteMessage(new Quit(), 2); writer.Flush(); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .Select(JObject.Parse).ToList(); events.Should() .Contain(e => e["eventType"].Value <string>() == nameof(IncompleteCodeSubmissionReceived)) .And .Contain(e => e["eventType"].Value <string>() == nameof(CommandFailed)); }
public async Task Kernel_can_pound_r_nuget_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel().UseNugetDirective(), }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"#r ""nuget:Microsoft.Spark, 0.4.0"""), 1); writer.WriteMessage(new Quit(), 2); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) .Select(JObject.Parse).ToList(); events.Should().Contain(e => e["eventType"].Value <string>() == nameof(NuGetPackageAdded)); }
public async Task Kernel_can_be_interacted_using_kernel_client() { var kernel = new CompositeKernel { new CSharpKernel() }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode(@"var x = 123;")); writer.WriteMessage(new SubmitCode("x")); writer.WriteMessage(new Quit()); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(Environment.NewLine) .Select(JsonConvert.DeserializeObject <StreamKernelEvent>); events.Should().Contain(e => e.EventType == "ValueProduced"); }
public static async Task <int> Do( IKernel kernel, IConsole console) { var client = new KernelStreamClient(kernel, Console.In, Console.Out); await client.Start(); return(0); }
public static async Task <int> Do( StartupOptions startupOptions, IKernel kernel, IConsole console) { Program.StartToolLogging(startupOptions); var client = new KernelStreamClient(kernel, Console.In, Console.Out); await client.Start(); return(0); }
public async Task Kernel_can_be_interacted_using_kernel_client() { var receivedOnFakeRepl = new List <IKernelCommand>(); var kernel = new CompositeKernel { new CSharpKernel(), new FakeKernel("fake") { Handle = context => { receivedOnFakeRepl.Add(context.Command); return(Task.CompletedTask); } } }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteMessage(new SubmitCode("#kernel csharp")); writer.WriteMessage(new SubmitCode(@"var x = 123;")); writer.WriteMessage(new SubmitCode("x")); writer.WriteMessage(new Quit()); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); var events = text.Split(Environment.NewLine) .Select(e => JsonConvert.DeserializeObject <StreamKernelEvent>(e)); events.Should().Contain(e => e.EventType == "ValueProduced"); }
public async Task Kernel_can_be_interacted_using_kernel_client() { await _kernelClient.Start(); var gate = _io.OutputStream .TakeUntilCommandHandled(); _io.WriteToInput(new SubmitCode(@"var x = 123;"), 0); await gate; var events = _events .Select(e => e.ToString(Formatting.None)); var expectedEvents = new List <string> { IOStreams.ToStreamKernelEvent(new CommandHandled(new SubmitCode(@"var x = 123;")), 0).Serialize(), }; events.Should() .ContainInOrder(expectedEvents); }
public async Task Kernel_client_surfaces_json_errors() { var kernel = new CompositeKernel { new CSharpKernel(), new FakeKernel("fake") { Handle = context => Task.CompletedTask } }; var input = new MemoryStream(); var writer = new StreamWriter(input, Encoding.UTF8); writer.WriteLine("{ hello"); writer.WriteMessage(new Quit(), 2); writer.Flush(); input.Position = 0; var output = new MemoryStream(); var streamKernel = new KernelStreamClient(kernel, new StreamReader(input), new StreamWriter(output)); var task = streamKernel.Start(); await task; output.Position = 0; var reader = new StreamReader(output, Encoding.UTF8); var text = reader.ReadToEnd(); this.Assent(text, _configuration); }
public async Task Kernel_can_be_interacted_using_kernel_client() { await _kernelClient.Start(); _io.WriteToInput(new SubmitCode(@"var x = 123;"), 0); var events = _events .Where(e => e["eventType"].Value <string>() == nameof(CommandHandled)) .Take(1) .Timeout(20.Seconds()) .Select(e => e.ToString(Formatting.None)) .ToEnumerable() .ToList(); var expectedEvents = new List <string> { IOStreams.ToStreamKernelEvent(new CommandHandled(new SubmitCode(@"var x = 123;")), 0).Serialize(), }; events.Should() .ContainInOrder(expectedEvents); }