コード例 #1
0
        public void testLockingWritesImplyReads()
        {
            bladeDirectorWCF.bladeLockCollection uut = new bladeDirectorWCF.bladeLockCollection(bladeLockType.lockNone, bladeLockType.lockBIOS);

            uut.release(bladeLockType.lockNone, bladeLockType.lockBIOS);

            Assert.IsFalse(uut.assertLocks(bladeLockType.lockNone, bladeLockType.lockNone));
        }
コード例 #2
0
        public void testWriterLockCanBeDowngradedAndThenReleased()
        {
            bladeDirectorWCF.bladeLockCollection uut = new bladeDirectorWCF.bladeLockCollection(bladeLockType.lockNone, bladeLockType.lockSnapshot);
            uut.release(bladeLockType.lockNone, bladeLockType.lockSnapshot);

            // Downgrade should've happened.
            Assert.IsTrue(uut.assertLocks(bladeLockType.lockSnapshot, bladeLockType.lockNone));

            uut.release(bladeLockType.lockSnapshot, bladeLockType.lockNone);
            Assert.IsTrue(uut.isUnlocked());
        }
コード例 #3
0
        public void testReaderLockCanBeUpgradedAndThenReleased()
        {
            bladeDirectorWCF.bladeLockCollection uut = new bladeDirectorWCF.bladeLockCollection(bladeLockType.lockBIOS, bladeLockType.lockNone);

            uut.acquire(bladeLockType.lockNone, bladeLockType.lockBIOS);
            uut.release(bladeLockType.lockNone, bladeLockType.lockBIOS);

            Assert.IsTrue(uut.assertLocks(bladeLockType.lockBIOS, bladeLockType.lockNone));

            uut.release(bladeLockType.lockBIOS, bladeLockType.lockNone);

            Assert.IsTrue(uut.isUnlocked());
        }
コード例 #4
0
        public void testWriterLockWontLeaveThingsLockedOnException()
        {
            bladeDirectorWCF.bladeLockCollection uut = new bladeDirectorWCF.bladeLockCollection(bladeLockType.lockNone, bladeLockType.lockSnapshot);

            // Attempt to lock for two things - NAS and BIOS. Inject an exception on the NAS exception, which happens _after_ the
            // BIOS lock. Verify that the BIOS lock is also released.
            bool didThrow = false;

            try
            {
                uut.faultInjectOnLockOfThis = bladeLockType.lockNASOperations;
                uut.acquire(bladeLockType.lockNASOperations | bladeLockType.lockBIOS, bladeLockType.lockNASOperations | bladeLockType.lockBIOS);
            }
            catch (ApplicationException)
            {
                didThrow = true;
            }
            Assert.IsTrue(didThrow, "Fault was not injected?");
            uut.faultInjectOnLockOfThis = 0;

            uut.release(bladeLockType.lockNone, bladeLockType.lockSnapshot);
            Assert.IsTrue(uut.isUnlocked());
            uut.assertLocks(bladeLockType.lockNone, bladeLockType.lockNone);
        }