void BeginTestInvites(InvitesTest test, Action cb = null) { var peer1 = test.Peers[_inviteTestsCounter++ % test.Peers.Count]; _retry: var peer2 = test.Peers[_rnd.Next(test.Peers.Count)]; if (peer1 == peer2) { goto _retry; } EmitAllPeers(AttentionLevel.guiActivity, $"testing message from {peer1} to {peer2} ({test.counter}/{test.MaxCount}) {DateTime.Now}"); var userCertificate1 = UserCertificate.GenerateKeyPairsAndSignAtSingleDevice(peer1.DrpPeerEngine.CryptoLibrary, peer1.UserId, peer1.UserRootPrivateKeys, DateTime.UtcNow.AddHours(-1), DateTime.UtcNow.AddHours(1)); var text = $"test{_rnd.Next()}-{_rnd.Next()}_from_{peer1}_to_{peer2}"; peer1.LocalDrpPeer.BeginSendShortSingleMessage(userCertificate1, peer2.LocalDrpPeer.Configuration.LocalPeerRegistrationId, peer2.UserId, text, null, (exc) => { test.counter++; if (peer2.LatestReceivedTextMessage == text) { test.successfulCount++; _visionChannel.Emit(peer1.DrpPeerEngine.Configuration.VisionChannelSourceId, DrpTesterVisionChannelModuleName, AttentionLevel.guiActivity, $"successfully tested message from {peer1} to {peer2}. success rate = {(double)test.successfulCount * 100 / test.counter}% ({test.successfulCount}/{test.counter})"); } else { EmitAllPeers(AttentionLevel.mediumPain, $"test message failed from {peer1} to {peer2}: received '{peer2.LatestReceivedTextMessage}', expected '{text}"); } if (test.counter < test.MaxCount) { BeginTestInvites(test, cb); } else { var successRatePercents = (double)test.successfulCount * 100 / test.counter; var level = successRatePercents == 100 ? AttentionLevel.guiActivity : (successRatePercents > 99 ? AttentionLevel.lightPain : AttentionLevel.mediumPain); _visionChannel.Emit(peer1.DrpPeerEngine.Configuration.VisionChannelSourceId, DrpTesterVisionChannelModuleName, level, $"messages test is complete: success rate = {successRatePercents}%"); cb?.Invoke(); } }); }
void BeginTestInvitesIfNotStartedAlready() { if (_invitesTestTimer != null) { return; } _invitesTestTimer = new Timer((obj) => { if (_invitesTestInProgress) { return; } _invitesTestInProgress = true; var test = new InvitesTest() { Peers = _xList.Where(x => x.LocalDrpPeer != null).ToList() }; GenerateSharedContactBook(test.Peers); BeginTestInvites(test, () => { _invitesTestInProgress = false; }); }, null, 0, 60000); }