Beispiel #1
0
        public async Task SendAsync(KernelEvent kernelEvent, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            _sender.WriteMessage(KernelEventEnvelope.Serialize(KernelEventEnvelope.Create(kernelEvent)));

            await _sender.FlushAsync(cancellationToken);
        }
Beispiel #2
0
        public void All_event_types_are_round_trip_serializable(KernelEvent @event)
        {
            var originalEnvelope = KernelEventEnvelope.Create(@event);

            var json = KernelEventEnvelope.Serialize(originalEnvelope);

            _output.WriteLine($"{Environment.NewLine}{@event.GetType().Name}: {Environment.NewLine}{json}");

            var deserializedEnvelope = KernelEventEnvelope.Deserialize(json);

            // ignore these specific properties because they're not serialized
            var ignoredProperties = new HashSet <string>
            {
                $"{nameof(CommandFailed)}.{nameof(CommandFailed.Exception)}",
                $"{nameof(DisplayEvent)}.{nameof(DisplayEvent.Value)}"
            };

            deserializedEnvelope
            .Should()
            .BeEquivalentToRespectingRuntimeTypes(
                originalEnvelope,
                o => o.Excluding(envelope => envelope.Event.Command.Properties)
                .Excluding(envelope => ignoredProperties.Contains($"{envelope.SelectedMemberInfo.DeclaringType.Name}.{envelope.SelectedMemberInfo.Name}"))
                );
        }
Beispiel #3
0
        public async Task SendAsync(KernelEvent kernelEvent, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            await _writer.WriteAsync(KernelEventEnvelope.Serialize(KernelEventEnvelope.Create(kernelEvent)));

            await _writer.WriteAsync(Delimiter);

            await _writer.FlushAsync();
        }
Beispiel #4
0
        public void Event_contract_has_not_been_broken(KernelEvent @event)
        {
            var _configuration = new Configuration()
                                 .UsingExtension($"{@event.GetType().Name}.json")
                                 .SetInteractive(Debugger.IsAttached);

            @event.Command?.SetToken("the-token");

            var json = KernelEventEnvelope.Serialize(@event);

            this.Assent(json, _configuration);
        }
Beispiel #5
0
        public async Task when_a_KernelEventEnvelope_is_received_it_publishes_the_event()
        {
            var kernelEvent = new CommandSucceeded(new SubmitCode("x=1"));
            var message     = KernelEventEnvelope.Serialize(KernelEventEnvelope.Create(kernelEvent));

            using var stringReader = new StringReader(message);
            var receiver = new KernelCommandAndEventTextReceiver(stringReader);

            var d = await receiver.CommandsAndEventsAsync(CancellationToken.None).FirstAsync();

            d.Event.Should().BeEquivalentTo(kernelEvent);
        }
Beispiel #6
0
        public async Task when_a_KernelEvent_is_sent_it_writes_a_KernelEventEnvelope()
        {
            var kernelEvent = new CommandSucceeded(new SubmitCode("x=1"));
            var buffer      = new StringBuilder();

            var sender = new KernelCommandAndEventTextStreamSender(new StringWriter(buffer));
            await sender.SendAsync(kernelEvent, CancellationToken.None);

            var envelopeMessage = buffer.ToString();

            envelopeMessage.Should()
            .BeEquivalentTo(KernelEventEnvelope.Serialize(KernelEventEnvelope.Create(kernelEvent)) + KernelCommandAndEventTextStreamSender.Delimiter);
        }
Beispiel #7
0
        public void All_event_types_are_round_trip_serializable(IKernelEvent @event)
        {
            var originalEnvelope = KernelEventEnvelope.Create(@event);

            var json = KernelEventEnvelope.Serialize(originalEnvelope);

            _output.WriteLine($"{Environment.NewLine}{@event.GetType().Name}: {Environment.NewLine}{json}");

            var deserializedEnvelope = KernelEventEnvelope.Deserialize(json);

            deserializedEnvelope
            .Should()
            .BeEquivalentTo(originalEnvelope);
        }
 public async Task SendAsync(KernelEvent kernelEvent, CancellationToken cancellationToken)
 {
     await _sender.SendAsync("kernelEventFromServer", KernelEventEnvelope.Serialize(KernelEventEnvelope.Create(kernelEvent)), cancellationToken : cancellationToken);
 }
        private async Task PublishEventToContext(IKernelEvent kernelEvent, IHubContext <KernelHub> hubContext)
        {
            var eventEnvelope = KernelEventEnvelope.Create(kernelEvent);

            await hubContext.Clients.All.SendAsync("kernelEvent", KernelEventEnvelope.Serialize(eventEnvelope));
        }
Beispiel #10
0
 public Task SendAsync(KernelEvent kernelEvent, CancellationToken cancellationToken)
 {
     _onSendAsync?.Invoke(new CommandOrEvent(KernelEventEnvelope.Deserialize(KernelEventEnvelope.Serialize(kernelEvent)).Event));
     return(Task.CompletedTask);
 }