use of com.mesosphere.sdk.specification.ServiceSpec in project dcos-commons by mesosphere.
the class PodSpecsCannotShrinkTest method testReducingPodCountIsInvalid.
@Test
public void testReducingPodCountIsInvalid() {
final ServiceSpec serviceWithManyPods = getServiceSpec(mockPodSpecA1WithHigherCount);
final ServiceSpec serviceWithFewPods = getServiceSpec(mockPodSpecA1);
assertThat(VALIDATOR.validate(Optional.of(serviceWithManyPods), serviceWithFewPods), hasSize(1));
}
use of com.mesosphere.sdk.specification.ServiceSpec in project dcos-commons by mesosphere.
the class PodSpecsCannotShrinkTest method testAllowedPodRenameIsValid.
@Test
public void testAllowedPodRenameIsValid() throws InvalidRequirementException {
when(mockPodSpecB1.getAllowDecommission()).thenReturn(true);
ServiceSpec serviceSpec1 = getServiceSpec(mockPodSpecA1, mockPodSpecB1);
ServiceSpec serviceSpec2 = getServiceSpec("svc2", mockPodSpecA1, mockPodSpecB2);
Assert.assertEquals(0, VALIDATOR.validate(Optional.of(serviceSpec1), serviceSpec2).size());
// Still fails in the other direction since B2 doesn't have the decommission bit set:
Assert.assertEquals(1, VALIDATOR.validate(Optional.of(serviceSpec2), serviceSpec1).size());
Assert.assertEquals(0, VALIDATOR.validate(Optional.of(serviceSpec1), serviceSpec1).size());
Assert.assertEquals(0, VALIDATOR.validate(Optional.of(serviceSpec2), serviceSpec2).size());
}
use of com.mesosphere.sdk.specification.ServiceSpec in project dcos-commons by mesosphere.
the class PodSpecsCannotShrinkTest method testReducingBothAllowedPodCountIsValid.
@Test
public void testReducingBothAllowedPodCountIsValid() {
when(mockPodSpecA1.getAllowDecommission()).thenReturn(true);
when(mockPodSpecA1WithHigherCount.getAllowDecommission()).thenReturn(true);
final ServiceSpec serviceWithManyPods = getServiceSpec(mockPodSpecA1WithHigherCount);
final ServiceSpec serviceWithFewPods = getServiceSpec(mockPodSpecA1);
assertThat(VALIDATOR.validate(Optional.of(serviceWithManyPods), serviceWithFewPods), hasSize(0));
}
use of com.mesosphere.sdk.specification.ServiceSpec in project dcos-commons by mesosphere.
the class PodSpecsCannotShrinkTest method testPodRenameIsInvalid.
@Test
public void testPodRenameIsInvalid() throws InvalidRequirementException {
ServiceSpec serviceSpec1 = getServiceSpec(mockPodSpecA1, mockPodSpecB1);
ServiceSpec serviceSpec2 = getServiceSpec("svc2", mockPodSpecA1, mockPodSpecB2);
Assert.assertEquals(1, VALIDATOR.validate(Optional.of(serviceSpec1), serviceSpec2).size());
Assert.assertEquals(1, VALIDATOR.validate(Optional.of(serviceSpec2), serviceSpec1).size());
Assert.assertEquals(0, VALIDATOR.validate(Optional.of(serviceSpec1), serviceSpec1).size());
Assert.assertEquals(0, VALIDATOR.validate(Optional.of(serviceSpec2), serviceSpec2).size());
}
use of com.mesosphere.sdk.specification.ServiceSpec in project dcos-commons by mesosphere.
the class PlacementRuleIsValid method validate.
@Override
public Collection<ConfigValidationError> validate(Optional<ServiceSpec> oldConfig, ServiceSpec newConfig) {
List<PodSpec> podSpecs = newConfig.getPods().stream().filter(podSpec -> podSpec.getPlacementRule().isPresent()).collect(Collectors.toList());
List<ConfigValidationError> errors = new ArrayList<>();
for (final PodSpec podSpec : podSpecs) {
PlacementRule placementRule = podSpec.getPlacementRule().get();
if (!isValid(placementRule)) {
String errMsg = String.format("The PlacementRule for PodSpec '%s' had invalid constraints", podSpec.getType());
errors.add(ConfigValidationError.valueError("PlacementRule", placementRule.toString(), errMsg));
}
}
return errors;
}
Aggregations