You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

75 line
2.9 KiB

  1. using DotNetty.Transport.Channels.Embedded;
  2. using JT808.DotNetty.Core.Impls;
  3. using System.Threading;
  4. using Xunit;
  5. namespace JT808.DotNetty.Core.Test
  6. {
  7. public class JT808SessionManagerTest: SeedTcpSession
  8. {
  9. [Fact]
  10. public void AddTest()
  11. {
  12. var no = "test150";
  13. var channel = new EmbeddedChannel(new JT808DefaultChannelId());
  14. jT80TcpSessionManager.TryAdd(no,channel);
  15. jT80TcpSessionManager.Heartbeat(no);
  16. Assert.NotNull(jT80TcpSessionManager.GetTcpSessionByTerminalPhoneNo(no));
  17. }
  18. [Fact]
  19. public void RemoveTest()
  20. {
  21. var no = "test151";
  22. var channel = new EmbeddedChannel(new JT808DefaultChannelId());
  23. jT80TcpSessionManager.TryAdd(no, channel);
  24. var sessionInfo = jT80TcpSessionManager.RemoveSession(no);
  25. Assert.Equal(no, sessionInfo.TerminalPhoneNo);
  26. }
  27. [Fact]
  28. public void OneChannelToManyDeviceTest1()
  29. {
  30. //转发过来的数据 1:n 一个通道对应多个设备
  31. var no = "test1";
  32. var no1 = "test2";
  33. var no2 = "test3";
  34. var no3 = "test4";
  35. var no4 = "test5";
  36. var channel = new EmbeddedChannel(new JT808DefaultChannelId());
  37. jT80TcpSessionManager.TryAdd(no,channel);
  38. jT80TcpSessionManager.TryAdd(no1,channel);
  39. jT80TcpSessionManager.TryAdd(no2,channel);
  40. jT80TcpSessionManager.TryAdd(no3,channel);
  41. jT80TcpSessionManager.TryAdd(no4,channel);
  42. var removeSession = jT80TcpSessionManager.RemoveSession(no);
  43. Assert.Equal(no, removeSession.TerminalPhoneNo);
  44. Assert.Equal(channel, removeSession.Channel);
  45. Assert.Equal(1,channel.Id.CompareTo(removeSession.Channel.Id));
  46. }
  47. [Fact]
  48. public void OneChannelToManyDeviceTest2()
  49. {
  50. //转发过来的数据 1:n 一个通道对应多个设备
  51. var no = "test61";
  52. var no1 = "test62";
  53. var no2 = "test63";
  54. var no3 = "test64";
  55. var no4 = "test65";
  56. var channel1 = new EmbeddedChannel(new JT808DefaultChannelId());
  57. var channel2 = new EmbeddedChannel(new JT808DefaultChannelId());
  58. jT80TcpSessionManager.TryAdd(no,channel1);
  59. jT80TcpSessionManager.TryAdd(no1,channel1);
  60. jT80TcpSessionManager.TryAdd(no2,channel1);
  61. jT80TcpSessionManager.TryAdd(no3,channel2);
  62. jT80TcpSessionManager.TryAdd(no4,channel2);
  63. jT80TcpSessionManager.RemoveSessionByChannel(channel1);
  64. Assert.Null(jT80TcpSessionManager.GetTcpSessionByTerminalPhoneNo(no));
  65. Assert.Null(jT80TcpSessionManager.GetTcpSessionByTerminalPhoneNo(no1));
  66. Assert.Null(jT80TcpSessionManager.GetTcpSessionByTerminalPhoneNo(no2));
  67. }
  68. }
  69. }