### Question:
SlaveUpdatePuller implements Runnable, UpdatePuller, CancelListener { @Override public void start() { if ( shutdownLatch != null ) { return; } shutdownLatch = new BinaryLatch(); JobHandle handle = jobScheduler.schedule( Group.PULL_UPDATES, this ); handle.registerCancelListener( this ); } SlaveUpdatePuller(
            RequestContextFactory requestContextFactory,
            Master master,
            LastUpdateTime lastUpdateTime,
            LogProvider logging,
            InstanceId instanceId,
            AvailabilityGuard availabilityGuard,
            InvalidEpochExceptionHandler invalidEpochHandler,
            JobScheduler jobScheduler,
            Monitor monitor ); @Override void run(); @Override void cancelled( boolean mayInterruptIfRunning ); @Override void start(); @Override void stop(); @Override void pullUpdates(); @Override boolean tryPullUpdates(); @Override void pullUpdates( Condition condition, boolean strictlyAssertActive ); boolean isActive(); @Override String toString(); static final int LOG_CAP; static final long PARK_NANOS; static final int AVAILABILITY_AWAIT_MILLIS; static final String UPDATE_PULLER_THREAD_PREFIX; }### Answer:
@Test public void initialisationMustBeIdempotent() { updatePuller.start(); updatePuller.start(); updatePuller.start(); assertThat( scheduledJobs.get(), is( 1 ) ); }