This is an automated email from the ASF dual-hosted git repository. nic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push: new 79a2fc2 Add tests for LookupExecutableUtil and JobInfoConverter (#640) 79a2fc2 is described below commit 79a2fc26af25a8c6c5bbd5200e714ad95bcfdf4f Author: Michael Hausegger <hausegger.mich...@googlemail.com> AuthorDate: Sun May 19 07:58:41 2019 +0200 Add tests for LookupExecutableUtil and JobInfoConverter (#640) * Add tests for LookupExecutableUtil and JobInfoConverter --- .../mr/common/DefaultX509TrustManagerTest.java | 29 ++-- .../engine/mr/common/HadoopCmdOutputTest.java | 25 ++-- .../engine/mr/common/JobInfoConverterTest.java | 159 +++++++++++++++++++-- .../mr/steps/lookup/LookupExecutableUtilTest.java | 63 ++++++++ 4 files changed, 240 insertions(+), 36 deletions(-) diff --git a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/DefaultX509TrustManagerTest.java b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/DefaultX509TrustManagerTest.java index 9a113db..30135b0 100644 --- a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/DefaultX509TrustManagerTest.java +++ b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/DefaultX509TrustManagerTest.java @@ -17,34 +17,33 @@ */ package org.apache.kylin.engine.mr.common; -import org.junit.Test; +import static org.junit.Assert.assertTrue; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; -import static org.junit.Assert.assertTrue; +import org.junit.Test; /** * Unit tests for class {@link DefaultX509TrustManager}. * * @see DefaultX509TrustManager - * */ -public class DefaultX509TrustManagerTest{ +public class DefaultX509TrustManagerTest { - @Test(expected = NullPointerException.class) - public void testIsServerTrustedThrowsNullPointerException() throws KeyStoreException, NoSuchAlgorithmException { - DefaultX509TrustManager defaultX509TrustManager = new DefaultX509TrustManager(null); + @Test(expected = NullPointerException.class) + public void testIsServerTrustedThrowsNullPointerException() throws KeyStoreException, NoSuchAlgorithmException { + DefaultX509TrustManager defaultX509TrustManager = new DefaultX509TrustManager(null); - defaultX509TrustManager.isServerTrusted(new X509Certificate[1]); - } + defaultX509TrustManager.isServerTrusted(new X509Certificate[1]); + } - @Test - public void testIsServerTrustedWithNull() throws KeyStoreException, NoSuchAlgorithmException { - DefaultX509TrustManager defaultX509TrustManager = new DefaultX509TrustManager(null); + @Test + public void testIsServerTrustedWithNull() throws KeyStoreException, NoSuchAlgorithmException { + DefaultX509TrustManager defaultX509TrustManager = new DefaultX509TrustManager(null); - assertTrue(defaultX509TrustManager.isServerTrusted(null)); - } + assertTrue(defaultX509TrustManager.isServerTrusted(null)); + } -} \ No newline at end of file +} diff --git a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/HadoopCmdOutputTest.java b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/HadoopCmdOutputTest.java index 6d8cbc6..6ac1225 100644 --- a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/HadoopCmdOutputTest.java +++ b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/HadoopCmdOutputTest.java @@ -17,29 +17,28 @@ */ package org.apache.kylin.engine.mr.common; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.mapreduce.Job; -import org.junit.Test; +import static org.junit.Assert.assertNull; import java.io.IOException; -import static org.junit.Assert.assertNull; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.mapreduce.Job; +import org.junit.Test; /** * Unit tests for class {@link HadoopCmdOutput}. * * @see HadoopCmdOutput - * */ -public class HadoopCmdOutputTest{ +public class HadoopCmdOutputTest { - @Test(expected = IllegalStateException.class) - public void testGetMrJobIdThrowsIllegalStateException() throws IOException { - Job job = Job.getInstance(new Configuration(false)); - HadoopCmdOutput hadoopCmdOutput = new HadoopCmdOutput(job, new StringBuilder()); + @Test(expected = IllegalStateException.class) + public void testGetMrJobIdThrowsIllegalStateException() throws IOException { + Job job = Job.getInstance(new Configuration(false)); + HadoopCmdOutput hadoopCmdOutput = new HadoopCmdOutput(job, new StringBuilder()); - assertNull(hadoopCmdOutput.getMrJobId()); - } + assertNull(hadoopCmdOutput.getMrJobId()); + } @Test public void testUpdateJobCounterCatchesEveryInternalException() throws IOException { @@ -49,4 +48,4 @@ public class HadoopCmdOutputTest{ hadoopCmdOutput.updateJobCounter(); } -} \ No newline at end of file +} diff --git a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/JobInfoConverterTest.java b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/JobInfoConverterTest.java index 013ab0b..2201530 100644 --- a/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/JobInfoConverterTest.java +++ b/engine-mr/src/test/java/org/apache/kylin/engine/mr/common/JobInfoConverterTest.java @@ -14,42 +14,49 @@ * 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. -*/ + */ package org.apache.kylin.engine.mr.common; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + import java.util.Map; +import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; +import com.google.common.collect.Maps; import org.apache.kylin.engine.mr.CubingJob; import org.apache.kylin.job.JobInstance; +import org.apache.kylin.job.constant.JobStatusEnum; import org.apache.kylin.job.constant.JobStepStatusEnum; import org.apache.kylin.job.exception.ExecuteException; +import org.apache.kylin.job.execution.CheckpointExecutable; import org.apache.kylin.job.execution.ExecutableContext; import org.apache.kylin.job.execution.ExecutableState; import org.apache.kylin.job.execution.ExecuteResult; import org.apache.kylin.job.execution.Output; -import org.junit.Assert; import org.junit.Test; -import com.google.common.collect.Maps; - public class JobInfoConverterTest { @Test public void testParseToJobInstance() { TestJob task = new TestJob(); - JobInstance instance = JobInfoConverter.parseToJobInstanceQuietly(task, Maps.<String, Output> newHashMap()); + JobInstance instance = JobInfoConverter.parseToJobInstanceQuietly(task, Maps.newHashMap()); // no exception thrown is expected - Assert.assertTrue(instance == null); + assertTrue(instance == null); } @Test public void testParseToJobStep() { TestJob task = new TestJob(); JobInstance.JobStep step = JobInfoConverter.parseToJobStep(task, 0, null); - Assert.assertEquals(step.getStatus(), JobStepStatusEnum.PENDING); + assertEquals(step.getStatus(), JobStepStatusEnum.PENDING); step = JobInfoConverter.parseToJobStep(task, 0, new TestOutput()); - Assert.assertEquals(step.getStatus(), JobStepStatusEnum.FINISHED); + assertEquals(step.getStatus(), JobStepStatusEnum.FINISHED); } public static class TestJob extends CubingJob { @@ -87,4 +94,140 @@ public class JobInfoConverterTest { return 0; } } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusStopped() { + ExecutableState executableState = ExecutableState.STOPPED; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertFalse(jobStepStatusEnum.isComplete()); + assertFalse(jobStepStatusEnum.isRunable()); + assertEquals(128, jobStepStatusEnum.getCode()); + assertEquals(JobStepStatusEnum.STOPPED, jobStepStatusEnum); + } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusFinished() { + ExecutableState executableState = ExecutableState.SUCCEED; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertTrue(jobStepStatusEnum.isComplete()); + assertEquals(4, jobStepStatusEnum.getCode()); + assertFalse(jobStepStatusEnum.isRunable()); + assertEquals(JobStepStatusEnum.FINISHED, jobStepStatusEnum); + } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusDiscarded() { + ExecutableState executableState = ExecutableState.DISCARDED; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertTrue(jobStepStatusEnum.isComplete()); + assertFalse(jobStepStatusEnum.isRunable()); + assertEquals(16, jobStepStatusEnum.getCode()); + assertEquals(JobStepStatusEnum.DISCARDED, jobStepStatusEnum); + } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusRunning() { + ExecutableState executableState = ExecutableState.RUNNING; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertEquals(2, jobStepStatusEnum.getCode()); + assertFalse(jobStepStatusEnum.isComplete()); + assertFalse(jobStepStatusEnum.isRunable()); + assertEquals(JobStepStatusEnum.RUNNING, jobStepStatusEnum); + } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusError() { + ExecutableState executableState = ExecutableState.ERROR; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertTrue(jobStepStatusEnum.isRunable()); + assertTrue(jobStepStatusEnum.isComplete()); + assertEquals(8, jobStepStatusEnum.getCode()); + assertEquals(JobStepStatusEnum.ERROR, jobStepStatusEnum); + } + + @Test + public void testParseToJobStepStatusReturnsJobStepStatusPending() { + ExecutableState executableState = ExecutableState.READY; + JobStepStatusEnum jobStepStatusEnum = JobInfoConverter.parseToJobStepStatus(executableState); + + assertTrue(jobStepStatusEnum.isRunable()); + assertEquals(1, jobStepStatusEnum.getCode()); + assertEquals(JobStepStatusEnum.PENDING, jobStepStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusStopped() { + ExecutableState executableState = ExecutableState.STOPPED; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(32, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.STOPPED, jobStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusFinished() { + ExecutableState executableState = ExecutableState.SUCCEED; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(4, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.FINISHED, jobStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusError() { + ExecutableState executableState = ExecutableState.ERROR; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(8, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.ERROR, jobStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusRunning() { + ExecutableState executableState = ExecutableState.RUNNING; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(2, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.RUNNING, jobStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusDiscarded() { + ExecutableState executableState = ExecutableState.DISCARDED; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(16, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.DISCARDED, jobStatusEnum); + } + + @Test + public void testParseToJobStatusReturnsJobStatusPending() { + ExecutableState executableState = ExecutableState.READY; + JobStatusEnum jobStatusEnum = JobInfoConverter.parseToJobStatus(executableState); + + assertEquals(1, jobStatusEnum.getCode()); + assertEquals(JobStatusEnum.PENDING, jobStatusEnum); + } + + @Test + public void testParseToJobInstanceQuietlyUsingNullCheckpointExecutable() { + TreeMap<String, Output> treeMap = new TreeMap<>(); + JobInstance jobInstance = JobInfoConverter.parseToJobInstanceQuietly((CheckpointExecutable) null, treeMap); + + assertNull(jobInstance); + } + + @Test + public void testParseToJobInstanceQuietlyUsingNullCubingJob() { + ConcurrentHashMap<String, Output> concurrentHashMap = new ConcurrentHashMap<>(); + JobInstance jobInstance = JobInfoConverter.parseToJobInstanceQuietly((CubingJob) null, concurrentHashMap); + + assertNull(jobInstance); + } + } diff --git a/engine-mr/src/test/java/org/apache/kylin/engine/mr/steps/lookup/LookupExecutableUtilTest.java b/engine-mr/src/test/java/org/apache/kylin/engine/mr/steps/lookup/LookupExecutableUtilTest.java new file mode 100644 index 0000000..7cae7b2 --- /dev/null +++ b/engine-mr/src/test/java/org/apache/kylin/engine/mr/steps/lookup/LookupExecutableUtilTest.java @@ -0,0 +1,63 @@ +/* + * 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. + */ + +package org.apache.kylin.engine.mr.steps.lookup; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +/** + * Unit tests for class {@link LookupExecutableUtil}. + * + * @see LookupExecutableUtil + */ +public class LookupExecutableUtilTest { + + @Test + public void testSetAndGetLookupTableName() { + Map<String, String> map = new HashMap<>(); + LookupExecutableUtil.setLookupTableName("bxI,*2 $r", map); + + assertEquals("bxI,*2 $r", LookupExecutableUtil.getLookupTableName(map)); + } + + @Test + public void testSetAndGetSegments() { + Map<String, String> map = new HashMap<>(); + List<String> segmentList = new ArrayList<>(0); + LookupExecutableUtil.setSegments(segmentList, map); + + assertEquals(0, LookupExecutableUtil.getSegments(map).size()); + + + map = new HashMap<>(); + segmentList = new ArrayList<>(1); + segmentList.add("a a"); + LookupExecutableUtil.setSegments(segmentList, map); + + assertEquals(1, LookupExecutableUtil.getSegments(map).size()); + assertEquals("[a a]", LookupExecutableUtil.getSegments(map).toString()); + } + +}