Example #1
0
        public void TestOneRemoteDifferentQueries_Parallel(int count)
        {
            var remote = new Remote(ServerUrl);
            var tc     = remote.ConnectAsync();

            Assert.IsTrue(tc.Wait(DeferredWaitingTime));

            var watch = new Stopwatch();

            watch.Start();
            var tasks = new Task[count];

            for (int i = 0; i < count; i++)
            {
                tasks[i] = i % 2 == 0
                    ? (Task)remote.RequestLedger().SubmitAsync()
                    : remote.RequestServerInfo().SubmitAsync();
            }

            var success = Task.WaitAll(tasks, DeferredWaitingTime * 100);

            watch.Stop();
            TestContext.WriteLine(watch.ElapsedMilliseconds.ToString());
            Assert.IsTrue(success);

            var failedCount = 0;

            for (int i = 0; i < count; i++)
            {
                if (i % 2 == 0)
                {
                    var task = (Task <MessageResult <LedgerResponse> >)tasks[i];
                    var hash = task.Result?.Result?.Ledger?.Hash;
                    if (hash == null)
                    {
                        failedCount++;
                    }
                }
                else
                {
                    var task    = (Task <MessageResult <ServerInfoResponse> >)tasks[i];
                    var version = task.Result?.Result?.Info?.Version;
                    if (version == null)
                    {
                        failedCount++;
                    }
                }
            }

            Assert.AreEqual(0, failedCount);
        }
Example #2
0
        public void TestConnectAsync()
        {
            _remote = new Remote(ServerUrl);
            var tc = _remote.ConnectAsync();

            Assert.IsTrue(tc.Wait(DeferredWaitingTime));

            Assert.IsTrue(_remote.IsConnected);
            var response = tc.Result;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Result);
            Assert.IsNotNull(response.Message);
            Assert.IsNull(response.Exception);
        }
Example #3
0
        public void TestMultipleRemotes_Sequence(int count)
        {
            var watch = new Stopwatch();

            watch.Start();

            var results = new LedgerResponse[count];
            var tasks   = new Task[count];

            for (int i = 0; i < count; i++)
            {
                var remote = new Remote(ServerUrl);
                var tc     = remote.ConnectAsync(null, DeferredWaitingTime * 10);
                var index  = i;
                var task   = tc.ContinueWith(_ =>
                {
                    var tr = remote.RequestLedger().SubmitAsync(null, DeferredWaitingTime);
                    if (tr.Wait(DeferredWaitingTime))
                    {
                        results[index] = tr.Result.Result;
                    }
                });
                task.Wait(DeferredWaitingTime * 2);
            }

            watch.Stop();
            TestContext.WriteLine(watch.ElapsedMilliseconds.ToString());

            var failedCount = 0;

            foreach (var result in results)
            {
                var hash = result?.Ledger?.Hash;
                if (hash == null)
                {
                    failedCount++;
                }
            }
            Assert.AreEqual(0, failedCount);
        }
Example #4
0
        public void TestMultipleRemotes_Parallel(int count)
        {
            var watch = new Stopwatch();

            watch.Start();

            var tasks = new Task <MessageResult <ServerInfoResponse> > [count];

            for (int i = 0; i < count; i++)
            {
                var remote = new Remote(ServerUrl);
                var tc     = remote.ConnectAsync(null, DeferredWaitingTime * 10);
                var index  = i;
                tasks[i] = tc.ContinueWith(_ =>
                {
                    var tr = remote.RequestServerInfo().SubmitAsync(null, DeferredWaitingTime * 10);
                    return(tr);
                }).Result;
            }

            var success = Task.WaitAll(tasks, DeferredWaitingTime * 100);

            watch.Stop();
            TestContext.WriteLine(watch.ElapsedMilliseconds.ToString());

            Assert.IsTrue(success);

            var failedCount = 0;

            foreach (var task in tasks)
            {
                var version = task.Result?.Result?.Info?.Version;
                if (version == null)
                {
                    failedCount++;
                }
            }
            Assert.AreEqual(0, failedCount);
        }
Example #5
0
        public void TestOneRemoteMultipleRequests_Parallel(int count)
        {
            var remote = new Remote(ServerUrl);
            var tc     = remote.ConnectAsync();

            Assert.IsTrue(tc.Wait(DeferredWaitingTime));

            var watch = new Stopwatch();

            watch.Start();
            var tasks = new Task <MessageResult <LedgerResponse> > [count];

            for (int i = 0; i < count; i++)
            {
                tasks[i] = remote.RequestLedger().SubmitAsync();
            }

            var success = Task.WaitAll(tasks, DeferredWaitingTime * 100);

            watch.Stop();
            TestContext.WriteLine(watch.ElapsedMilliseconds.ToString());
            Assert.IsTrue(success);

            var failedCount = 0;

            foreach (var task in tasks)
            {
                var result = task.Result;
                var hash   = result?.Result?.Ledger?.Hash;
                if (hash == null)
                {
                    failedCount++;
                }
            }
            Assert.AreEqual(0, failedCount);
        }
Example #6
0
        public void TestOneRemoteMultipleRequests_Sequence(int count)
        {
            var remote = new Remote(ServerUrl);
            var tc     = remote.ConnectAsync();

            Assert.IsTrue(tc.Wait(DeferredWaitingTime));

            var watch = new Stopwatch();

            watch.Start();
            var results = new LedgerResponse[count];

            for (int i = 0; i < count; i++)
            {
                var task = remote.RequestLedger().SubmitAsync();
                if (task.Wait(DeferredWaitingTime))
                {
                    results[i] = task.Result.Result;
                }
            }

            watch.Stop();
            TestContext.WriteLine(watch.ElapsedMilliseconds.ToString());

            var failedCount = 0;

            foreach (var result in results)
            {
                var hash = result?.Ledger?.Hash;
                if (hash == null)
                {
                    failedCount++;
                }
            }
            Assert.AreEqual(0, failedCount);
        }