1aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinpackage org.junit.runners.model;
2aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
3aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinimport java.util.concurrent.TimeUnit;
4aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
5aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin/**
6aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * Exception thrown when a test fails on timeout.
7aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin *
8aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * @since 4.12
9aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin *
10aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin */
11aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinpublic class TestTimedOutException extends Exception {
12aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
13aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    private static final long serialVersionUID = 31935685163547539L;
14aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
15aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    private final TimeUnit timeUnit;
16aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    private final long timeout;
17aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
18aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    /**
19aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     * Creates exception with a standard message "test timed out after [timeout] [timeUnit]"
20aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     *
21aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     * @param timeout the amount of time passed before the test was interrupted
22aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     * @param timeUnit the time unit for the timeout value
23aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     */
24aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    public TestTimedOutException(long timeout, TimeUnit timeUnit) {
25aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin        super(String.format("test timed out after %d %s",
26aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin                timeout, timeUnit.name().toLowerCase()));
27aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin        this.timeUnit = timeUnit;
28aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin        this.timeout = timeout;
29aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    }
30aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
31aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    /**
32aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     * Gets the time passed before the test was interrupted
33aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     */
34aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    public long getTimeout() {
35aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin        return timeout;
36aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    }
37aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin
38aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    /**
39aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     * Gets the time unit for the timeout value
40aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin     */
41aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    public TimeUnit getTimeUnit() {
42aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin        return timeUnit;
43aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin    }
44aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin}
45