dropwizard/dropwizard

View on GitHub
dropwizard-lifecycle/src/test/java/io/dropwizard/lifecycle/ExecutorServiceManagerTest.java

Summary

Maintainability
A
2 hrs
Test Coverage
package io.dropwizard.lifecycle;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;

import java.util.concurrent.ExecutorService;

import org.junit.jupiter.api.Test;

import io.dropwizard.util.Duration;

class ExecutorServiceManagerTest {

    private static final Duration TEST_DURATION = Duration.seconds(1L);
    private final ExecutorService exec = mock(ExecutorService.class);

    @Test
    void testAccessors() {
        // This test verifies the accessors behave as advertised for other unit
        // tests.
        final String poolName = this.getClass().getSimpleName();

        final ExecutorServiceManager test = new ExecutorServiceManager(this.exec, TEST_DURATION, poolName);

        assertThat(test.getShutdownPeriod()).isSameAs(TEST_DURATION);
        assertThat(test.getPoolName()).isSameAs(poolName);
        assertThat(test.getExecutor()).isSameAs(this.exec);
        assertThat(test.toString()).contains(String.format("(%s)", poolName));
    }

    @Test
    void testManaged() throws Exception {
        final String poolName = this.getClass().getSimpleName();
        when(this.exec.awaitTermination(anyLong(), any())).thenReturn(true);

        final ExecutorServiceManager test = new ExecutorServiceManager(this.exec, TEST_DURATION, poolName);

        test.start();

        verifyNoInteractions(this.exec);

        test.stop();

        verify(this.exec).shutdown();
        verify(this.exec).awaitTermination(TEST_DURATION.getQuantity(), TEST_DURATION.getUnit());
    }

    @Test
    void testManagedTimeout() throws Exception {
        final String poolName = this.getClass().getSimpleName();
        when(this.exec.awaitTermination(anyLong(), any())).thenReturn(false);

        final ExecutorServiceManager test = new ExecutorServiceManager(this.exec, TEST_DURATION, poolName);

        test.start();

        verifyNoInteractions(this.exec);

        test.stop();

        verify(this.exec).shutdown();
        verify(this.exec).awaitTermination(TEST_DURATION.getQuantity(), TEST_DURATION.getUnit());
    }
}