@Test public void weAreOneOfThePotentialLeaders() throws Exception { PingableLeader other = mock(PingableLeader.class); PaxosLeaderElectionService service = new PaxosLeaderElectionServiceBuilder() .proposer(mock(PaxosProposer.class)) .knowledge(mock(PaxosLearner.class)) .potentialLeadersToHosts(ImmutableMap.of(other, HostAndPort.fromHost("other"))) .acceptors(ImmutableList.of()) .learners(ImmutableList.of()) .executor(Executors.newSingleThreadExecutor()) .pingRateMs(0L) .randomWaitBeforeProposingLeadershipMs(0L) .leaderPingResponseWaitMs(0L) .eventRecorder(mock(PaxosLeadershipEventRecorder.class)) .onlyLogOnQuorumFailure(() -> true) .build(); assertThat(service.getPotentialLeaders()).containsExactlyInAnyOrder(other, service); }
MetricRegistry.name(PaxosLeaderElectionService.class, useCase, "executor")); PaxosLeaderElectionService paxosLeaderElectionService = new PaxosLeaderElectionServiceBuilder() .proposer(proposer) .knowledge(ourLearner) .potentialLeadersToHosts(otherLeaders) .acceptors(acceptors) .learners(learners) .executorServiceFactory(leaderElectionExecutor) .pingRateMs(config.pingRateMs()) .randomWaitBeforeProposingLeadershipMs(config.randomWaitBeforeProposingLeadershipMs()) .leaderPingResponseWaitMs(config.leaderPingResponseWaitMs()) .eventRecorder(leadershipEventRecorder) .onlyLogOnQuorumFailure(Suppliers.compose(LeaderRuntimeConfig::onlyLogOnQuorumFailure, runtime::get)) .build();
UUID.randomUUID(), executor); PaxosLeaderElectionService leader = new PaxosLeaderElectionServiceBuilder() .proposer(proposer) .knowledge(learners.get(i)) .potentialLeadersToHosts(ImmutableMap.<PingableLeader, HostAndPort>of()) .acceptors(acceptors) .learners(learners) .executor(executor) .pingRateMs(0L) .randomWaitBeforeProposingLeadershipMs(0L) .leaderPingResponseWaitMs(0L) .onlyLogOnQuorumFailure(() -> true) .build(); leaders.add(SimulatingFailingServerProxy.newProxyInstance( LeaderElectionService.class,
MetricRegistry.name(PaxosLeaderElectionService.class, useCase, "executor")); PaxosLeaderElectionService paxosLeaderElectionService = new PaxosLeaderElectionServiceBuilder() .proposer(proposer) .knowledge(ourLearner) .potentialLeadersToHosts(otherLeaders) .acceptors(acceptors) .learners(learners) .executorServiceFactory(leaderElectionExecutor) .pingRateMs(config.pingRateMs()) .randomWaitBeforeProposingLeadershipMs(config.randomWaitBeforeProposingLeadershipMs()) .leaderPingResponseWaitMs(config.leaderPingResponseWaitMs()) .eventRecorder(leadershipEventRecorder) .onlyLogOnQuorumFailure(Suppliers.compose(LeaderRuntimeConfig::onlyLogOnQuorumFailure, runtime::get)) .build();