• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.sdkstats;
18 
19 import java.util.HashMap;
20 import java.util.Map;
21 
22 import junit.framework.TestCase;
23 
24 public class SdkStatsServiceTest extends TestCase {
25 
26     private static class MockSdkStatsService extends SdkStatsService {
27 
28         private final String mOsName;
29         private final String mOsVersion;
30         private final String mOsArch;
31         private final String mJavaVersion;
32         private final Map<String, String> mEnvVars = new HashMap<String, String>();
33 
MockSdkStatsService(String osName, String osVersion, String osArch, String javaVersion)34         public MockSdkStatsService(String osName,
35                 String osVersion,
36                 String osArch,
37                 String javaVersion) {
38                     mOsName = osName;
39                     mOsVersion = osVersion;
40                     mOsArch = osArch;
41                     mJavaVersion = javaVersion;
42         }
43 
setSystemEnv(String varName, String value)44         public void setSystemEnv(String varName, String value) {
45             mEnvVars.put(varName, value);
46         }
47 
48         @Override
getSystemProperty(String name)49         protected String getSystemProperty(String name) {
50             if (SdkStatsService.SYS_PROP_OS_NAME.equals(name)) {
51                 return mOsName;
52             } else if (SdkStatsService.SYS_PROP_OS_VERSION.equals(name)) {
53                 return mOsVersion;
54             } else if (SdkStatsService.SYS_PROP_OS_ARCH.equals(name)) {
55                 return mOsArch;
56             } else if (SdkStatsService.SYS_PROP_JAVA_VERSION.equals(name)) {
57                 return mJavaVersion;
58             }
59             // Don't use current properties values, we don't want the tests to be flaky
60             fail("SdkStatsServiceTest doesn't define a system.property for " + name);
61             return null;
62         }
63 
64         @Override
getSystemEnv(String name)65         protected String getSystemEnv(String name) {
66             if (mEnvVars.containsKey(name)) {
67                 return mEnvVars.get(name);
68             }
69             // Don't use current env vars, we don't want the tests to be flaky
70             fail("SdkStatsServiceTest doesn't define a system.getenv for " + name);
71             return null;
72         }
73 
74     }
75 
76     @Override
setUp()77     protected void setUp() throws Exception {
78         super.setUp();
79     }
80 
81     @Override
tearDown()82     protected void tearDown() throws Exception {
83         super.tearDown();
84     }
85 
testSdkStatsService_getJvmArch()86     public void testSdkStatsService_getJvmArch() {
87         MockSdkStatsService m;
88 
89         m = new MockSdkStatsService("Windows", "4.0", "x86", "1.7");
90         assertEquals("x86", m.getJvmArch());
91         m = new MockSdkStatsService("Windows", "4.0", "i386", "1.7");
92         assertEquals("x86", m.getJvmArch());
93         m = new MockSdkStatsService("Windows", "4.0", "i486", "1.7");
94         assertEquals("x86", m.getJvmArch());
95         m = new MockSdkStatsService("Linux",   "4.0", "i486-linux", "1.7");
96         assertEquals("x86", m.getJvmArch());
97         m = new MockSdkStatsService("Windows", "4.0", "i586", "1.7");
98         assertEquals("x86", m.getJvmArch());
99         m = new MockSdkStatsService("Windows", "4.0", "i686", "1.7");
100         assertEquals("x86", m.getJvmArch());
101 
102         m = new MockSdkStatsService("Mac OS",  "10.0", "x86_64", "1.7");
103         assertEquals("x86_64", m.getJvmArch());
104         m = new MockSdkStatsService("Mac OS",  "8.0", "PowerPC", "1.7");
105         assertEquals("ppc", m.getJvmArch());
106 
107         m = new MockSdkStatsService("Mac OS",  "4.0", "x86_64", "1.7");
108         assertEquals("x86_64", m.getJvmArch());
109         m = new MockSdkStatsService("Windows", "4.0", "ia64", "1.7");
110         assertEquals("x86_64", m.getJvmArch());
111         m = new MockSdkStatsService("Windows", "4.0", "amd64", "1.7");
112         assertEquals("x86_64", m.getJvmArch());
113 
114         m = new MockSdkStatsService("Windows", "4.0", "atom", "1.7");
115         assertEquals("atom", m.getJvmArch());
116 
117         // 32 chars max
118         m = new MockSdkStatsService("Windows", "4.0",
119                 "one3456789ten3456789twenty6789thirty6789", "1.7");
120         assertEquals("one3456789ten3456789twenty6789th", m.getJvmArch());
121 
122         m = new MockSdkStatsService("Windows", "4.0", "", "1.7");
123         assertEquals("unknown", m.getJvmArch());
124 
125         m = new MockSdkStatsService("Windows", "4.0", null, "1.7");
126         assertEquals("unknown", m.getJvmArch());
127     }
128 
testSdkStatsService_getJvmVersion()129     public void testSdkStatsService_getJvmVersion() {
130         MockSdkStatsService m;
131 
132         m = new MockSdkStatsService("Windows", "4.0", "x86", "1.7.8_09");
133         assertEquals("1.7", m.getJvmVersion());
134 
135         m = new MockSdkStatsService("Windows", "4.0", "x86", "");
136         assertEquals("unknown", m.getJvmVersion());
137 
138         m = new MockSdkStatsService("Windows", "4.0", "x86", null);
139         assertEquals("unknown", m.getJvmVersion());
140 
141         // 8 chars max
142         m = new MockSdkStatsService("Windows", "4.0", "x86",
143                 "one3456789ten3456789twenty6789thirty6789");
144         assertEquals("one34567", m.getJvmVersion());
145     }
146 
testSdkStatsService_getJvmInfo()147     public void testSdkStatsService_getJvmInfo() {
148         MockSdkStatsService m;
149 
150         m = new MockSdkStatsService("Windows", "4.0", "x86", "1.7.8_09");
151         assertEquals("1.7-x86", m.getJvmInfo());
152 
153         m = new MockSdkStatsService("Windows", "4.0", "amd64", "1.7.8_09");
154         assertEquals("1.7-x86_64", m.getJvmInfo());
155 
156         m = new MockSdkStatsService("Windows", "4.0", "", "");
157         assertEquals("unknown-unknown", m.getJvmInfo());
158 
159         m = new MockSdkStatsService("Windows", "4.0", null, null);
160         assertEquals("unknown-unknown", m.getJvmInfo());
161 
162         // 8+32 chars max
163         m = new MockSdkStatsService("Windows", "4.0",
164                 "one3456789ten3456789twenty6789thirty6789",
165                 "one3456789ten3456789twenty6789thirty6789");
166         assertEquals("one34567-one3456789ten3456789twenty6789th", m.getJvmInfo());
167     }
168 
testSdkStatsService_getOsVersion()169     public void testSdkStatsService_getOsVersion() {
170         MockSdkStatsService m;
171 
172         m = new MockSdkStatsService("Windows", "4.0.32", "x86", "1.7.8_09");
173         assertEquals("4.0", m.getOsVersion());
174 
175         m = new MockSdkStatsService("Windows", "4.0", "x86", "1.7.8_09");
176         assertEquals("4.0", m.getOsVersion());
177 
178         m = new MockSdkStatsService("Windows", "4", "x86", "1.7.8_09");
179         assertEquals(null, m.getOsVersion());
180 
181         m = new MockSdkStatsService("Windows", "4.0;extrainfo", "x86", "1.7.8_09");
182         assertEquals("4.0", m.getOsVersion());
183 
184         m = new MockSdkStatsService("Mac OS", "10.8.32", "x86_64", "1.7.8_09");
185         assertEquals("10.8", m.getOsVersion());
186 
187         m = new MockSdkStatsService("Mac OS", "10.8", "x86_64", "1.7.8_09");
188         assertEquals("10.8", m.getOsVersion());
189 
190         m = new MockSdkStatsService("Other", "", "x86_64", "1.7.8_09");
191         assertEquals(null, m.getOsVersion());
192 
193         m = new MockSdkStatsService("Other", null, "x86_64", "1.7.8_09");
194         assertEquals(null, m.getOsVersion());
195     }
196 
testSdkStatsService_getOsArch()197     public void testSdkStatsService_getOsArch() {
198         MockSdkStatsService m;
199 
200         // 64 bit jvm
201         m = new MockSdkStatsService("Mac OS", "10.8.32", "x86_64", "1.7.8_09");
202         assertEquals("x86_64", m.getOsArch());
203 
204         m = new MockSdkStatsService("Windows", "8.32", "x86_64", "1.7.8_09");
205         assertEquals("x86_64", m.getOsArch());
206 
207         m = new MockSdkStatsService("Linux", "8.32", "x86_64", "1.7.8_09");
208         assertEquals("x86_64", m.getOsArch());
209 
210         // 32 bit jvm with 32 vs 64 bit os
211         m = new MockSdkStatsService("Windows", "8.32", "x86", "1.7.8_09");
212         m.setSystemEnv("PROCESSOR_ARCHITEW6432", null);
213         assertEquals("x86", m.getOsArch());
214 
215         m = new MockSdkStatsService("Windows", "8.32", "x86", "1.7.8_09");
216         m.setSystemEnv("PROCESSOR_ARCHITEW6432", "AMD64");
217         assertEquals("x86_64", m.getOsArch());
218 
219         m = new MockSdkStatsService("Windows", "8.32", "x86", "1.7.8_09");
220         m.setSystemEnv("PROCESSOR_ARCHITEW6432", "IA64");
221         assertEquals("x86_64", m.getOsArch());
222 
223         // 32 bit jvm with 32 vs 64 bit os
224         m = new MockSdkStatsService("Linux", "8.32", "x86", "1.7.8_09");
225         m.setSystemEnv("HOSTTYPE", null);
226         assertEquals("x86", m.getOsArch());
227 
228         m = new MockSdkStatsService("Linux", "8.32", "x86", "1.7.8_09");
229         m.setSystemEnv("HOSTTYPE", "i686-linux");
230         assertEquals("x86", m.getOsArch());
231 
232         m = new MockSdkStatsService("Linux", "8.32", "x86", "1.7.8_09");
233         m.setSystemEnv("HOSTTYPE", "AMD64");
234         assertEquals("x86_64", m.getOsArch());
235 
236         m = new MockSdkStatsService("Linux", "8.32", "x86", "1.7.8_09");
237         m.setSystemEnv("HOSTTYPE", "x86_64");
238         assertEquals("x86_64", m.getOsArch());
239     }
240 
testSdkStatsService_getOsName()241     public void testSdkStatsService_getOsName() {
242         MockSdkStatsService m;
243 
244         m = new MockSdkStatsService("Mac OS", "10.8.32", "x86_64", "1.7.8_09");
245         assertEquals("mac-10.8", m.getOsName());
246 
247         m = new MockSdkStatsService("mac", "10", "x86", "1.7.8_09");
248         assertEquals("mac", m.getOsName());
249 
250         m = new MockSdkStatsService("Windows", "6.2", "x86_64", "1.7.8_09");
251         assertEquals("win-6.2", m.getOsName());
252 
253         m = new MockSdkStatsService("win", "6.2", "x86", "1.7.8_09");
254         assertEquals("win-6.2", m.getOsName());
255 
256         m = new MockSdkStatsService("win", "6", "x86_64", "1.7.8_09");
257         assertEquals("win", m.getOsName());
258 
259         m = new MockSdkStatsService("Linux", "foobuntu-32", "x86", "1.7.8_09");
260         assertEquals("linux", m.getOsName());
261 
262         m = new MockSdkStatsService("linux", "1", "x86_64", "1.7.8_09");
263         assertEquals("linux", m.getOsName());
264 
265         m = new MockSdkStatsService("PowerPC", "32", "ppc", "1.7.8_09");
266         assertEquals("PowerPC", m.getOsName());
267 
268         m = new MockSdkStatsService("freebsd", "42", "x86_64", "1.7.8_09");
269         assertEquals("freebsd", m.getOsName());
270 
271         m = new MockSdkStatsService("openbsd", "43", "x86_64", "1.7.8_09");
272         assertEquals("openbsd", m.getOsName());
273 
274         // 32 chars max
275         m = new MockSdkStatsService("one3456789ten3456789twenty6789thirty6789",
276                 "42", "x86_64", "1.7.8_09");
277         assertEquals("one3456789ten3456789twenty6789th", m.getOsName());
278     }
279 }
280