Exemplo n.º 1
0
        public void MakeAndReadFragments5_2()
        {
            var origmsgs = new List <TunnelMessage>();

            for (int i = 0; i < 5; ++i)
            {
                var adatarec = new DataMessage(new BufLen(BufUtils.RandomBytes(2048)));

                var amsg = new TunnelMessageRouter(
                    adatarec,
                    new I2PIdentHash(true));

                origmsgs.Add(amsg);
            }

            var msgs = TunnelDataMessage.MakeFragments(origmsgs, BufUtils.RandomUint());

            var mkmsg     = new TunnelDataFragmentReassembly();
            var recvtmsgs = msgs
                            .Chunk(a => 2)
                            .Shuffle()
                            .Select(m => mkmsg.Process(m, out var _))
                            .SelectMany(b => b);

            Assert.IsTrue(origmsgs.All(o => recvtmsgs.Any(m =>
                                                          m.Delivery == o.Delivery &&
                                                          m.Message.CreateHeader16.HeaderAndPayload == o.Message.CreateHeader16.HeaderAndPayload
                                                          )));
        }
Exemplo n.º 2
0
        public void MakeAndReadFragment()
        {
            var arec = new DatabaseLookupMessage(
                new I2PIdentHash(true),
                new I2PIdentHash(true),
                DatabaseLookupMessage.LookupTypes.Normal);

            var msg = new TunnelMessageRouter(
                arec,
                new I2PIdentHash(true));

            var refmsgdata = msg.Message.CreateHeader16.HeaderAndPayload;

            var fragments = TunnelDataMessage.MakeFragments(
                new TunnelMessage[] { msg },
                BufUtils.RandomUint());

            var mkmsg     = new TunnelDataFragmentReassembly();
            var recvtmsgs = mkmsg.Process(fragments.Shuffle().ToArray(), out var _);

            foreach (var rmsg in recvtmsgs)
            {
                var rmsgdata = rmsg.Message.CreateHeader16.HeaderAndPayload;
                Assert.IsTrue(msg.Delivery == rmsg.Delivery);
                Assert.IsTrue(refmsgdata == rmsgdata);
            }
        }