View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.surefire.junitcore;
20  
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  import org.junit.Test;
25  
26  import static org.hamcrest.core.Is.is;
27  import static org.junit.Assert.assertFalse;
28  import static org.junit.Assert.assertThat;
29  import static org.junit.Assert.assertTrue;
30  
31  /**
32   * @author Kristian Rosenvold, kristian.rosenvold@gmail com
33   */
34  @SuppressWarnings("checkstyle:magicnumber")
35  public class JUnitCoreParametersTest {
36      @Test
37      public void defaultParameters() {
38          assertFalse(newTestSetDefault().isParallelismSelected());
39          assertTrue(newTestSetDefault().isPerCoreThreadCount());
40          assertThat(newTestSetDefault().getThreadCount(), is(0));
41          assertThat(newTestSetDefault().getThreadCountMethods(), is(0));
42          assertThat(newTestSetDefault().getThreadCountClasses(), is(0));
43          assertThat(newTestSetDefault().getThreadCountSuites(), is(0));
44          assertFalse(newTestSetDefault().isUseUnlimitedThreads());
45          assertThat(newTestSetDefault().getParallelTestsTimeoutInSeconds(), is(0d));
46          assertThat(newTestSetDefault().getParallelTestsTimeoutForcedInSeconds(), is(0d));
47          assertTrue(newTestSetDefault().isParallelOptimization());
48      }
49  
50      @Test
51      public void optimizationParameter() {
52          assertFalse(newTestSetOptimization(false).isParallelOptimization());
53      }
54  
55      @Test
56      public void timeoutParameters() {
57          JUnitCoreParameters parameters = newTestSetTimeouts(5.5d, 11.1d);
58          assertThat(parameters.getParallelTestsTimeoutInSeconds(), is(5.5d));
59          assertThat(parameters.getParallelTestsTimeoutForcedInSeconds(), is(11.1d));
60      }
61  
62      @Test
63      public void isParallelMethod() {
64          assertFalse(newTestSetClasses().isParallelMethods());
65          assertTrue(newTestSetMethods().isParallelMethods());
66          assertTrue(newTestSetBoth().isParallelMethods());
67      }
68  
69      @Test
70      public void isParallelClasses() {
71          assertTrue(newTestSetClasses().isParallelClasses());
72          assertFalse(newTestSetMethods().isParallelClasses());
73          assertTrue(newTestSetBoth().isParallelClasses());
74      }
75  
76      @Test
77      public void isParallelBoth() {
78          assertFalse(isParallelMethodsAndClasses(newTestSetClasses()));
79          assertFalse(isParallelMethodsAndClasses(newTestSetMethods()));
80          assertTrue(isParallelMethodsAndClasses(newTestSetBoth()));
81      }
82  
83      @Test
84      public void isPerCoreThreadCount() {
85          assertFalse(newTestSetClasses().isPerCoreThreadCount());
86          assertFalse(newTestSetMethods().isPerCoreThreadCount());
87          assertTrue(newTestSetBoth().isPerCoreThreadCount());
88      }
89  
90      @Test
91      public void getThreadCount() {
92          assertFalse(newTestSetClasses().isPerCoreThreadCount());
93          assertFalse(newTestSetMethods().isPerCoreThreadCount());
94          assertTrue(newTestSetBoth().isPerCoreThreadCount());
95      }
96  
97      @Test
98      public void isUseUnlimitedThreads() {
99          assertFalse(newTestSetClasses().isUseUnlimitedThreads());
100         assertTrue(newTestSetMethods().isUseUnlimitedThreads());
101         assertFalse(newTestSetBoth().isUseUnlimitedThreads());
102     }
103 
104     @Test
105     public void isNoThreading() {
106         assertFalse(newTestSetClasses().isNoThreading());
107         assertFalse(newTestSetMethods().isNoThreading());
108         assertFalse(newTestSetBoth().isNoThreading());
109     }
110 
111     @Test
112     public void isAnyParallelismSelected() {
113         assertTrue(newTestSetClasses().isParallelismSelected());
114         assertTrue(newTestSetMethods().isParallelismSelected());
115         assertTrue(newTestSetBoth().isParallelismSelected());
116     }
117 
118     private Map<String, String> newDefaultProperties() {
119         return new HashMap<>();
120     }
121 
122     private Map<String, String> newPropertiesClasses() {
123         Map<String, String> props = new HashMap<>();
124         props.put(JUnitCoreParameters.PARALLEL_KEY, "classes");
125         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
126         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
127         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
128         return props;
129     }
130 
131     private Map<String, String> newPropertiesMethods() {
132         Map<String, String> props = new HashMap<>();
133         props.put(JUnitCoreParameters.PARALLEL_KEY, "methods");
134         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
135         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
136         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "true");
137         return props;
138     }
139 
140     private Map<String, String> newPropertiesBoth() {
141         Map<String, String> props = new HashMap<>();
142         props.put(JUnitCoreParameters.PARALLEL_KEY, "both");
143         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "true");
144         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "7");
145         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
146         return props;
147     }
148 
149     private Map<String, String> newPropertiesTimeouts(double timeout, double forcedTimeout) {
150         Map<String, String> props = new HashMap<>();
151         props.put(JUnitCoreParameters.PARALLEL_TIMEOUT_KEY, Double.toString(timeout));
152         props.put(JUnitCoreParameters.PARALLEL_TIMEOUTFORCED_KEY, Double.toString(forcedTimeout));
153         return props;
154     }
155 
156     private Map<String, String> newPropertiesOptimization(boolean optimize) {
157         Map<String, String> props = new HashMap<>();
158         props.put(JUnitCoreParameters.PARALLEL_OPTIMIZE_KEY, Boolean.toString(optimize));
159         return props;
160     }
161 
162     private JUnitCoreParameters newTestSetDefault() {
163         return new JUnitCoreParameters(newDefaultProperties());
164     }
165 
166     private JUnitCoreParameters newTestSetBoth() {
167         return new JUnitCoreParameters(newPropertiesBoth());
168     }
169 
170     private JUnitCoreParameters newTestSetClasses() {
171         return new JUnitCoreParameters(newPropertiesClasses());
172     }
173 
174     private JUnitCoreParameters newTestSetMethods() {
175         return new JUnitCoreParameters(newPropertiesMethods());
176     }
177 
178     private JUnitCoreParameters newTestSetOptimization(boolean optimize) {
179         return new JUnitCoreParameters(newPropertiesOptimization(optimize));
180     }
181 
182     private JUnitCoreParameters newTestSetTimeouts(double timeout, double forcedTimeout) {
183         return new JUnitCoreParameters(newPropertiesTimeouts(timeout, forcedTimeout));
184     }
185 
186     private boolean isParallelMethodsAndClasses(JUnitCoreParameters jUnitCoreParameters) {
187         return jUnitCoreParameters.isParallelMethods() && jUnitCoreParameters.isParallelClasses();
188     }
189 }