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 ))); }
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); } }