public virtual void TestMultipleFencers()
        {
            NodeFencer fencer = SetupFencer(typeof(TestNodeFencer.AlwaysSucceedFencer).FullName
                                            + "(foo)\n" + typeof(TestNodeFencer.AlwaysSucceedFencer).FullName + "(bar)\n");

            Assert.True(fencer.Fence(MockTarget));
            // Only one call, since the first fencer succeeds
            Assert.Equal(1, TestNodeFencer.AlwaysSucceedFencer.fenceCalled
                         );
            Assert.Equal("foo", TestNodeFencer.AlwaysSucceedFencer.callArgs
                         [0]);
        }
        public virtual void TestSingleFencer()
        {
            NodeFencer fencer = SetupFencer(typeof(TestNodeFencer.AlwaysSucceedFencer).FullName
                                            + "(foo)");

            Assert.True(fencer.Fence(MockTarget));
            Assert.Equal(1, TestNodeFencer.AlwaysSucceedFencer.fenceCalled
                         );
            NUnit.Framework.Assert.AreSame(MockTarget, TestNodeFencer.AlwaysSucceedFencer.fencedSvc
                                           );
            Assert.Equal("foo", TestNodeFencer.AlwaysSucceedFencer.callArgs
                         [0]);
        }
        public virtual void TestArglessFencer()
        {
            NodeFencer fencer = SetupFencer(typeof(TestNodeFencer.AlwaysSucceedFencer).FullName
                                            );

            Assert.True(fencer.Fence(MockTarget));
            // One call to each, since top fencer fails
            Assert.Equal(1, TestNodeFencer.AlwaysSucceedFencer.fenceCalled
                         );
            NUnit.Framework.Assert.AreSame(MockTarget, TestNodeFencer.AlwaysSucceedFencer.fencedSvc
                                           );
            Assert.Equal(null, TestNodeFencer.AlwaysSucceedFencer.callArgs
                         [0]);
        }
        public virtual void TestWhitespaceAndCommentsInConfig()
        {
            NodeFencer fencer = SetupFencer("\n" + " # the next one will always fail\n" + " "
                                            + typeof(TestNodeFencer.AlwaysFailFencer).FullName + "(foo) # <- fails\n" + typeof(
                                                TestNodeFencer.AlwaysSucceedFencer).FullName + "(bar) \n");

            Assert.True(fencer.Fence(MockTarget));
            // One call to each, since top fencer fails
            Assert.Equal(1, TestNodeFencer.AlwaysFailFencer.fenceCalled);
            NUnit.Framework.Assert.AreSame(MockTarget, TestNodeFencer.AlwaysFailFencer.fencedSvc
                                           );
            Assert.Equal(1, TestNodeFencer.AlwaysSucceedFencer.fenceCalled
                         );
            NUnit.Framework.Assert.AreSame(MockTarget, TestNodeFencer.AlwaysSucceedFencer.fencedSvc
                                           );
            Assert.Equal("foo", TestNodeFencer.AlwaysFailFencer.callArgs[0
                         ]);
            Assert.Equal("bar", TestNodeFencer.AlwaysSucceedFencer.callArgs
                         [0]);
        }
        public virtual void TestShortNameSshWithUserPort()
        {
            NodeFencer fencer = SetupFencer("sshfence(user:123)");

            NUnit.Framework.Assert.IsFalse(fencer.Fence(MockTarget));
        }
        public virtual void TestShortNameShell()
        {
            NodeFencer fencer = SetupFencer(GetFencerTrueCommand());

            Assert.True(fencer.Fence(MockTarget));
        }