Example #1
0
        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);
        }
Example #3
0
        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;");
        }
Example #4
0
 public DefaultKernelConnector(IKernelCommandAndEventSender defaultSender, MultiplexingKernelCommandAndEventReceiver defaultReceiver)
 {
     _defaultSender   = defaultSender;
     _defaultReceiver = defaultReceiver;
 }