mirror of
https://github.com/Azure/DotNetty.git
synced 2026-10-18 14:27:09 +08:00
44885964bd
Motivation: Ported/Re-implemented DatagramChannel/UDP into DotNetty Modifications: - Added DatagramChannel/Config into transport project. - Added DatagramPacket/DefaultAddressedEnvelop/IAddressedEnvelop into transport project. - Added DatagramPacketEncoder/DatagramPacketDecoder into Codec project. - Extra: Ported QuoteOfTheMoment UDP example project. Result: DatagramChannel/UDP transport is supported by DotNetty.
83 lines
2.7 KiB
C#
83 lines
2.7 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
namespace DotNetty.Codecs.Tests
|
|
{
|
|
using System.Net;
|
|
using System.Text;
|
|
using DotNetty.Codecs;
|
|
using DotNetty.Transport.Channels;
|
|
using DotNetty.Transport.Channels.Embedded;
|
|
using DotNetty.Transport.Channels.Sockets;
|
|
using Xunit;
|
|
|
|
public class DatagramPacketEncoderTest
|
|
{
|
|
[Fact]
|
|
public void Encode()
|
|
{
|
|
var channel = new EmbeddedChannel(new DatagramPacketEncoder<string>(new StringEncoder(Encoding.UTF8)));
|
|
var recipient = new IPEndPoint(IPAddress.Loopback, 10000);
|
|
var sender = new IPEndPoint(IPAddress.Loopback, 20000);
|
|
const string Content = "netty";
|
|
Assert.True(channel.WriteOutbound(new DefaultAddressedEnvelope<string>(Content, sender, recipient)));
|
|
|
|
var packet = channel.ReadOutbound<DatagramPacket>();
|
|
Assert.NotNull(packet);
|
|
try
|
|
{
|
|
Assert.Equal(Content, packet.Content.ToString(Encoding.UTF8));
|
|
Assert.Equal(sender, packet.Sender);
|
|
Assert.Equal(recipient, packet.Recipient);
|
|
}
|
|
finally
|
|
{
|
|
packet.Release();
|
|
Assert.False(channel.Finish());
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void UnmatchedMessageType()
|
|
{
|
|
var channel = new EmbeddedChannel(new DatagramPacketEncoder<string>(new StringEncoder(Encoding.UTF8)));
|
|
var recipient = new IPEndPoint(IPAddress.Loopback, 10000);
|
|
var sender = new IPEndPoint(IPAddress.Loopback, 20000);
|
|
|
|
var envelop = new DefaultAddressedEnvelope<long>(101L, sender, recipient);
|
|
Assert.True(channel.WriteOutbound(envelop));
|
|
|
|
var defaultEnvelop = channel.ReadOutbound<DefaultAddressedEnvelope<long>>();
|
|
Assert.NotNull(defaultEnvelop);
|
|
try
|
|
{
|
|
Assert.Same(envelop, defaultEnvelop);
|
|
}
|
|
finally
|
|
{
|
|
defaultEnvelop.Release();
|
|
Assert.False(channel.Finish());
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void UnmatchedType()
|
|
{
|
|
var channel = new EmbeddedChannel(new DatagramPacketEncoder<string>(new StringEncoder(Encoding.UTF8)));
|
|
|
|
try
|
|
{
|
|
const string Content = "netty";
|
|
Assert.True(channel.WriteOutbound(Content));
|
|
|
|
string content = channel.ReadOutbound<string>();
|
|
Assert.Same(Content, content);
|
|
}
|
|
finally
|
|
{
|
|
Assert.False(channel.Finish());
|
|
}
|
|
}
|
|
}
|
|
}
|