public void When_Needed_Should_Reconnect_Client() { var deviceClient = new Mock <ILoRaDeviceClient>(MockBehavior.Strict); var cache = new MemoryCache(new MemoryCacheOptions()); var manager = new LoRaDeviceClientConnectionManager(cache); var device = new LoRaDevice("00000000", "0123456789", manager); device.KeepAliveTimeout = 60; manager.Register(device, deviceClient.Object); deviceClient.Setup(x => x.EnsureConnected()) .Returns(true); deviceClient.Setup(x => x.Disconnect()) .Returns(true); using (var activity1 = device.BeginDeviceClientConnectionActivity()) { Assert.NotNull(activity1); } Assert.True(device.TryDisconnect()); using (var activity2 = device.BeginDeviceClientConnectionActivity()) { Assert.NotNull(activity2); Assert.False(device.TryDisconnect()); } Assert.True(device.TryDisconnect()); deviceClient.Verify(x => x.EnsureConnected(), Times.Exactly(2)); deviceClient.Verify(x => x.Disconnect(), Times.Exactly(2)); }
public void When_Needed_Should_Reconnect_Client() { var deviceClient = new Mock <ILoRaDeviceClient>(MockBehavior.Strict); deviceClient.Setup(dc => dc.Dispose()); using var cache = new MemoryCache(new MemoryCacheOptions()); using var manager = new LoRaDeviceClientConnectionManager(cache, NullLogger <LoRaDeviceClientConnectionManager> .Instance); using var device = new LoRaDevice(DevAddr.Private0(0), new DevEui(0x0123456789), manager); device.KeepAliveTimeout = 60; manager.Register(device, deviceClient.Object); deviceClient.Setup(x => x.EnsureConnected()) .Returns(true); deviceClient.Setup(x => x.Disconnect()) .Returns(true); using (var activity1 = device.BeginDeviceClientConnectionActivity()) { Assert.NotNull(activity1); } Assert.True(device.TryDisconnect()); using (var activity2 = device.BeginDeviceClientConnectionActivity()) { Assert.NotNull(activity2); Assert.False(device.TryDisconnect()); } Assert.True(device.TryDisconnect()); deviceClient.Verify(x => x.EnsureConnected(), Times.Exactly(2)); deviceClient.Verify(x => x.Disconnect(), Times.Exactly(2)); }
public void When_Device_Has_No_Connection_Timeout_Should_Disconnect() { var deviceClient = new Mock <ILoRaDeviceClient>(MockBehavior.Strict); var cache = new MemoryCache(new MemoryCacheOptions()); var manager = new LoRaDeviceClientConnectionManager(cache); var device = new LoRaDevice("00000000", "0123456789", manager); manager.Register(device, deviceClient.Object); var activity = device.BeginDeviceClientConnectionActivity(); Assert.NotNull(activity); deviceClient.Setup(x => x.Disconnect()) .Returns(true); Assert.True(device.TryDisconnect()); deviceClient.Verify(x => x.Disconnect(), Times.Once()); }
public void When_Device_Has_No_Connection_Timeout_Should_Disconnect() { var deviceClient = new Mock <ILoRaDeviceClient>(MockBehavior.Strict); deviceClient.Setup(dc => dc.Dispose()); using var cache = new MemoryCache(new MemoryCacheOptions()); using var manager = new LoRaDeviceClientConnectionManager(cache, NullLogger <LoRaDeviceClientConnectionManager> .Instance); using var device = new LoRaDevice(DevAddr.Private0(0), new DevEui(0x0123456789), manager); manager.Register(device, deviceClient.Object); var activity = device.BeginDeviceClientConnectionActivity(); Assert.NotNull(activity); deviceClient.Setup(x => x.Disconnect()) .Returns(true); Assert.True(device.TryDisconnect()); deviceClient.Verify(x => x.Disconnect(), Times.Once()); }