public async Task extensions_can_access_connections_to_create_proxies() { using var kernel = CreateCompositeKernel(); using var remoteKernel = new FakeRemoteKernel(); var receiver = new MultiplexingKernelCommandAndEventReceiver(remoteKernel.Receiver); using var host = new KernelHost(kernel, remoteKernel.Sender, receiver); var _ = host.ConnectAsync(); var ext = new ConfiguringExtension(); await ext.OnLoadAsync(kernel); var submitCode = new SubmitCode( @"#!javascript test for remote kernel"); var result = await kernel.SendAsync(submitCode); var kernelEvents = result.KernelEvents.ToSubscribedList(); kernelEvents.Should().ContainSingle <CommandSucceeded>() .Which .Command .Should() .BeOfType <SubmitCode>() .Which .Code .Should() .Be(submitCode.Code); }
private static async Task <(CompositeKernel, FakeRemoteKernel)> CreateCompositeKernelWithJavaScriptProxyKernel() { var compositeKernel = new CompositeKernel { new CSharpKernel().UseValueSharing() }; compositeKernel.DefaultKernelName = "csharp"; var remoteKernel = new FakeRemoteKernel(); var receiver = new MultiplexingKernelCommandAndEventReceiver(remoteKernel.Receiver); var host = new KernelHost(compositeKernel, remoteKernel.Sender, receiver); var _ = host.ConnectAsync(); var kernelInfo = new KernelInfo("javascript") { DestinationUri = new("kernel://remote/js") }; var javascriptKernel = await host.CreateProxyKernelOnDefaultConnectorAsync(kernelInfo); javascriptKernel.UseValueSharing(new JavaScriptKernelValueDeclarer()); compositeKernel.RegisterForDisposal(remoteKernel); compositeKernel.RegisterForDisposal(host); return(compositeKernel, remoteKernel); }
public async Task javascript_ProxyKernel_can_share_a_value_from_csharp() { using var kernel = new CompositeKernel { new CSharpKernel() }; kernel.DefaultKernelName = "csharp"; using var remoteKernel = new FakeRemoteKernel(); var receiver = new MultiplexingKernelCommandAndEventReceiver(remoteKernel.Receiver); using var host = new KernelHost(kernel, remoteKernel.Sender, receiver); var _ = host.ConnectAsync(); var kernelInfo = new KernelInfo("javascript", null, new Uri("kernel://remote/js")); var javascriptKernel = await host.CreateProxyKernelOnDefaultConnectorAsync(kernelInfo); javascriptKernel.UseValueSharing(new JavaScriptKernelValueDeclarer()); await kernel.SubmitCodeAsync("var csharpVariable = 123;"); var submitCode = new SubmitCode(@" #!javascript #!share --from csharp csharpVariable"); await kernel.SendAsync(submitCode); var remoteCommands = remoteKernel.Sender.Commands; remoteCommands.Should() .ContainSingle <SubmitCode>() .Which .Code .Should() .Be("csharpVariable = 123;"); }