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          assertTrue(newTestSetDefault().isEnableOutErrElements());
49          assertTrue(newTestSetDefault().isEnablePropertiesElement());
50      }
51  
52      @Test
53      public void optimizationParameter() {
54          assertFalse(newTestSetOptimization(false).isParallelOptimization());
55      }
56  
57      @Test
58      public void timeoutParameters() {
59          JUnitCoreParameters parameters = newTestSetTimeouts(5.5d, 11.1d);
60          assertThat(parameters.getParallelTestsTimeoutInSeconds(), is(5.5d));
61          assertThat(parameters.getParallelTestsTimeoutForcedInSeconds(), is(11.1d));
62      }
63  
64      @Test
65      public void isParallelMethod() {
66          assertFalse(newTestSetClasses().isParallelMethods());
67          assertTrue(newTestSetMethods().isParallelMethods());
68          assertTrue(newTestSetBoth().isParallelMethods());
69      }
70  
71      @Test
72      public void isParallelClasses() {
73          assertTrue(newTestSetClasses().isParallelClasses());
74          assertFalse(newTestSetMethods().isParallelClasses());
75          assertTrue(newTestSetBoth().isParallelClasses());
76      }
77  
78      @Test
79      public void isParallelBoth() {
80          assertFalse(isParallelMethodsAndClasses(newTestSetClasses()));
81          assertFalse(isParallelMethodsAndClasses(newTestSetMethods()));
82          assertTrue(isParallelMethodsAndClasses(newTestSetBoth()));
83      }
84  
85      @Test
86      public void isPerCoreThreadCount() {
87          assertFalse(newTestSetClasses().isPerCoreThreadCount());
88          assertFalse(newTestSetMethods().isPerCoreThreadCount());
89          assertTrue(newTestSetBoth().isPerCoreThreadCount());
90      }
91  
92      @Test
93      public void getThreadCount() {
94          assertFalse(newTestSetClasses().isPerCoreThreadCount());
95          assertFalse(newTestSetMethods().isPerCoreThreadCount());
96          assertTrue(newTestSetBoth().isPerCoreThreadCount());
97      }
98  
99      @Test
100     public void isUseUnlimitedThreads() {
101         assertFalse(newTestSetClasses().isUseUnlimitedThreads());
102         assertTrue(newTestSetMethods().isUseUnlimitedThreads());
103         assertFalse(newTestSetBoth().isUseUnlimitedThreads());
104     }
105 
106     @Test
107     public void isNoThreading() {
108         assertFalse(newTestSetClasses().isNoThreading());
109         assertFalse(newTestSetMethods().isNoThreading());
110         assertFalse(newTestSetBoth().isNoThreading());
111     }
112 
113     @Test
114     public void isAnyParallelismSelected() {
115         assertTrue(newTestSetClasses().isParallelismSelected());
116         assertTrue(newTestSetMethods().isParallelismSelected());
117         assertTrue(newTestSetBoth().isParallelismSelected());
118     }
119 
120     private Map<String, String> newDefaultProperties() {
121         return new HashMap<>();
122     }
123 
124     private Map<String, String> newPropertiesClasses() {
125         Map<String, String> props = new HashMap<>();
126         props.put(JUnitCoreParameters.PARALLEL_KEY, "classes");
127         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
128         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
129         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
130         return props;
131     }
132 
133     private Map<String, String> newPropertiesMethods() {
134         Map<String, String> props = new HashMap<>();
135         props.put(JUnitCoreParameters.PARALLEL_KEY, "methods");
136         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "false");
137         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "2");
138         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "true");
139         return props;
140     }
141 
142     private Map<String, String> newPropertiesBoth() {
143         Map<String, String> props = new HashMap<>();
144         props.put(JUnitCoreParameters.PARALLEL_KEY, "both");
145         props.put(JUnitCoreParameters.PERCORETHREADCOUNT_KEY, "true");
146         props.put(JUnitCoreParameters.THREADCOUNT_KEY, "7");
147         props.put(JUnitCoreParameters.USEUNLIMITEDTHREADS_KEY, "false");
148         return props;
149     }
150 
151     private Map<String, String> newPropertiesTimeouts(double timeout, double forcedTimeout) {
152         Map<String, String> props = new HashMap<>();
153         props.put(JUnitCoreParameters.PARALLEL_TIMEOUT_KEY, Double.toString(timeout));
154         props.put(JUnitCoreParameters.PARALLEL_TIMEOUTFORCED_KEY, Double.toString(forcedTimeout));
155         return props;
156     }
157 
158     private Map<String, String> newPropertiesOptimization(boolean optimize) {
159         Map<String, String> props = new HashMap<>();
160         props.put(JUnitCoreParameters.PARALLEL_OPTIMIZE_KEY, Boolean.toString(optimize));
161         return props;
162     }
163 
164     private JUnitCoreParameters newTestSetDefault() {
165         return new JUnitCoreParameters(newDefaultProperties());
166     }
167 
168     private JUnitCoreParameters newTestSetBoth() {
169         return new JUnitCoreParameters(newPropertiesBoth());
170     }
171 
172     private JUnitCoreParameters newTestSetClasses() {
173         return new JUnitCoreParameters(newPropertiesClasses());
174     }
175 
176     private JUnitCoreParameters newTestSetMethods() {
177         return new JUnitCoreParameters(newPropertiesMethods());
178     }
179 
180     private JUnitCoreParameters newTestSetOptimization(boolean optimize) {
181         return new JUnitCoreParameters(newPropertiesOptimization(optimize));
182     }
183 
184     private JUnitCoreParameters newTestSetTimeouts(double timeout, double forcedTimeout) {
185         return new JUnitCoreParameters(newPropertiesTimeouts(timeout, forcedTimeout));
186     }
187 
188     private boolean isParallelMethodsAndClasses(JUnitCoreParameters jUnitCoreParameters) {
189         return jUnitCoreParameters.isParallelMethods() && jUnitCoreParameters.isParallelClasses();
190     }
191 }