View Javadoc

1   // Copyright (C) 2004 - 2011 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.util;
23  
24  import static org.junit.Assert.assertFalse;
25  import static org.junit.Assert.assertTrue;
26  import static org.junit.Assert.fail;
27  import static org.mockito.Matchers.contains;
28  import static org.mockito.Matchers.isA;
29  import static org.mockito.Matchers.same;
30  import static org.mockito.Mockito.mock;
31  import static org.mockito.Mockito.verify;
32  import static org.mockito.Mockito.verifyNoMoreInteractions;
33  
34  import org.junit.Test;
35  import org.slf4j.Logger;
36  
37  
38  /**
39   * Unit test case for {@link JVM}.
40   *
41   * @author Philip Aston
42   */
43  public class TestJVM {
44  
45    @Test public void testIsAtLeastVersion() throws Exception {
46      final JVM jvm = JVM.getInstance();
47  
48      assertTrue(jvm.isAtLeastVersion(1, 1));
49      assertTrue(jvm.isAtLeastVersion(1, 2));
50      assertTrue(jvm.isAtLeastVersion(1, 3));
51  
52      assertFalse(jvm.isAtLeastVersion(3, 0));
53      assertFalse(jvm.isAtLeastVersion(1, 9));
54  
55      final String[] badVersions = {
56        "not parseable",
57        "123123",
58        "",
59      };
60  
61      final String oldVersion = System.getProperty("java.version");
62  
63      try {
64        for (int i = 0; i < badVersions.length; ++i) {
65          System.setProperty("java.version", badVersions[i]);
66  
67          try {
68            jvm.isAtLeastVersion(1, 3);
69            fail("Expected JVM.VersionException");
70          }
71          catch (JVM.VersionException e) {
72          }
73        }
74      }
75      finally {
76        System.setProperty("java.version", oldVersion);
77      }
78    }
79  
80    @Test public void testHaveRequisites() throws Exception {
81      final Logger logger = mock(Logger.class);
82      final JVM jvm = JVM.getInstance();
83  
84      assertTrue(jvm.haveRequisites(logger));
85      verifyNoMoreInteractions(logger);
86  
87      final String oldVersion = System.getProperty("java.version");
88  
89      try {
90        System.setProperty("java.version", "1.2");
91  
92        assertFalse(jvm.haveRequisites(logger));
93        verify(logger).error(contains("incompatible version"),
94                             same(jvm),
95                             isA(String.class));
96      }
97      finally {
98        System.setProperty("java.version", oldVersion);
99      }
100   }
101 
102   @Test public void testToString() throws Exception {
103     final String result = JVM.getInstance().toString();
104 
105     assertTrue(result.indexOf(System.getProperty("java.vm.version")) > 0);
106     assertTrue(result.indexOf(System.getProperty("os.version")) > 0);
107   }
108 }