/// <summary>
        /// Creates a new <see cref="ConsensusServerState"/> for a <see cref="ConsensusServer"/>.
        /// </summary>
        /// <param name="server">The <see cref="ConsensusServer"/>.</param>
        public ConsensusServerState(ConsensusServer server)
        {
            // validate arguments
            if (server == null)
                throw new ArgumentNullException("server");

            // store the argument
            this.server = server;

            // always start as a follower
            ChangeState(new Follower(this));
        }
        /// <summary>
        /// Creates a new <see cref="ConsensusServerState"/> for a <see cref="ConsensusServer"/>.
        /// </summary>
        /// <param name="server">The <see cref="ConsensusServer"/>.</param>
        public ConsensusServerState(ConsensusServer server)
        {
            // validate arguments
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }

            // store the argument
            this.server = server;

            // always start as a follower
            ChangeState(new Follower(this));
        }
        public void DisposesLogAndProtocol()
        {
            // arrange
            var configuration = new Mock<IServerConfiguration>().Object;
            var scheduler = new EventLoop();
            var logMock = new Mock<ILog>();
            var log = logMock.Object;
            var protocolMock = new Mock<IProtocol>();
            var protocol = protocolMock.Object;
            var server = new ConsensusServer(configuration, log, protocol, scheduler);

            // act
            server.Dispose();

            // assert
            logMock.Verify(x => x.Dispose(), Times.Once());
            protocolMock.Verify(x => x.Dispose(), Times.Once());

            // cleanup
            scheduler.Dispose();
        }
Exemple #4
0
        public void DisposesLogAndProtocol()
        {
            // arrange
            var configuration = new Mock <IServerConfiguration>().Object;
            var scheduler     = new EventLoop();
            var logMock       = new Mock <ILog>();
            var log           = logMock.Object;
            var protocolMock  = new Mock <IProtocol>();
            var protocol      = protocolMock.Object;
            var server        = new ConsensusServer(configuration, log, protocol, scheduler);

            // act
            server.Dispose();

            // assert
            logMock.Verify(x => x.Dispose(), Times.Once());
            protocolMock.Verify(x => x.Dispose(), Times.Once());

            // cleanup
            scheduler.Dispose();
        }
        public void Constructor()
        {
            // arrange
            var configuration = new Mock<IServerConfiguration>().Object;
            var log = new Mock<ILog>().Object;
            var protocol = new Mock<IProtocol>().Object;
            var scheduler = new Mock<IResourceTrackingScheduler>().Object;

            // assert
            Assert.That(() => new ConsensusServer(null, log, protocol, scheduler), Throws.InstanceOf<ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, null, protocol, scheduler), Throws.InstanceOf<ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, log, null, scheduler), Throws.InstanceOf<ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, log, protocol, null), Throws.InstanceOf<ArgumentNullException>());

            // act
            var server = new ConsensusServer(configuration, log, protocol, scheduler);

            // assert
            Assert.That(server.Configuration, Is.SameAs(configuration));
            Assert.That(server.Log, Is.SameAs(log));
            Assert.That(server.Protocol, Is.SameAs(protocol));
            Assert.That(server.Scheduler, Is.SameAs(scheduler));
        }
Exemple #6
0
        public void Constructor()
        {
            // arrange
            var configuration = new Mock <IServerConfiguration>().Object;
            var log           = new Mock <ILog>().Object;
            var protocol      = new Mock <IProtocol>().Object;
            var scheduler     = new Mock <IResourceTrackingScheduler>().Object;

            // assert
            Assert.That(() => new ConsensusServer(null, log, protocol, scheduler), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, null, protocol, scheduler), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, log, null, scheduler), Throws.InstanceOf <ArgumentNullException>());
            Assert.That(() => new ConsensusServer(configuration, log, protocol, null), Throws.InstanceOf <ArgumentNullException>());

            // act
            var server = new ConsensusServer(configuration, log, protocol, scheduler);

            // assert
            Assert.That(server.Configuration, Is.SameAs(configuration));
            Assert.That(server.Log, Is.SameAs(log));
            Assert.That(server.Protocol, Is.SameAs(protocol));
            Assert.That(server.Scheduler, Is.SameAs(scheduler));
        }