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));
        }
Beispiel #4
0
        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");
        }
Beispiel #5
0
        public static async Task <int> Do(
            IKernel kernel,
            IConsole console)
        {
            var client = new KernelStreamClient(kernel, Console.In, Console.Out);
            await client.Start();

            return(0);
        }
Beispiel #6
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);
        }
Beispiel #7
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");
        }
Beispiel #8
0
        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);
        }
Beispiel #10
0
        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);
        }