use of com.netflix.titus.federation.service.CellInfoResolver in project titus-control-plane by Netflix.
the class ApplicationCellRouterTest method jobCellAntiAffinity.
@Test
public void jobCellAntiAffinity() {
JobDescriptor withCellAntiAffinity = APP_2.toBuilder().putAttributes(JobAttributes.JOB_PARAMETER_ATTRIBUTES_CELL_AVOID, "cell4, cell1").build();
JobDescriptor allRejectedGoesToDefault = APP_2.toBuilder().putAttributes(JobAttributes.JOB_PARAMETER_ATTRIBUTES_CELL_AVOID, "cell1,cell2").build();
TitusFederationConfiguration titusFederationConfiguration = mock(TitusFederationConfiguration.class);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell1=(app1.*|app2.*);cell2=(app3.*)");
CellInfoResolver cellInfoResolver = new DefaultCellInfoResolver(titusFederationConfiguration);
ApplicationCellRouter cellRouter = new ApplicationCellRouter(cellInfoResolver, titusFederationConfiguration);
assertThat(cellRouter.routeKey(withCellAntiAffinity).get().getName()).isEqualTo("cell2");
assertThat(cellRouter.routeKey(allRejectedGoesToDefault)).isEmpty();
}
use of com.netflix.titus.federation.service.CellInfoResolver in project titus-control-plane by Netflix.
the class ApplicationCellRouterTest method cellRoutingRulesFromConfig.
@Test
public void cellRoutingRulesFromConfig() {
TitusFederationConfiguration titusFederationConfiguration = mock(TitusFederationConfiguration.class);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell1=(app1.*|app2.*);cell2=(app3.*)");
CellInfoResolver cellInfoResolver = new DefaultCellInfoResolver(titusFederationConfiguration);
ApplicationCellRouter cellRouter = new ApplicationCellRouter(cellInfoResolver, titusFederationConfiguration);
assertThat(cellRouter.routeKey(APP_3).get().getName()).isEqualTo("cell2");
assertThat(cellRouter.routeKey(APP_2).get().getName()).isEqualTo("cell1");
// if not rules, by default go to the first configured in titus.federation.cells
assertThat(cellRouter.routeKey(OTHER).get().getName()).isEqualTo("cell1");
}
use of com.netflix.titus.federation.service.CellInfoResolver in project titus-control-plane by Netflix.
the class ApplicationCellRouterTest method invalidInitialRoutingPatternThrowsException.
@Test
public void invalidInitialRoutingPatternThrowsException() {
TitusFederationConfiguration titusFederationConfiguration = mock(TitusFederationConfiguration.class);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell1=(app1.*|app2.*);cell2=#)(");
CellInfoResolver cellInfoResolver = new DefaultCellInfoResolver(titusFederationConfiguration);
assertThatThrownBy(() -> new ApplicationCellRouter(cellInfoResolver, titusFederationConfiguration)).isInstanceOf(PatternSyntaxException.class);
}
use of com.netflix.titus.federation.service.CellInfoResolver in project titus-control-plane by Netflix.
the class ApplicationCellRouterTest method rulesCanBeChangedDynamically.
@Test
public void rulesCanBeChangedDynamically() {
TitusFederationConfiguration titusFederationConfiguration = mock(TitusFederationConfiguration.class);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell1=(app1.*|app2.*);cell2=(app3.*)");
CellInfoResolver cellInfoResolver = new DefaultCellInfoResolver(titusFederationConfiguration);
ApplicationCellRouter cellRouter = new ApplicationCellRouter(cellInfoResolver, titusFederationConfiguration);
assertThat(cellRouter.routeKey(APP_3).get().getName()).isEqualTo("cell2");
assertThat(cellRouter.routeKey(APP_2).get().getName()).isEqualTo("cell1");
// if not rules, by default go to the first configured in titus.federation.cells
assertThat(cellRouter.routeKey(OTHER).get().getName()).isEqualTo("cell1");
// flip rules
reset(titusFederationConfiguration);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell2=(app1.*|app2.*);cell1=(app3.*)");
assertThat(cellRouter.routeKey(APP_3).get().getName()).isEqualTo("cell1");
assertThat(cellRouter.routeKey(APP_2).get().getName()).isEqualTo("cell2");
// if not rules, by default go to the first configured in titus.federation.cells
assertThat(cellRouter.routeKey(OTHER).get().getName()).isEqualTo("cell1");
}
use of com.netflix.titus.federation.service.CellInfoResolver in project titus-control-plane by Netflix.
the class ApplicationCellRouterTest method rulesWithNonConfiguredCellsAreIgnored.
@Test
public void rulesWithNonConfiguredCellsAreIgnored() {
TitusFederationConfiguration titusFederationConfiguration = mock(TitusFederationConfiguration.class);
when(titusFederationConfiguration.getCells()).thenReturn("cell1=hostName1:7001;cell2=hostName2:7002");
when(titusFederationConfiguration.getRoutingRules()).thenReturn("cell1=(app1.*|app2.*);cell2=(app3.*);cell3=(app4.*)");
CellInfoResolver cellInfoResolver = new DefaultCellInfoResolver(titusFederationConfiguration);
ApplicationCellRouter cellRouter = new ApplicationCellRouter(cellInfoResolver, titusFederationConfiguration);
Cell cell = cellRouter.routeKey(APP_4).get();
// no rules default to first
assertThat(cell.getName()).isEqualTo("cell1");
}
Aggregations