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