示例#1
0
        public void TestRemoteRestart()
        {
            Timer t   = new Timer(Timeout, null, 0, 500);
            int   spi = 123333;

            new SecurityPolicy(spi, "Rijndael", "SHA1", true);
            SecurityOverlord so0 = CreateValidSO("valid0");
            SecurityOverlord so1 = CreateValidSO("valid1");

            MockSender ms0 = new MockSender(null, null, so1, 0);
            MockSender ms1 = new MockSender(ms0, null, so0, 0);

            ms0.ReturnPath = ms1;

            SecurityAssociation sa0 = so0.CreateSecurityAssociation(ms0, spi, true);
            SecurityAssociation sa1 = so1.CreateSecurityAssociation(ms1, spi, true);

            Assert.AreEqual(sa0.State, SecurityAssociation.SAState.Active, "sa0 should be active!");
            Assert.AreEqual(sa1.State, SecurityAssociation.SAState.Active, "sa1 should be active!");
            Assert.AreEqual(so0.SACount, 1, "so0 should contain just one!");
            Assert.AreEqual(so1.SACount, 1, "so1 should contain just one!");

            sa0.GarbageCollect();
            sa0.GarbageCollect();
            Assert.AreEqual(so0.SACount, 0, "so0 should contain just zero!");
            sa1.GarbageCollect();
            Assert.AreEqual(so1.SACount, 1, "so1 should contain just one!");
            sa1.Send(MemBlock.Reference(new byte[] { 0, 1, 2, 3 }));
            Assert.AreEqual(so0.SACount, 1, "so0 should contain just one!");
            Assert.AreEqual(so1.SACount, 1, "so1 should contain just one!");

            t.Dispose();
        }
示例#2
0
        public void Test()
        {
            int                 spi     = SecurityPolicy.DefaultSPI;
            MockSender          sender1 = new MockSender(null, null, null, 2);
            MockSender          sender2 = new MockSender(null, null, null, 2);
            SecurityAssociation sa1     = new SecurityAssociation(sender1, spi);

            sa1.StateChange += StateChange;
            sender2.Receiver = sa1;
            MockDataHandler mdh1 = new MockDataHandler();

            sa1.Subscribe(mdh1, null);
            SecurityAssociation sa2 = new SecurityAssociation(sender2, spi);

            sender1.Receiver = sa2;
            MockDataHandler mdh2 = new MockDataHandler();

            sa2.Subscribe(mdh2, null);

            byte[]   b    = null;
            Random   rand = new Random();
            MemBlock mb   = null;

            int current_epoch = sa1.CurrentEpoch;

            for (int i = 0; i < 5; i++)
            {
                Thread.Sleep(SecurityAssociation.TIMEOUT * 2 + 5);
                Setup(ref sa1, ref sa2);

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sa1.Send(mb);
                Assert.IsTrue(mdh2.Contains(mb), "Contains" + i);
                Assert.AreEqual(state, sa1.State, "State == Active" + i);
                Assert.IsFalse(current_epoch == sa1.CurrentEpoch, "Current epoch " + i);
                current_epoch = sa1.CurrentEpoch;
            }

            sa1.GarbageCollect();
            sa1.GarbageCollect();
            b = new byte[128];
            rand.NextBytes(b);
            mb = MemBlock.Reference(b);
            try {
                sa1.Send(mb);
            } catch {}
            Assert.IsTrue(!mdh2.Contains(mb), "Failed!");
            Assert.AreEqual(state, sa1.State, "State == Failed");
        }