public void ElectNewManager()
 {
     Assert.That(Peer1.Manager.Equals(Manager.Address));
     AsyncManagerAnnounce(() => {
         //"Have" to send bogus command to kill the listener.
         // ReSharper disable ReturnValueOfPureMethodIsNotUsed
         Manager.StationActive(Peer1.Address);
         // ReSharper restore ReturnValueOfPureMethodIsNotUsed
         Peer1.ElectNewManager();
     });
     Assert.That(!Peer1.Manager.Equals(Manager.Address));
 }
        public void RequestBallotAndAnnounceBallotReceivedAndRevokedTest()
        {
            var vn  = new VoterNumber(250000);
            var cpr = new CPR(2312881234);

            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.Unavailable);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.Unavailable);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.Unavailable);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.Unavailable);
            var data = new List <EncryptedVoterData> {
                new EncryptedVoterData(new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(vn.Value), Peer1.Crypto.VoterDataEncryptionKey)), new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(cpr.Value), Peer1.Crypto.VoterDataEncryptionKey)), new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(cpr.Value + (uint)BallotStatus.NotReceived), Peer1.Crypto.VoterDataEncryptionKey)))
            };

            Peer1.Database.Import(data);
            Peer2.Database.Import(data);
            Peer3.Database.Import(data);
            Manager.Database.Import(data);


            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.NotReceived);
            var managerListenerResult = ManagerListener.BeginInvoke(null, null);

            AsyncManagerAnnounce(() => Peer1.RequestBallot(vn, cpr));
            ManagerListener.EndInvoke(managerListenerResult);
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.Received);
            AsyncManagerAnnounce(() => Manager.AnnounceRevokeBallot(vn, cpr));
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.NotReceived);

            managerListenerResult = ManagerListener.BeginInvoke(null, null);
            AsyncManagerAnnounce(() => Peer1.RequestBallot(cpr, "yo boii"));
            ManagerListener.EndInvoke(managerListenerResult);
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.Received);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.Received);

            AsyncManagerAnnounce(() => Manager.AnnounceRevokeBallot(cpr, "yo boii"));
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer2.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Peer3.Database[vn, cpr] == BallotStatus.NotReceived);
            Assert.That(Manager.Database[vn, cpr] == BallotStatus.NotReceived);
        }
        public void ListenerTest()
        {
            Manager.StartListening();
            //Waste some CPU time while the thread hopefully starts...
            var c = 0;

            while (c < 500000)
            {
                c++;
            }
            Console.WriteLine(c);
            Assert.That(Peer1.StationActive(Manager.Address));
            Assert.That(Peer1.StationActive(Manager.Address));
            Manager.StopListening();
            Assert.That(!Peer1.StationActive(Manager.Address));
        }
 public void AnnounceAddAndRemovePeerTest()
 {
     Manager.StartListening();
     Peer1.StartListening();
     Peer2.StartListening();
     Peer3.StartListening();
     Peer4.StartListening();
     Assert.That(!Manager.Peers.ContainsKey(Peer4.Address) && !Peer1.Peers.ContainsKey(Peer4.Address) && !Peer2.Peers.ContainsKey(Peer4.Address) && !Peer3.Peers.ContainsKey(Peer4.Address));
     Manager.AnnounceAddPeer(Peer4.Address, Peer4.Crypto.Keys.Item1);
     Manager.AddPeer(Peer4.Address, Peer4.Crypto.Keys.Item1);
     Thread.Sleep(3000);
     Assert.That(Manager.Peers.ContainsKey(Peer4.Address) && Peer1.Peers.ContainsKey(Peer4.Address) && Peer2.Peers.ContainsKey(Peer4.Address) && Peer3.Peers.ContainsKey(Peer4.Address));
     Manager.AnnounceRemovePeer(Peer4.Address);
     Thread.Sleep(3000);
     Assert.That(!Manager.Peers.ContainsKey(Peer4.Address) && !Peer1.Peers.ContainsKey(Peer4.Address) && !Peer2.Peers.ContainsKey(Peer4.Address) && !Peer3.Peers.ContainsKey(Peer4.Address));
 }
        public void BallotReceivedAndRevoked()
        {
            var vn  = new VoterNumber(250000);
            var cpr = new CPR(2312881234);

            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.Unavailable);
            Peer1.Database.Import(new List <EncryptedVoterData> {
                new EncryptedVoterData(new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(vn.Value), Peer1.Crypto.VoterDataEncryptionKey)), new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(cpr.Value), Peer1.Crypto.VoterDataEncryptionKey)), new CipherText(Peer1.Crypto.AsymmetricEncrypt(Bytes.From(cpr.Value + (uint)BallotStatus.NotReceived), Peer1.Crypto.VoterDataEncryptionKey)))
            });

            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.NotReceived);
            Peer1.BallotReceived(vn, cpr);
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.Received);
            Peer1.RevokeBallot(vn, cpr);
            Assert.That(Peer1.Database[vn, cpr] == BallotStatus.NotReceived);

            Assert.That(Peer1.Database[cpr, "yo boii"] == BallotStatus.NotReceived);
            Peer1.BallotReceived(cpr, "yo boii");
            Assert.That(Peer1.Database[cpr, "yo boii"] == BallotStatus.Received);
            Peer1.RevokeBallot(cpr, "yo boii");
            Assert.That(Peer1.Database[cpr, "yo boii"] == BallotStatus.NotReceived);
        }
Esempio n. 6
0
        /// <summary>
        /// The tear down.
        /// </summary>
        [TearDown] public void TearDown()
        {
            Manager.Dispose();
            Peer1.Dispose();
            Peer2.Dispose();
            Peer3.Dispose();
            Peer4.Dispose();
            Manager = null;
            Peer1   = null;
            Peer2   = null;
            Peer3   = null;
            Peer4   = null;
            File.Delete("StationTestsManagerVoters.sqlite");
            File.Delete("StationTestsPeer1Voters.sqlite");
            File.Delete("StationTestsPeer2Voters.sqlite");
            File.Delete("StationTestsPeer3Voters.sqlite");
            File.Delete("StationTestsPeer4Voters.sqlite");

            File.Delete("StationsTestsManagerLog.sqlite");
            File.Delete("StationsTestsPeer1Log.sqlite");
            File.Delete("StationsTestsPeer2Log.sqlite");
            File.Delete("StationsTestsPeer3Log.sqlite");
            File.Delete("StationsTestsPeer4Log.sqlite");
        }