Example #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();
        }
Example #2
0
        public void test_observer_notifyEvent()
        {
            MockSender s = new MockSender();

            MyEventSubject subject = new MyEventSubject();

            MyEventObserver[] observers = new MyEventObserver[] { new MyEventObserver(), new MyEventObserver() };

            foreach (MyEventObserver o in observers)
            {
                subject.attach(o);
            }

            subject.notify(new MockEvent_Test01(s));

            foreach (MyEventObserver o in observers)
            {
                Assert.IsFalse(o.hasBeenNotified);
            }

            subject.notify(new MockEvent_Test00(s));

            foreach (MyEventObserver o in observers)
            {
                Assert.IsTrue(o.hasBeenNotified);
            }
        }
Example #3
0
        public void TestWithPreExchangedKeys()
        {
            Timer t   = new Timer(Timeout, null, 0, 500);
            int   spi = 123333;

            new SecurityPolicy(spi, "Rijndael", "SHA1", true);
            PeerSecOverlord so0 = CreateValidSO("valid0");
            PeerSecOverlord 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);

            Assert.IsFalse((sa0 as PeerSecAssociation).Start(), "Cannot start SA again");
            SecurityAssociation sa1 = so1.CreateSecurityAssociation(ms1, spi);

            Assert.AreEqual(sa0.State, SecurityAssociation.States.Active, "sa0 should be active!");
            Assert.AreEqual(sa1.State, SecurityAssociation.States.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!");

            t.Dispose();
        }
Example #4
0
        public void test_eventhandler_handleEvent()
        {
            MockEventHandler handler = new MockEventHandler();

            MockSender sender = new MockSender();

            Assert.IsTrue(handler.handleEvent(new MockEvent_Test01(sender)));
            Assert.IsFalse(handler.handleEvent(new MockEvent_Test02(sender)));
        }
Example #5
0
        public void SHUpdateTest()
        {
            callback_count = 0;
            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);

            Setup(ref sa1, ref sa2);

            sa1.RequestUpdate += Callback;
            sa2.RequestUpdate += Callback;

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

            int current_epoch = sa1.CurrentEpoch;

            for (int i = 0; i < 80; i++)
            {
                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sa1.Send(mb);
                Assert.IsTrue(mdh2.Contains(mb), "Contains" + i);
                if (i % 20 == 0 && i != 0)
                {
                    Assert.AreEqual(callback_count, 1, "Callback count " + i);
                    callback_count = 0;
                    Thread.Sleep(SecurityAssociation.TIMEOUT * 2 + 5);
                    Setup(ref sa1, ref sa2);
                }
                else
                {
                    if (i % 20 == 1 && i != 1)
                    {
                        Assert.IsFalse(current_epoch == sa1.CurrentEpoch, "Current epoch " + i);
                        current_epoch = sa1.CurrentEpoch;
                    }
                    Assert.AreEqual(current_epoch, sa1.CurrentEpoch, "Current epoch " + i);
                }
            }
        }
            public void does_not_blow_up_if_metric_command_throws()
            {
                var metric = MockRepository.GenerateStub <Counting>();

                metric.Stub(x => x.Command).Throw(new Exception());

                var sender = new MockSender();

                sender.Send(metric);
                Assert.Pass();
            }
        public async Task TestDeserializeCalledWithResponseBodyAsync()
        {
            var response     = new Response(0, Encoding.ASCII.GetBytes("Hello, World!"));
            var mockSender   = new MockSender(response);
            var deserializer = new FakeDeserializer(null);
            var client       = new Client(mockSender, deserializer);

            await client.SendAsync(new Lookup("1", "2"));

            Assert.AreEqual(response.Payload, deserializer.Payload);
        }
        public void TestDeserializeCalledWithResponseBody()
        {
            var response     = new Response(0, Encoding.ASCII.GetBytes("Hello, world!"));
            var sender       = new MockSender(response);
            var deserializer = new FakeDeserializer(null);
            var client       = new Client(sender, deserializer);

            client.Send(new Lookup());

            Assert.AreEqual(response.Payload, deserializer.Payload);
        }
        public async Task TestDeserializeCalledWithResponseBodyAsync()
        {
            var response     = new Response(0, Encoding.ASCII.GetBytes("Hello, World!"));
            var mockSender   = new MockSender(response);
            var sender       = new URLPrefixSender("http://localhost/", mockSender);
            var deserializer = new FakeDeserializer(new Result());
            var client       = new Client(sender, deserializer);

            await client.SendAsync(new Lookup("1"));

            Assert.AreEqual(response.Payload, deserializer.Payload);
        }
            public void does_not_send_anything()
            {
                var metric = new Counting()
                {
                    Name = "testMetric", ValueAsInt = 5
                };
                var sender = new MockSender();

                sender.Send(metric);

                _udp.AssertWasNotCalled(x => x.Send(Arg <string> .Is.Anything));
            }
Example #11
0
        public void TestResultCorrectlyAssignedToCorrespondingLookup()
        {
            var expectedResult = new Result();
            var lookup         = new Lookup("Hello, World!");

            var sender       = new MockSender(new Response(0, Encoding.ASCII.GetBytes("[]")));
            var deserializer = new FakeDeserializer(expectedResult);
            var client       = new Client(sender, deserializer);

            client.Send(lookup);

            Assert.AreEqual(expectedResult, lookup.Result);
        }
Example #12
0
        public void Test()
        {
            int                spi     = SecurityPolicy.DefaultSPI;
            MockSender         sender1 = new MockSender(null, null, null, 2);
            MockSender         sender2 = new MockSender(null, null, null, 2);
            PeerSecAssociation sa1     = new PeerSecAssociation(sender1, null, spi);

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

            sa1.Subscribe(mdh1, null);
            PeerSecAssociation sa2 = new PeerSecAssociation(sender2, null, 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++)
            {
                Setup(sa1, 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.CheckState();
            sa1.CheckState();
            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");
        }
        public async Task TestResultCorrectlyAssignedToLookupAsync()
        {
            var lookup         = new Lookup("1");
            var expectedResult = new Result();

            var mockSender   = new MockSender(new Response(0, Encoding.ASCII.GetBytes("{[]}")));
            var sender       = new URLPrefixSender("http://localhost/", mockSender);
            var deserializer = new FakeDeserializer(expectedResult);
            var client       = new Client(sender, deserializer);

            await client.SendAsync(lookup);

            Assert.AreEqual(expectedResult.Suggestions, lookup.Result);
        }
        public async Task TestCandidatesCorrectlyAssignedToLookupAsync()
        {
            var expectedCandidates = new List <Candidate> {
                new Candidate(), new Candidate()
            };
            var lookup = new Lookup("1", "2");

            var mockSender   = new MockSender(new Response(0, Encoding.ASCII.GetBytes("[]")));
            var deserializer = new FakeDeserializer(expectedCandidates);
            var client       = new Client(mockSender, deserializer);

            await client.SendAsync(lookup);

            Assert.AreEqual(expectedCandidates[0], lookup.Result[0]);
            Assert.AreEqual(expectedCandidates[1], lookup.Result[1]);
        }
Example #15
0
        public void TestCandidatesCorrectlyAssignedToLookup()
        {
            var expectedCandidates = new Candidate[2];

            expectedCandidates[0] = new Candidate();
            expectedCandidates[1] = new Candidate();
            var lookup = new Lookup("1", "2");

            var mockSender   = new MockSender(new Response(0, Encoding.ASCII.GetBytes("[]")));
            var deserializer = new FakeDeserializer(expectedCandidates);
            var client       = new Client(mockSender, deserializer);

            client.Send(lookup);

            Assert.AreEqual(expectedCandidates[0], lookup.Result[0]);
            Assert.AreEqual(expectedCandidates[1], lookup.Result[1]);
        }
Example #16
0
        public void test_eventdispatch_dispatch()
        {
            EventDispatch dispatch = new EventDispatch();

            MockEventHandler_Test00 handler = new MockEventHandler_Test00();

            dispatch.subscribe(handler);
            dispatch.subscribe(new MockEventHandler_Test01());
            dispatch.subscribe(new MockEventHandler_Test02());

            MockSender s = new MockSender();

            Assert.IsTrue(dispatch.dispatch(new MockEvent_Test00(s)));

            dispatch.unsubscribe(handler);

            Assert.IsFalse(dispatch.dispatch(new MockEvent_Test00(s)));
        }
        public void TestCandidatesCorrectlyAssignedToCorrespondingLookup()
        {
            var expectedCandidates = new List <Candidate> {
                new Candidate(0), new Candidate(1), new Candidate(1)
            };
            var batch = new Batch {
                new Lookup(), new Lookup()
            };

            var sender       = new MockSender(new Response(0, new byte[0]));
            var deserializer = new FakeDeserializer(expectedCandidates);
            var client       = new Client(sender, deserializer);

            client.Send(batch);

            Assert.AreEqual(expectedCandidates[0], batch[0].Result[0]);
            Assert.AreEqual(expectedCandidates[1], batch[1].Result[0]);
            Assert.AreEqual(expectedCandidates[2], batch[1].Result[1]);
        }
        public async Task TestCandidatesCorrectlyAssignedToCorrespondingLookupAsync()
        {
            var expectedResults = new Result[2];

            expectedResults[0] = new Result();
            expectedResults[1] = new Result();
            var batch = new Batch {
                new Lookup(), new Lookup()
            };

            var sender       = new MockSender(new Response(0, new byte[0]));
            var deserializer = new FakeDeserializer(expectedResults);
            var client       = new Client(sender, deserializer);

            await client.SendAsync(batch);

            Assert.AreEqual(expectedResults[0], batch[0].Result);
            Assert.AreEqual(expectedResults[1], batch[1].Result);
        }
Example #19
0
        public void TestCandidatesCorrectlyAssignedToCorrespondingLookup()
        {
            var expectedResults = new Result[2];

            expectedResults[0] = new Result();
            expectedResults[1] = new Result();
            var batch = new Batch();

            batch.Add(new Lookup());
            batch.Add(new Lookup());

            var sender       = new MockSender(new Response(0, new byte[0]));
            var deserializer = new FakeDeserializer(expectedResults);
            var client       = new Client("/", sender, deserializer);

            client.Send(batch);

            Assert.AreEqual(expectedResults[0], batch[0].Result);
            Assert.AreEqual(expectedResults[1], batch[1].Result);
        }
Example #20
0
        public async Task TestCandidatesCorrectlyAssignedToCorrespondingLookupAsync()
        {
            var expectedCandidates = new Candidate[3];

            expectedCandidates[0] = new Candidate(0);
            expectedCandidates[1] = new Candidate(1);
            expectedCandidates[2] = new Candidate(1);
            var batch = new Batch();

            batch.Add(new Lookup());
            batch.Add(new Lookup());

            var sender       = new MockSender(new Response(0, new Byte[0]));
            var deserializer = new FakeDeserializer(expectedCandidates);
            var client       = new Client("/", sender, deserializer);

            await client.SendAsync(batch);

            Assert.AreEqual(expectedCandidates[0], batch[0].Result[0]);
            Assert.AreEqual(expectedCandidates[1], batch[1].Result[0]);
            Assert.AreEqual(expectedCandidates[2], batch[1].Result[1]);
        }
Example #21
0
        public DtlsOverlordClientServer(bool threaded, bool good_client,
                                        bool good_server, double noisy)
        {
            var server_ch = new OpenSslCertificateHandler();

            if (good_server)
            {
                server_ch.AddSignedCertificate(X509);
            }
            server_ch.AddCACertificate(X509);
            Server   = new DtlsOverlord(Rsa, server_ch, PType);
            ServerIn = new MockDataHandler();
            Server.Subscribe(ServerIn, null);

            var client_ch = new OpenSslCertificateHandler();

            if (good_client)
            {
                client_ch.AddCACertificate(X509);
            }
            client_ch.AddSignedCertificate(X509);
            Client   = new DtlsOverlord(Rsa, client_ch, PType);
            ClientIn = new MockDataHandler();
            Client.Subscribe(ClientIn, null);

            if (threaded)
            {
                ToServer = new ThreadedMockSender(null, null, Server, 1, noisy);
                ToClient = new ThreadedMockSender(ToServer, null, Client, 1, noisy);
            }
            else
            {
                ToServer = new MockSender(null, null, Server, 1, noisy);
                ToClient = new MockSender(ToServer, null, Client, 1, noisy);
            }
            ToServer.ReturnPath = ToClient;
        }
Example #22
0
        public void Test()
        {
            Timer            t   = new Timer(Timeout, null, 0, 500);
            SecurityOverlord so0 = CreateValidSO("valid0");
            SecurityOverlord so1 = CreateValidSO("valid1");

            //Test block one
            {
                MockSender ms0 = new MockSender(null, null, so1, 0);
                MockSender ms1 = new MockSender(ms0, null, so0, 0);
                ms0.ReturnPath = ms1;

                SecurityAssociation sa0 = so0.CreateSecurityAssociation(ms0, true);
                SecurityAssociation sa1 = so1.CreateSecurityAssociation(ms1, 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!");

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sa1.Send(mb);

                new SecurityPolicy(12345, "DES", "MD5");
                sa0 = so0.CreateSecurityAssociation(ms0, 12345, true);
                Assert.AreEqual(sa0.State, SecurityAssociation.SAState.Active, "sa0 should be active!");
                Assert.AreEqual(so0.SACount, 2, "so0 should contain just one!");
                Assert.AreEqual(so1.SACount, 2, "so1 should contain just one!");

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sa0.Send(mb);
            }

            // create ~250 valid SAs for one guy...
            for (int i = 2; i < 250; i++)
            {
                SecurityOverlord so  = CreateValidSO("valid" + i);
                MockSender       msa = new MockSender(null, null, so, 0);
                MockSender       msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb, true);
                Assert.AreEqual(sab.State, SecurityAssociation.SAState.Active, "sab should be active! " + i);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa, true);
                Assert.AreEqual(saa.State, SecurityAssociation.SAState.Active, "saa should be active! " + i);

                MockDataHandler mdha = new MockDataHandler();
                saa.Subscribe(mdha, null);
                MockDataHandler mdhb = new MockDataHandler();
                sab.Subscribe(mdhb, null);

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdhb Contains " + i);

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdha Contains " + i);
            }

            for (int i = 250; i < 500; i++)
            {
                int ij = (250 % 3) + 1;
                SecurityOverlord so  = CreateInvalidSO("valid" + i, ij);
                MockSender       msa = new MockSender(null, null, so, 0);
                MockSender       msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb, true);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa, true);
                Assert.AreEqual(sab.State, SecurityAssociation.SAState.Waiting, "sab should be waiting! " + i);
                Assert.AreEqual(saa.State, SecurityAssociation.SAState.Waiting, "saa should be waiting! " + i);
            }

            // create ~250 valid SAs for one guy...
            for (int i = 500; i < 750; i++)
            {
                SecurityOverlord so  = CreateValidSO("valid" + i);
                MockSender       msa = new MockSender(null, null, so, 0);
                MockSender       msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb, true);
                Assert.AreEqual(sab.State, SecurityAssociation.SAState.Active, "sab should be active! " + i);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa, true);
                Assert.AreEqual(saa.State, SecurityAssociation.SAState.Active, "saa should be active! " + i);

                MockDataHandler mdha = new MockDataHandler();
                saa.Subscribe(mdha, null);
                MockDataHandler mdhb = new MockDataHandler();
                sab.Subscribe(mdhb, null);

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdhb Contains " + i);

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdha Contains " + i);
            }

            Random randr = new Random();

            byte[] br = new byte[128];
            randr.NextBytes(br);
            MemBlock mbr = MemBlock.Reference(br);

            foreach (Dictionary <ISender, SecurityAssociation> sender_to_sa in so0.SPI.Values)
            {
                foreach (SecurityAssociation sa in sender_to_sa.Values)
                {
                    sa.Send(mbr);
                }
            }

            Thread.Sleep(SecurityAssociation.TIMEOUT * 5);
            so0.SAGarbageCollect();
            Assert.AreEqual(500, so0.SACount, "Count!");

            so0.SAGarbageCollect();
            Assert.AreEqual(0, so0.SACount, "Count!");

            t.Dispose();
        }
Example #23
0
        public void Test()
        {
            Timer           t   = new Timer(Timeout, null, 0, 500);
            PeerSecOverlord so0 = CreateValidSO("valid0");
            PeerSecOverlord so1 = CreateValidSO("valid1");

            //Test block one
            {
                MockSender ms0 = new MockSender(null, null, so1, 0);
                MockSender ms1 = new MockSender(ms0, null, so0, 0);
                ms0.ReturnPath = ms1;

                SecurityAssociation sa0 = so0.CreateSecurityAssociation(ms0);
                SecurityAssociation sa1 = so1.CreateSecurityAssociation(ms1);
                Assert.AreEqual(sa0.State, SecurityAssociation.States.Active, "sa0 should be active!");
                Assert.AreEqual(sa1.State, SecurityAssociation.States.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!");

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sa1.Send(mb);

                new SecurityPolicy(12345, "DES", "MD5");
                sa0 = so0.CreateSecurityAssociation(ms0, 12345);
                Assert.AreEqual(sa0.State, SecurityAssociation.States.Active, "sa0 should be active!");
                Assert.AreEqual(so0.SACount, 2, "so0 should contain just one!");
                Assert.AreEqual(so1.SACount, 2, "so1 should contain just one!");

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sa0.Send(mb);
            }

            // create ~250 valid SAs for one guy...
            for (int i = 2; i < 250; i++)
            {
                PeerSecOverlord so  = CreateValidSO("valid" + i);
                MockSender      msa = new MockSender(null, null, so, 0);
                MockSender      msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb);
                Assert.AreEqual(sab.State, SecurityAssociation.States.Active, "sab should be active! " + i);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa);
                Assert.AreEqual(saa.State, SecurityAssociation.States.Active, "saa should be active! " + i);

                MockDataHandler mdha = new MockDataHandler();
                saa.Subscribe(mdha, null);
                MockDataHandler mdhb = new MockDataHandler();
                sab.Subscribe(mdhb, null);

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdhb Contains " + i);

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdha Contains " + i);
            }

            for (int i = 250; i < 500; i++)
            {
                int             ij  = (250 % 3) + 1;
                PeerSecOverlord so  = CreateInvalidSO("valid" + i, ij);
                MockSender      msa = new MockSender(null, null, so, 0);
                MockSender      msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa);
                Assert.AreEqual(sab.State, SecurityAssociation.States.Waiting, "sab should be waiting! " + i);
                Assert.AreEqual(saa.State, SecurityAssociation.States.Waiting, "saa should be waiting! " + i);
            }

            // create ~250 valid SAs for one guy...
            for (int i = 500; i < 750; i++)
            {
                PeerSecOverlord so  = CreateValidSO("valid" + i);
                MockSender      msa = new MockSender(null, null, so, 0);
                MockSender      msb = new MockSender(msa, null, so0, 0);
                msa.ReturnPath = msb;

                SecurityAssociation sab = so.CreateSecurityAssociation(msb);
                Assert.AreEqual(sab.State, SecurityAssociation.States.Active, "sab should be active! " + i);
                SecurityAssociation saa = so0.CreateSecurityAssociation(msa);
                Assert.AreEqual(saa.State, SecurityAssociation.States.Active, "saa should be active! " + i);

                MockDataHandler mdha = new MockDataHandler();
                saa.Subscribe(mdha, null);
                MockDataHandler mdhb = new MockDataHandler();
                sab.Subscribe(mdhb, null);

                Random rand = new Random();
                byte[] b    = new byte[128];
                rand.NextBytes(b);
                MemBlock mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdhb Contains " + i);

                b = new byte[128];
                rand.NextBytes(b);
                mb = MemBlock.Reference(b);
                sab.Send(mb);
                Assert.IsTrue(mdha.Contains(mb), "mdha Contains " + i);
            }

            Random randr = new Random();

            byte[] br = new byte[128];
            randr.NextBytes(br);
            MemBlock mbr = MemBlock.Reference(br);

            // New logic requires that we call this first, to set all SAs to not
            // running, the following for loop sets all "Active" SAs back to _running
            // Thus keeping the original intent of this test.  The new logic only
            // affects testing paths.
            so0.CheckSAs(DateTime.UtcNow);

            foreach (Dictionary <ISender, PeerSecAssociation> sender_to_sa in so0.SPI.Values)
            {
                foreach (SecurityAssociation sa in sender_to_sa.Values)
                {
                    if (sa.State == SecurityAssociation.States.Active)
                    {
                        sa.Send(mbr);
                    }
                }
            }

            so0.CheckSAs(DateTime.UtcNow);
            Assert.AreEqual(500, so0.SACount, "Count!");

            so0.CheckSAs(DateTime.UtcNow);
            Assert.AreEqual(0, so0.SACount, "Count!");

            t.Dispose();
        }
 public void SetUp()
 {
     buffer = new RingBuffer();
     sender = new MockSender();
 }
Example #25
0
 //--------------------------------------------------------------------------------------
 public MockEvent_Test00(MockSender s)
     : base(s)
 {
 }