use of com.spotify.helios.serviceregistration.ServiceRegistration in project helios by spotify.
the class JobServiceRegistrationTest method test.
@Test
public void test() throws Exception {
startDefaultMaster();
final HeliosClient client = defaultClient();
startDefaultAgent(testHost(), "--service-registry=" + registryAddress);
awaitHostStatus(client, testHost(), UP, LONG_WAIT_SECONDS, SECONDS);
final ImmutableMap<String, PortMapping> portMapping = ImmutableMap.of("foo_port", PortMapping.of(4711, externalPort), "bar_port", PortMapping.of(4712));
final ImmutableMap<ServiceEndpoint, ServicePorts> registration = ImmutableMap.of(ServiceEndpoint.of("foo_service", "foo_proto"), ServicePorts.of("foo_port"), ServiceEndpoint.of("bar_service", "bar_proto"), ServicePorts.of("bar_port"));
final JobId jobId = createJob(testJobName, testJobVersion, BUSYBOX, IDLE_COMMAND, EMPTY_ENV, portMapping, registration);
deployJob(jobId, testHost());
awaitJobState(client, testHost(), jobId, RUNNING, LONG_WAIT_SECONDS, SECONDS);
verify(registrar, timeout((int) SECONDS.toMillis(LONG_WAIT_SECONDS))).register(registrationCaptor.capture());
final ServiceRegistration serviceRegistration = registrationCaptor.getValue();
final Map<String, Endpoint> registered = Maps.newHashMap();
for (final Endpoint endpoint : serviceRegistration.getEndpoints()) {
registered.put(endpoint.getName(), endpoint);
}
assertEquals("wrong service", "foo_service", registered.get("foo_service").getName());
assertEquals("wrong protocol", "foo_proto", registered.get("foo_service").getProtocol());
assertEquals("wrong port", externalPort, registered.get("foo_service").getPort());
assertEquals("wrong service", "bar_service", registered.get("bar_service").getName());
assertEquals("wrong protocol", "bar_proto", registered.get("bar_service").getProtocol());
assertNotEquals("wrong port", externalPort, registered.get("bar_service").getPort());
}
use of com.spotify.helios.serviceregistration.ServiceRegistration in project helios by spotify.
the class MasterServiceRegistrationTest method test.
@Test
public void test() throws Exception {
startDefaultMaster("--service-registry=" + registryAddress);
verify(registrar, timeout((int) SECONDS.toMillis(LONG_WAIT_SECONDS))).register(registrationCaptor.capture());
final ServiceRegistration registration = registrationCaptor.getValue();
final ServiceRegistration.Endpoint endpoint = getOnlyElement(registration.getEndpoints());
assertEquals("http", endpoint.getProtocol());
assertEquals("helios", endpoint.getName());
assertEquals(masterPort(), endpoint.getPort());
}
use of com.spotify.helios.serviceregistration.ServiceRegistration in project helios by spotify.
the class HealthCheckTest method assertContainerRegistersAfterPoke.
private void assertContainerRegistersAfterPoke(final HeliosClient client, final Job job) throws Exception {
final JobId jobId = createJob(job);
deployJob(jobId, testHost());
awaitTaskState(jobId, testHost(), HEALTHCHECKING);
// wait a few seconds to see if the service gets registered
Thread.sleep(3000);
// shouldn't be registered, since we haven't poked it yet
verify(registrar, never()).register(any(ServiceRegistration.class));
pokeAndVerifyRegistration(client, jobId, LONG_WAIT_SECONDS);
final ServiceRegistration serviceRegistration = registrationCaptor.getValue();
final Map<String, Endpoint> registered = Maps.newHashMap();
for (final Endpoint endpoint : serviceRegistration.getEndpoints()) {
registered.put(endpoint.getName(), endpoint);
}
assertEquals("wrong service", "foo_service", registered.get("foo_service").getName());
assertEquals("wrong protocol", "foo_proto", registered.get("foo_service").getProtocol());
}
use of com.spotify.helios.serviceregistration.ServiceRegistration in project helios by spotify.
the class MasterService method startUp.
@Override
protected void startUp() throws Exception {
logBanner();
if (!config.getNoZooKeeperMasterRegistration()) {
zkRegistrar.startAsync().awaitRunning();
}
expiredJobReaper.startAsync().awaitRunning();
rollingUpdateService.startAsync().awaitRunning();
agentReaper.ifPresent(reaper -> reaper.startAsync().awaitRunning());
oldJobReaper.ifPresent(reaper -> reaper.startAsync().awaitRunning());
jobHistoryReaper.ifPresent(reaper -> reaper.startAsync().awaitRunning());
try {
server.start();
} catch (Exception e) {
log.error("Unable to start server, shutting down", e);
server.stop();
}
final ServiceRegistration serviceRegistration = ServiceRegistration.newBuilder().endpoint("helios", "http", config.getHttpEndpoint().getPort(), config.getDomain(), config.getName()).build();
registrar.register(serviceRegistration);
}
use of com.spotify.helios.serviceregistration.ServiceRegistration in project helios by spotify.
the class TaskConfig method registration.
public ServiceRegistration registration() throws InterruptedException {
final ServiceRegistration.Builder builder = ServiceRegistration.newBuilder();
for (final Map.Entry<ServiceEndpoint, ServicePorts> entry : job.getRegistration().entrySet()) {
final ServiceEndpoint registration = entry.getKey();
final ServicePorts servicePorts = entry.getValue();
for (final Entry<String, ServicePortParameters> portEntry : servicePorts.getPorts().entrySet()) {
final String portName = portEntry.getKey();
final ServicePortParameters portParameters = portEntry.getValue();
final PortMapping mapping = job.getPorts().get(portName);
if (mapping == null) {
log.error("no '{}' port mapped for registration: '{}'", portName, registration);
continue;
}
final Integer externalPort;
if (mapping.getExternalPort() != null) {
// Use the statically assigned port if one is specified
externalPort = mapping.getExternalPort();
} else {
// Otherwise use the dynamically allocated port
externalPort = ports.get(portName);
}
if (externalPort == null) {
log.error("no external '{}' port for registration: '{}'", portName, registration);
continue;
}
builder.endpoint(registration.getName(), registration.getProtocol(), externalPort, fullyQualifiedRegistrationDomain(), host, portParameters.getTags(), endpointHealthCheck(portName));
}
}
return builder.build();
}
Aggregations