示例#1
0
        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();
                }
            });
        }
示例#2
0
 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);
 }