Пример #1
0
        public void ACommandIsSentToAFollower()
        {
            var leader   = _servers.SingleOrDefault(x => x.Server.State is Leader);
            var follower = _servers.FirstOrDefault(x => x.Server.State is Follower);

            while (leader == null)
            {
                ThenANewLeaderIsElected();
                leader   = _servers.SingleOrDefault(x => x.Server.State is Leader);
                follower = _servers.FirstOrDefault(x => x.Server.State is Follower);
            }
            _fakeCommand = new FakeCommand(Guid.NewGuid());
            var urlOfLeader = follower.ServerUrl;
            var json        = JsonConvert.SerializeObject(_fakeCommand, Formatting.None, new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All
            });
            var httpContent = new StringContent(json);

            using (var httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(urlOfLeader);
                var response = httpClient.PostAsync("/command", httpContent).Result;
                response.EnsureSuccessStatusCode();
            }

            //hacky delay
            var stopWatch = Stopwatch.StartNew();

            while (stopWatch.ElapsedMilliseconds < 1000)
            {
            }
        }
Пример #2
0
        private void SendCommandToFollower()
        {
            var followerServer = _servers.First(x => x.Value.Node.State is Follower);
            var command        = new FakeCommand();

            followerServer.Value.Node.Accept(command);
        }
Пример #3
0
        private void SendCommandToLeader()
        {
            var leaderServer = _servers.First(x => x.Value.Node.State is Leader);
            var command      = new FakeCommand();

            leaderServer.Value.Node.Accept(command);
        }
Пример #4
0
        private async Task SendCommandToFollower()
        {
            async Task <bool> SendCommand()
            {
                var followerServer = _servers.First(x => x.Value.Node.State is Follower);
                var command        = new FakeCommand();
                var response       = await followerServer.Value.Node.Accept(command);

                if (response is ErrorResponse <FakeCommand> )
                {
                    return(false);
                }

                return(true);
            }

            var sentCommand = await WaitFor(25000).Until(async() => await SendCommand());

            sentCommand.ShouldBeTrue();
        }
Пример #5
0
        public void AFakeCommandIsSentToTheLeader()
        {
            var leader = _servers.SingleOrDefault(x => x.Server.State is Leader);

            while (leader == null)
            {
                ThenANewLeaderIsElected();
                leader = _servers.SingleOrDefault(x => x.Server.State is Leader);
            }
            _fakeCommand = new FakeCommand(Guid.NewGuid());
            var urlOfLeader = leader.ServerUrl;
            var json        = JsonConvert.SerializeObject(_fakeCommand, Formatting.None, new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All
            });
            var httpContent = new StringContent(json);

            using (var httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(urlOfLeader);
                var response = httpClient.PostAsync("/command", httpContent).Result;
                response.EnsureSuccessStatusCode();
            }
        }
Пример #6
0
 private async Task SendCommandToLeader()
 {
     var leaderServer = GetLeader();
     var command      = new FakeCommand();
     await leaderServer.Value.Node.Accept(command);
 }