Esempio n. 1
0
        /// <summary>
        /// Creates peers for benchmarking. The first peer will be used as the master.
        /// This means that shutting down the master will shut down all other peers as well.
        /// </summary>
        /// <param name="nrOfPeers">Number of peers to create.</param>
        /// <param name="rnd">The random object used for peer ID creation.</param>
        /// <param name="port">The UDP and TCP port.</param>
        /// <param name="maintenance">Indicates whether maintenance should be enabled.</param>
        /// <param name="timeout">Indicates whether timeout should be enabled.</param>
        /// <returns></returns>
        public static Peer[] CreateNodes(int nrOfPeers, InteropRandom rnd, int port, bool maintenance, bool timeout)
        {
            Console.WriteLine("Creating network with {0} peers...", nrOfPeers);

            var peers = new Peer[nrOfPeers];

            var masterId = CreateRandomId(rnd);
            var masterMap = new PeerMap(new PeerMapConfiguration(masterId));
            var pb = new PeerBuilder(masterId)
                .SetPorts(port)
                .SetEnableMaintenance(maintenance)
                .SetExternalBindings(new Bindings())
                .SetPeerMap(masterMap);
            if (!timeout)
            {
                pb.SetChannelServerConfiguration(CreateInfiniteTimeoutChannelServerConfiguration(port));
            }
            peers[0] = pb.Start();
            //Logger.Info("Created master peer: {0}.", peers[0].PeerId);

            for (int i = 1; i < nrOfPeers; i++)
            {
                peers[i] = CreateSlave(peers[0], rnd, maintenance, timeout);
            }
            return peers;
        }
Esempio n. 2
0
 public Sender(Number160 peerId, IList<IPeerStatusListener> peerStatusListeners,
     ChannelClientConfiguration channelClientConfiguration, Dispatcher dispatcher)
 {
     _peerStatusListeners = peerStatusListeners;
     ChannelClientConfiguration = channelClientConfiguration;
     _dispatcher = dispatcher;
     _random = new InteropRandom((ulong)peerId.GetHashCode());
 }
Esempio n. 3
0
 private static Peer CreateSlave(Peer master, InteropRandom rnd, bool maintenance, bool timeout)
 {
     var slaveId = CreateRandomId(rnd);
     var slaveMap = new PeerMap(new PeerMapConfiguration(slaveId).SetPeerNoVerification());
     var pb = new PeerBuilder(slaveId)
         .SetMasterPeer(master)
         .SetEnableMaintenance(maintenance)
         .SetExternalBindings(new Bindings())
         .SetPeerMap(slaveMap);
     if (!timeout)
     {
         pb.SetChannelServerConfiguration(CreateInfiniteTimeoutChannelServerConfiguration(Ports.DefaultPort));
     }
      var slave = pb.Start();
     //Logger.Info("Created slave peer {0}.", slave.PeerId);
     return slave;
 }
Esempio n. 4
0
 public void TestInteropSeed()
 {
     // use the same seed as in Java
     const int seed = 1234567890;
     var random = new InteropRandom(seed);
     var result1 = random.NextInt(1000);
     var result2 = random.NextInt(500);
     var result3 = random.NextInt(10);
   
     // requires same results as in Java
     // result1 is 677
     // result2 is 242
     // result3 is 1
     Assert.AreEqual(result1, 677);
     Assert.AreEqual(result2, 242);
     Assert.AreEqual(result3, 1);
 }
Esempio n. 5
0
        public void TestSeed()
        {
            // create a random seed
            var r = new Random();
            var seed = (ulong)r.Next();

            int tests = 20;
            var randoms = new InteropRandom[tests];
            var results = new int[tests];

            for (int i = 0; i < tests; i++)
            {
                randoms[i] = new InteropRandom(seed);
                results[i] = randoms[i].NextInt(1000);

                if (i > 0)
                {
                    Assert.AreEqual(results[i], results[i - 1]);
                }
            }
        }
Esempio n. 6
0
 private static Number160 CreateRandomId(InteropRandom rnd)
 {
     var vals = new int[Number160.IntArraySize];
     for (int i = 0; i < vals.Length; i++)
     {
         vals[i] = rnd.NextInt(Int32.MaxValue);
     }
     return new Number160(vals);
 }