/* * * Copyright 2015 Netflix, Inc. * * Licensed 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 com.netflix.genie.common.dto; import com.netflix.genie.test.categories.UnitTest; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; import java.util.Date; import java.util.UUID; /** * Unit tests for the JobExecution class. * * @author tgianos * @since 3.0.0 */ @Category(UnitTest.class) public class JobExecutionUnitTests { private static final String HOST_NAME = UUID.randomUUID().toString(); private static final long CHECK_DELAY = 280843L; private static final int PROCESS_ID = 134234; private static final Date TIMEOUT = new Date(); private static final int MEMORY = 1_024; /** * Test to make sure can build a valid JobExecution using the builder. */ @Test public void canBuildJob() { final JobExecution execution = new JobExecution.Builder(HOST_NAME).build(); Assert.assertThat(execution.getHostName(), Matchers.is(HOST_NAME)); Assert.assertFalse(execution.getProcessId().isPresent()); Assert.assertFalse(execution.getCheckDelay().isPresent()); Assert.assertFalse(execution.getTimeout().isPresent()); Assert.assertFalse(execution.getExitCode().isPresent()); Assert.assertFalse(execution.getCreated().isPresent()); Assert.assertFalse(execution.getId().isPresent()); Assert.assertFalse(execution.getUpdated().isPresent()); Assert.assertFalse(execution.getMemory().isPresent()); } /** * Test to make sure can build a valid JobExecution with optional parameters. * * @throws Exception on error */ @Test public void canBuildJobWithOptionals() throws Exception { final JobExecution.Builder builder = new JobExecution.Builder(HOST_NAME); builder.withCheckDelay(CHECK_DELAY); builder.withProcessId(PROCESS_ID); builder.withTimeout(TIMEOUT); builder.withMemory(MEMORY); final int exitCode = 0; builder.withExitCode(exitCode); final Date created = new Date(); builder.withCreated(created); final String id = UUID.randomUUID().toString(); builder.withId(id); final Date updated = new Date(); builder.withUpdated(updated); final JobExecution execution = builder.build(); Assert.assertThat(execution.getHostName(), Matchers.is(HOST_NAME)); Assert.assertThat(execution.getProcessId().orElseThrow(IllegalArgumentException::new), Matchers.is(PROCESS_ID)); Assert.assertThat( execution.getCheckDelay().orElseThrow(IllegalArgumentException::new), Matchers.is(CHECK_DELAY) ); Assert.assertThat(execution.getTimeout().orElseThrow(IllegalArgumentException::new), Matchers.is(TIMEOUT)); Assert.assertThat(execution.getExitCode().orElseThrow(IllegalArgumentException::new), Matchers.is(exitCode)); Assert.assertThat(execution.getCreated().orElseThrow(IllegalArgumentException::new), Matchers.is(created)); Assert.assertThat(execution.getId().orElseThrow(IllegalArgumentException::new), Matchers.is(id)); Assert.assertThat(execution.getUpdated().orElseThrow(IllegalArgumentException::new), Matchers.is(updated)); Assert.assertThat(execution.getMemory().orElseThrow(IllegalArgumentException::new), Matchers.is(MEMORY)); } /** * Test to make sure a JobExecution can be successfully built when nulls are inputted. */ @Test public void canBuildJobWithNulls() { final JobExecution.Builder builder = new JobExecution.Builder(HOST_NAME); builder.withExitCode(null); builder.withProcessId(null); builder.withCheckDelay(null); builder.withTimeout(null); builder.withMemory(null); builder.withCreated(null); builder.withId(null); builder.withUpdated(null); final JobExecution execution = builder.build(); Assert.assertThat(execution.getHostName(), Matchers.is(HOST_NAME)); Assert.assertFalse(execution.getProcessId().isPresent()); Assert.assertFalse(execution.getCheckDelay().isPresent()); Assert.assertFalse(execution.getTimeout().isPresent()); Assert.assertFalse(execution.getExitCode().isPresent()); Assert.assertFalse(execution.getCreated().isPresent()); Assert.assertFalse(execution.getId().isPresent()); Assert.assertFalse(execution.getUpdated().isPresent()); Assert.assertFalse(execution.getMemory().isPresent()); } /** * Test equals. */ @Test public void canFindEquality() { final JobExecution.Builder builder = new JobExecution.Builder(HOST_NAME); builder.withCreated(null); builder.withId(UUID.randomUUID().toString()); builder.withUpdated(null); final JobExecution jobExecution1 = builder.build(); final JobExecution jobExecution2 = builder.build(); builder.withId(UUID.randomUUID().toString()); final JobExecution jobExecution3 = builder.build(); Assert.assertTrue(jobExecution1.equals(jobExecution2)); Assert.assertTrue(jobExecution2.equals(jobExecution1)); Assert.assertFalse(jobExecution1.equals(jobExecution3)); } /** * Test hash code. */ @Test public void canUseHashCode() { final JobExecution.Builder builder = new JobExecution.Builder(HOST_NAME); builder.withCreated(null); builder.withId(UUID.randomUUID().toString()); builder.withUpdated(null); final JobExecution jobExecution1 = builder.build(); final JobExecution jobExecution2 = builder.build(); builder.withId(UUID.randomUUID().toString()); final JobExecution jobExecution3 = builder.build(); Assert.assertEquals(jobExecution1.hashCode(), jobExecution2.hashCode()); Assert.assertNotEquals(jobExecution1.hashCode(), jobExecution3.hashCode()); } }