use of com.twitter.heron.spi.scheduler.IScheduler in project heron by twitter.
the class LauncherUtils method getSchedulerInstance.
/**
* Creates and initializes scheduler instance
*
* @return initialized scheduler instances
*/
public IScheduler getSchedulerInstance(Config config, Config runtime) throws SchedulerException {
String schedulerClass = Context.schedulerClass(config);
IScheduler scheduler;
try {
// create an instance of scheduler
scheduler = ReflectionUtils.newInstance(schedulerClass);
} catch (IllegalAccessException | InstantiationException | ClassNotFoundException e) {
throw new SchedulerException(String.format("Failed to instantiate scheduler using class '%s'", schedulerClass));
}
scheduler.initialize(config, runtime);
return scheduler;
}
use of com.twitter.heron.spi.scheduler.IScheduler in project heron by twitter.
the class SchedulerUtils method setSchedulerLocation.
/**
* Set the location of scheduler for other processes to discover
*
* @param runtime the runtime configuration
* @param schedulerEndpoint the endpoint that scheduler listens for receives requests
* @param scheduler the IScheduler to provide more info
*/
public static boolean setSchedulerLocation(Config runtime, String schedulerEndpoint, IScheduler scheduler) {
// Set scheduler location to host:port by default. Overwrite scheduler location if behind DNS.
Scheduler.SchedulerLocation.Builder builder = Scheduler.SchedulerLocation.newBuilder().setTopologyName(Runtime.topologyName(runtime)).setHttpEndpoint(schedulerEndpoint);
// Set the job link in SchedulerLocation if any
List<String> jobLinks = scheduler.getJobLinks();
// Check whether IScheduler provides valid job link
if (jobLinks != null) {
builder.addAllJobPageLink(jobLinks);
}
Scheduler.SchedulerLocation location = builder.build();
LOG.log(Level.INFO, "Setting Scheduler locations: {0}", location);
SchedulerStateManagerAdaptor statemgr = Runtime.schedulerStateManagerAdaptor(runtime);
Boolean result = statemgr.setSchedulerLocation(location, Runtime.topologyName(runtime));
if (result == null || !result) {
LOG.severe("Failed to set Scheduler location");
return false;
}
return true;
}
use of com.twitter.heron.spi.scheduler.IScheduler in project heron by twitter.
the class SchedulerServerTest method testSchedulerServer.
@Test
public void testSchedulerServer() throws Exception {
int freePort = SysUtils.getFreePort();
IScheduler scheduler = Mockito.mock(IScheduler.class);
Config runtime = Mockito.mock(Config.class);
SchedulerServer schedulerServer = Mockito.spy(new SchedulerServer(runtime, scheduler, freePort));
Assert.assertEquals(NetworkUtils.getHostName(), schedulerServer.getHost());
Assert.assertEquals(freePort, schedulerServer.getPort());
}
use of com.twitter.heron.spi.scheduler.IScheduler in project heron by twitter.
the class LibrarySchedulerClientTest method testRestartTopology.
@Test
public void testRestartTopology() throws Exception {
IScheduler scheduler = Mockito.mock(IScheduler.class);
Scheduler.RestartTopologyRequest request = Scheduler.RestartTopologyRequest.getDefaultInstance();
LibrarySchedulerClient client = new LibrarySchedulerClient(config, runtime, scheduler);
// Failure case
Mockito.when(scheduler.onRestart(request)).thenReturn(false);
Assert.assertFalse(client.restartTopology(request));
Mockito.verify(scheduler).initialize(config, runtime);
Mockito.verify(scheduler).close();
Mockito.verify(scheduler).onRestart(request);
// Success case
Mockito.when(scheduler.onRestart(request)).thenReturn(true);
Assert.assertTrue(client.restartTopology(request));
Mockito.verify(scheduler, Mockito.times(2)).initialize(config, runtime);
Mockito.verify(scheduler, Mockito.times(2)).close();
Mockito.verify(scheduler, Mockito.times(2)).onRestart(request);
}
use of com.twitter.heron.spi.scheduler.IScheduler in project heron by twitter.
the class YarnSchedulerTest method delegatesToDriverOnSchedule.
@Test
public void delegatesToDriverOnSchedule() throws Exception {
HeronMasterDriver mockHeronDriver = Mockito.mock(HeronMasterDriver.class);
HeronMasterDriverProvider.setInstance(mockHeronDriver);
Mockito.doNothing().when(mockHeronDriver).launchTMaster();
IScheduler scheduler = new YarnScheduler();
PackingPlan mockPacking = Mockito.mock(PackingPlan.class);
scheduler.onSchedule(mockPacking);
InOrder invocationOrder = Mockito.inOrder(mockHeronDriver);
invocationOrder.verify(mockHeronDriver).scheduleHeronWorkers(mockPacking);
invocationOrder.verify(mockHeronDriver).launchTMaster();
}
Aggregations