Add integration test for running task with unregistered command. Expected behavior: 1. Task state is "ERROR" 2. No retry will happen.
Project: http://git-wip-us.apache.org/repos/asf/helix/repo Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/6455b8b9 Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/6455b8b9 Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/6455b8b9 Branch: refs/heads/helix-0.6.x Commit: 6455b8b9994178afc5d8a35589456960f0ef264c Parents: 183a26a Author: Junkai Xue <j...@linkedin.com> Authored: Tue May 24 11:59:08 2016 -0700 Committer: Lei Xia <l...@linkedin.com> Committed: Tue Jul 5 16:22:15 2016 -0700 ---------------------------------------------------------------------- .../task/TestUnregisteredCommand.java | 64 ++++++++++++++++++++ 1 file changed, 64 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/helix/blob/6455b8b9/helix-core/src/test/java/org/apache/helix/integration/task/TestUnregisteredCommand.java ---------------------------------------------------------------------- diff --git a/helix-core/src/test/java/org/apache/helix/integration/task/TestUnregisteredCommand.java b/helix-core/src/test/java/org/apache/helix/integration/task/TestUnregisteredCommand.java new file mode 100644 index 0000000..4d16a9b --- /dev/null +++ b/helix-core/src/test/java/org/apache/helix/integration/task/TestUnregisteredCommand.java @@ -0,0 +1,64 @@ +package org.apache.helix.integration.task; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.Map; + +import org.apache.helix.TestHelper; +import org.apache.helix.task.JobConfig; +import org.apache.helix.task.TaskPartitionState; +import org.apache.helix.task.TaskState; +import org.apache.helix.task.TaskUtil; +import org.apache.helix.task.Workflow; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class TestUnregisteredCommand extends TaskTestBase { + + @BeforeClass + public void beforeClass() throws Exception { + _numNodes = 1; + _numReplicas = 1; + _numDbs = 1; + _numParitions = 1; + super.beforeClass(); + } + + @Test public void testUnregisteredCommand() throws InterruptedException { + String workflowName = TestHelper.getTestMethodName(); + Workflow.Builder builder = new Workflow.Builder(workflowName); + + JobConfig.Builder jobBuilder = + new JobConfig.Builder().setTargetResource(WorkflowGenerator.DEFAULT_TGT_DB) + .setCommand("OtherCommand").setTimeoutPerTask(10000L).setMaxAttemptsPerTask(2) + .setJobCommandConfigMap(WorkflowGenerator.DEFAULT_COMMAND_CONFIG); + + builder.addJob("JOB1", jobBuilder); + + _driver.start(builder.build()); + + _driver.pollForWorkflowState(workflowName, TaskState.COMPLETED, TaskState.FAILED); + Assert.assertEquals(_driver.getJobContext(TaskUtil.getNamespacedJobName(workflowName, "JOB1")) + .getPartitionState(0), TaskPartitionState.ERROR); + Assert.assertEquals(_driver.getJobContext(TaskUtil.getNamespacedJobName(workflowName, "JOB1")) + .getPartitionNumAttempts(0), 1); + } +}