public void wontLeakOnUsingOwnershipTransfer() { // See bugzilla #101. // Here we are testing that resources won't leak, even when an asynchronous exception is thrown after the // lockableBladeSpec is constructed, but _before_ the using has been entered. using (bladeDirectorDebugServices uut = new bladeDirectorDebugServices(WCFPath, new[] { "1.1.1.1" })) { uut.svcDebug._isBladeMine("127.0.0.1", "1.1.1.1", false); uut.svcDebug._isBladeMine("127.0.0.1", "1.1.1.1", false); uut.svcDebug._isBladeMine("127.0.0.1", "1.1.1.1", false); uut.setReceiveTimeout(TimeSpan.FromSeconds(4)); // >:) uut.svcDebug.lockAndNeverRelease("1.1.1.1"); uut.setReceiveTimeout(TimeSpan.FromSeconds(10)); uut.reconnect(); // But if we re-connect, locks should be untaken. uut.svcDebug._isBladeMine("127.0.0.1", "1.1.1.1", false); } }
public void wontLeakOnConnectionErrors() { using (bladeDirectorDebugServices uut = new bladeDirectorDebugServices(WCFPath, new[] { "1.1.1.1" })) { uut.setReceiveTimeout(TimeSpan.FromSeconds(4)); // This will cause an exception.. bool didExcept = false; try { uut.svcDebug.lockAndSleep("1.1.1.1"); } catch (CommunicationException) { didExcept = true; } Assert.IsTrue(didExcept); uut.setReceiveTimeout(TimeSpan.FromSeconds(10)); uut.reconnect(); // But if we re-connect, locks should be untaken. uut.svcDebug._isBladeMine("127.0.0.1", "1.1.1.1", false); } }