use of org.apache.heron.common.basics.Pair in project heron by twitter.
the class KubernetesContextTest method createVolumeHostPathError.
/**
* Create test cases for <code>Host Path</code> errors.
* @param testCases Test case container.
* Input: [0] Config, [1] Boolean to indicate Manager/Executor.
* Output: Error message
* @param isExecutor Boolean to indicate Manager/Executor test case generation.
*/
private void createVolumeHostPathError(List<TestTuple<Pair<Config, Boolean>, String>> testCases, boolean isExecutor) {
final String volumeNameValid = "volume-name-valid";
final String passingValue = "should-pass";
final String failureValue = "Should-Fail";
final String processName = isExecutor ? KubernetesConstants.EXECUTOR_NAME : KubernetesConstants.MANAGER_NAME;
final String keyPattern = String.format(KubernetesContext.KUBERNETES_VOLUME_HOSTPATH_PREFIX + "%%s.%%s", processName);
// Type is invalid.
final Config configInvalidMedium = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "type"), failureValue).put(String.format(keyPattern, volumeNameValid, "pathOnHost"), passingValue).put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "subPath"), passingValue).build();
testCases.add(new TestTuple<>(processName + ": Invalid 'type' should trigger exception", new Pair<>(configInvalidMedium, isExecutor), "Host Path 'type' of"));
// Path on Host is missing.
final Config configNoHostOnPath = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "type"), "BlockDevice").put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "subPath"), passingValue).build();
testCases.add(new TestTuple<>(processName + ": No 'hostOnPath' should trigger exception", new Pair<>(configNoHostOnPath, isExecutor), "requires a path on the host"));
// Path on Host is empty.
final Config configEmptyHostOnPath = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "type"), "BlockDevice").put(String.format(keyPattern, volumeNameValid, "pathOnHost"), "").put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "subPath"), passingValue).build();
testCases.add(new TestTuple<>(processName + ": Empty 'hostOnPath' should trigger exception", new Pair<>(configEmptyHostOnPath, isExecutor), "requires a path on the host"));
// Invalid option.
final Config configInvalidOption = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "type"), "BlockDevice").put(String.format(keyPattern, volumeNameValid, "pathOnHost"), passingValue).put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "subPath"), passingValue).put(String.format(keyPattern, volumeNameValid, "accessModes"), passingValue).build();
testCases.add(new TestTuple<>(processName + ": Invalid option should trigger exception", new Pair<>(configInvalidOption, isExecutor), "Invalid Host Path option for"));
}
use of org.apache.heron.common.basics.Pair in project heron by twitter.
the class KubernetesContextTest method createVolumeEmptyDirError.
/**
* Create test cases for <code>Empty Directory</code> errors.
* @param testCases Test case container.
* Input: [0] Config, [1] Boolean to indicate Manager/Executor.
* Output: Error message
* @param isExecutor Boolean to indicate Manager/Executor test case generation.
*/
private void createVolumeEmptyDirError(List<TestTuple<Pair<Config, Boolean>, String>> testCases, boolean isExecutor) {
final String volumeNameValid = "volume-name-valid";
final String passingValue = "should-pass";
final String failureValue = "Should-Fail";
final String processName = isExecutor ? KubernetesConstants.EXECUTOR_NAME : KubernetesConstants.MANAGER_NAME;
final String keyPattern = String.format(KubernetesContext.KUBERNETES_VOLUME_EMPTYDIR_PREFIX + "%%s.%%s", processName);
// Medium is invalid.
final Config configInvalidMedium = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "sizeLimit"), passingValue).put(String.format(keyPattern, volumeNameValid, "medium"), failureValue).build();
testCases.add(new TestTuple<>(processName + ": Invalid 'medium' should trigger exception", new Pair<>(configInvalidMedium, isExecutor), "must be 'Memory' or empty."));
// Invalid option.
final Config configInvalidOption = Config.newBuilder().put(String.format(keyPattern, volumeNameValid, "path"), passingValue).put(String.format(keyPattern, volumeNameValid, "subPath"), passingValue).put(String.format(keyPattern, volumeNameValid, "sizeLimit"), passingValue).put(String.format(keyPattern, volumeNameValid, "medium"), "Memory").put(String.format(keyPattern, volumeNameValid, "accessModes"), passingValue).build();
testCases.add(new TestTuple<>(processName + ": Invalid option should trigger exception", new Pair<>(configInvalidOption, isExecutor), "Directory type option"));
}
use of org.apache.heron.common.basics.Pair in project heron by twitter.
the class PackingTestHelper method toContainerIdComponentNames.
public static Pair<Integer, String>[] toContainerIdComponentNames(Pair<Integer, InstanceId>[] containerIdInstanceIds) {
@SuppressWarnings({ "unchecked", "rawtypes" }) Pair<Integer, String>[] containerIdComponentNames = new Pair[containerIdInstanceIds.length];
int i = 0;
for (Pair<Integer, InstanceId> containerIdInstanceId : containerIdInstanceIds) {
containerIdComponentNames[i++] = new Pair<>(containerIdInstanceId.first, containerIdInstanceId.second.getComponentName());
}
return containerIdComponentNames;
}
use of org.apache.heron.common.basics.Pair in project heron by twitter.
the class PackingPlanBuilderTest method testInvalidComponentRemoveFromPackingPlan.
@Test(expected = PackingException.class)
public void testInvalidComponentRemoveFromPackingPlan() throws ConstraintViolationException {
PackingPlan plan = doCreatePackingPlanTest(testContainerInstances);
@SuppressWarnings({ "unchecked", "rawtypes" }) Pair<Integer, String>[] removed = new Pair[] { new Pair<>(1, "componentC") };
PackingTestHelper.removeFromTestPackingPlan(TOPOLOGY_ID, plan, removed, 0);
}
use of org.apache.heron.common.basics.Pair in project heron by twitter.
the class PackingPlanBuilderTest method testExceededCapacityAddingToPackingPlan.
@Test(expected = ResourceExceededException.class)
public void testExceededCapacityAddingToPackingPlan() throws ConstraintViolationException {
PackingPlan plan = doCreatePackingPlanTest(testContainerInstances);
@SuppressWarnings({ "unchecked", "rawtypes" }) Pair<Integer, InstanceId>[] added = new Pair[] { new Pair<>(3, new InstanceId("componentB", 4, 1)), new Pair<>(3, new InstanceId("componentB", 5, 2)) };
PackingTestHelper.addToTestPackingPlan(TOPOLOGY_ID, plan, PackingTestHelper.toContainerIdComponentNames(added), 0);
}
Aggregations