From b245713f28f0036c4f86906d3296c9da9f274f5d Mon Sep 17 00:00:00 2001 From: SmallChi <564952747@qq.com> Date: Sat, 24 Nov 2018 22:25:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=9A=E8=AF=9D=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JT808DefaultChannelId.cs | 28 +++++++ .../JT808SessionManagerTest.cs | 83 ++++++++++++++++++- src/JT808.DotNetty.Test/SeedSession.cs | 22 +++++ src/JT808.DotNetty/JT808SessionManager.cs | 4 +- 4 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 src/JT808.DotNetty.Test/JT808DefaultChannelId.cs create mode 100644 src/JT808.DotNetty.Test/SeedSession.cs diff --git a/src/JT808.DotNetty.Test/JT808DefaultChannelId.cs b/src/JT808.DotNetty.Test/JT808DefaultChannelId.cs new file mode 100644 index 0000000..be2c1bd --- /dev/null +++ b/src/JT808.DotNetty.Test/JT808DefaultChannelId.cs @@ -0,0 +1,28 @@ +using DotNetty.Transport.Channels; +using JT808.DotNetty.Metadata; +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.DotNetty.Test +{ + public class JT808DefaultChannelId : IChannelId + { + private static readonly JT808AtomicCounter jT808AtomicCounter = new JT808AtomicCounter(); + + public string AsLongText() + { + return jT808AtomicCounter.Increment().ToString(); + } + + public string AsShortText() + { + return jT808AtomicCounter.Increment().ToString(); + } + + public int CompareTo(IChannelId other) + { + return 0; + } + } +} diff --git a/src/JT808.DotNetty.Test/JT808SessionManagerTest.cs b/src/JT808.DotNetty.Test/JT808SessionManagerTest.cs index 04a1e66..4eba9a1 100644 --- a/src/JT808.DotNetty.Test/JT808SessionManagerTest.cs +++ b/src/JT808.DotNetty.Test/JT808SessionManagerTest.cs @@ -11,18 +11,95 @@ namespace JT808.DotNetty.Test { JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory()); - [Fact] + string TerminalPhoneNo = "123456789123"; + + [Fact] public void Test1() { var channel = new EmbeddedChannel(); - jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, "123456789123")); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); } [Fact] public void Test2() { var channel = new EmbeddedChannel(); - jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, "123456789123")); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + } + + [Fact] + public void Test3() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var sessionInfo=jT808SessionManager.GetSessionByTerminalPhoneNo(TerminalPhoneNo); + Assert.Equal(TerminalPhoneNo, sessionInfo.TerminalPhoneNo); + Assert.Equal("embedded", sessionInfo.SessionID); + } + + [Fact] + public void Test4() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.Heartbeat(TerminalPhoneNo); + } + + [Fact] + public void Test5() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var sessionInfo = jT808SessionManager.GetSessionByID("embedded"); + Assert.Equal(TerminalPhoneNo, sessionInfo.TerminalPhoneNo); + Assert.Equal("embedded", sessionInfo.SessionID); + } + + + [Fact] + public void Test6() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var sessionInfo = jT808SessionManager.RemoveSessionByID("embedded"); + Assert.Equal(TerminalPhoneNo, sessionInfo.TerminalPhoneNo); + Assert.Equal("embedded", sessionInfo.SessionID); + } + + + [Fact] + public void Test7() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var sessionInfo = jT808SessionManager.RemoveSessionByTerminalPhoneNo(TerminalPhoneNo); + Assert.Equal(TerminalPhoneNo, sessionInfo.TerminalPhoneNo); + Assert.Equal("embedded", sessionInfo.SessionID); + } + + [Fact] + public void Test8() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var realSessionInfos = jT808SessionManager.GetRealAll(); + var relevanceSessionInfos = jT808SessionManager.GetRelevanceAll(); + } + + [Fact] + public void Test9() + { + var channel = new EmbeddedChannel(); + jT808SessionManager.TryAddSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + jT808SessionManager.TryAddOrUpdateSession(new Metadata.JT808Session(channel, TerminalPhoneNo)); + var realSessionCount = jT808SessionManager.RealSessionCount; + var relevanceSessionCount = jT808SessionManager.RealSessionCount; } } } diff --git a/src/JT808.DotNetty.Test/SeedSession.cs b/src/JT808.DotNetty.Test/SeedSession.cs new file mode 100644 index 0000000..9acbb98 --- /dev/null +++ b/src/JT808.DotNetty.Test/SeedSession.cs @@ -0,0 +1,22 @@ +using DotNetty.Transport.Channels.Embedded; +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +namespace JT808.DotNetty.Test +{ + public class SeedSession + { + public List embeddedChannels = new List(); + + [Fact] + public void Init() + { + for(var i = 0; i < 10; i++) + { + embeddedChannels.Add(new EmbeddedChannel(new JT808DefaultChannelId())); + } + } + } +} diff --git a/src/JT808.DotNetty/JT808SessionManager.cs b/src/JT808.DotNetty/JT808SessionManager.cs index eb829d9..cb0e6cd 100644 --- a/src/JT808.DotNetty/JT808SessionManager.cs +++ b/src/JT808.DotNetty/JT808SessionManager.cs @@ -189,9 +189,9 @@ namespace JT808.DotNetty return SessionIdDict.Select(s=>s.Value); } - public List GetRelevanceAll() + public IEnumerable GetRelevanceAll() { - return SessionIdDict.Join(TerminalPhoneNo_SessionId_Dict, m => m.Key, s => s.Value, (m, s) => m.Value).ToList(); + return SessionIdDict.Join(TerminalPhoneNo_SessionId_Dict, m => m.Key, s => s.Value, (m, s) => m.Value); } }