Exemplo n.º 1
0
        public void BlockDownloadFromNetwork()
        {
            using (var server = new NodeServer(Network.Main))
            {
                var originalNode = server.GetLocalNode();
                var original     = originalNode.BuildChain();
                Assert.True(originalNode.FullVersion.StartHeight <= original.Height);

                int simultaneous = 3;
                var chaines      = Enumerable.Range(0, simultaneous).Select(i => original.Clone()).ToArray();
                var time         = Benchmark.Bench(() =>
                {
                    Parallel.For(0, simultaneous, new ParallelOptions()
                    {
                        MaxDegreeOfParallelism = simultaneous
                    }, i =>
                    {
                        var chain     = chaines[i];
                        var node      = new NodeServer(Network.Main).GetLocalNode();
                        var localTime = Benchmark.Bench(() =>
                        {
                            chain.PushChange(new ChainChange()
                            {
                                ChangeType       = ChainChangeType.BackStep,
                                HeightOrBackstep = 100
                            }, null);
                            var blocks = node.GetBlocks(chain).ToList();
                            Assert.True(blocks.Count == 100 || blocks.Count == 101);
                        });
                    });
                });
                Console.WriteLine(time);
            }
        }