1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
40
41
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 }