Coordinator { public List<AgentStatus> getAgents() { return ImmutableList.copyOf(Iterables.transform(agents.values(), new Function<RemoteAgent, AgentStatus>() { public AgentStatus apply(RemoteAgent agent) { return agent.status(); } })); } @Inject  Coordinator(NodeInfo nodeInfo,
            HttpServerInfo httpServerInfo,
            CoordinatorConfig config,
            RemoteCoordinatorFactory remoteCoordinatorFactory,
            RemoteAgentFactory remoteAgentFactory,
            Repository repository,
            Provisioner provisioner,
            StateManager stateManager, ServiceInventory serviceInventory);  Coordinator(CoordinatorStatus coordinatorStatus,
            RemoteCoordinatorFactory remoteCoordinatorFactory,
            RemoteAgentFactory remoteAgentFactory,
            Repository repository,
            Provisioner provisioner,
            StateManager stateManager,
            ServiceInventory serviceInventory,
            Duration statusExpiration,
            boolean allowDuplicateInstallationsOnAnAgent); @PostConstruct void start(); CoordinatorStatus status(); CoordinatorStatus getCoordinator(String instanceId); List<CoordinatorStatus> getCoordinators(); List<CoordinatorStatus> getCoordinators(Predicate<CoordinatorStatus> coordinatorFilter); List<CoordinatorStatus> provisionCoordinators(String coordinatorConfigSpec,
            int coordinatorCount,
            String instanceType,
            String availabilityZone,
            String ami,
            String keyPair,
            String securityGroup,
            String provisioningScriptsArtifact); List<AgentStatus> getAgents(); List<AgentStatus> getAgents(Predicate<AgentStatus> agentFilter); AgentStatus getAgent(String instanceId); AgentStatus getAgentByAgentId(String agentId); @VisibleForTesting void updateAllCoordinatorsAndWait(); @VisibleForTesting void updateAllAgentsAndWait(); List<AgentStatus> provisionAgents(String agentConfigSpec,
            int agentCount,
            String instanceType,
            String availabilityZone,
            String ami,
            String keyPair,
            String securityGroup,
            String provisioningScriptsArtifact); AgentStatus terminateAgent(String agentId); List<SlotStatus> install(Predicate<AgentStatus> filter, int limit, Assignment assignment); List<SlotStatus> upgrade(Predicate<SlotStatus> filter, UpgradeVersions upgradeVersions, String expectedSlotsVersion, boolean force); List<SlotStatus> terminate(Predicate<SlotStatus> filter, String expectedSlotsVersion); List<SlotStatus> setState(final SlotLifecycleState state, Predicate<SlotStatus> filter, String expectedSlotsVersion); List<SlotStatus> resetExpectedState(Predicate<SlotStatus> filter, String expectedSlotsVersion); List<SlotStatus> getAllSlotStatus(); List<SlotStatus> getAllSlotsStatus(Predicate<SlotStatus> slotFilter);  }
@Test public void testNoAgents() throws Exception { assertTrue(coordinator.getAgents().isEmpty()); }