View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.lang3;
19  
20  import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
21  import static org.junit.jupiter.api.Assertions.assertEquals;
22  import static org.junit.jupiter.api.Assertions.assertFalse;
23  import static org.junit.jupiter.api.Assertions.assertNotNull;
24  import static org.junit.jupiter.api.Assertions.assertNull;
25  import static org.junit.jupiter.api.Assumptions.assumeTrue;
26  
27  import org.junit.jupiter.api.Test;
28  
29  public class SystemPropertiesTest {
30  
31      private void basicKeyCheck(final String key) {
32          assertNotNull(key);
33          assertFalse(key.isEmpty());
34          assertDoesNotThrow(() -> System.getProperties().get(key));
35          assertDoesNotThrow(() -> System.getProperty(key));
36          assertDoesNotThrow(() -> System.getProperty(key, ""));
37  // Debug/Info
38  //        if (!System.getProperties().containsKey(key)) {
39  //            System.out.printf("No key '%s'%n", key);
40  //        } else if (System.getProperty(key) == null) {
41  //            System.out.printf("Null value at key '%s'%n", key);
42  //        }
43      }
44  
45      private boolean isJava11OrGreater() {
46          return SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_11);
47      }
48  
49      @Test
50      public void testActualKeys() {
51          basicKeyCheck(SystemProperties.APPLE_AWT_ENABLE_TEMPLATE_IMAGES);
52          basicKeyCheck(SystemProperties.AWT_TOOLKIT);
53          basicKeyCheck(SystemProperties.COM_SUN_JNDI_LDAP_OBJECT_TRUST_SERIAL_DATA);
54          basicKeyCheck(SystemProperties.COM_SUN_NET_HTTP_SERVER_HTTP_SERVER_PROVIDER);
55          basicKeyCheck(SystemProperties.FILE_ENCODING);
56          basicKeyCheck(SystemProperties.FILE_SEPARATOR);
57          basicKeyCheck(SystemProperties.FTP_NON_PROXY_HOST);
58          basicKeyCheck(SystemProperties.FTP_PROXY_HOST);
59          basicKeyCheck(SystemProperties.FTP_PROXY_PORT);
60          basicKeyCheck(SystemProperties.HTTP_AGENT);
61          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_CNONCE_REPEAT);
62          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_RE_ENABLED_ALGORITHMS);
63          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_PROXY);
64          basicKeyCheck(SystemProperties.HTTP_AUTH_DIGEST_VALIDATE_SERVER);
65          basicKeyCheck(SystemProperties.HTTP_AUTH_NTLM_DOMAIN);
66          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE);
67          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_PROXY);
68          basicKeyCheck(SystemProperties.HTTP_KEEP_ALIVE_TIME_SERVER);
69          basicKeyCheck(SystemProperties.HTTP_MAX_CONNECTIONS);
70          basicKeyCheck(SystemProperties.HTTP_MAX_REDIRECTS);
71          basicKeyCheck(SystemProperties.HTTP_NON_PROXY_HOSTS);
72          basicKeyCheck(SystemProperties.HTTP_PROXY_HOST);
73          basicKeyCheck(SystemProperties.HTTP_PROXY_PORT);
74          basicKeyCheck(SystemProperties.HTTPS_PROXY_HOST);
75          basicKeyCheck(SystemProperties.HTTPS_PROXY_PORT);
76          basicKeyCheck(SystemProperties.JAVA_AWT_FONTS);
77          basicKeyCheck(SystemProperties.JAVA_AWT_GRAPHICSENV);
78          basicKeyCheck(SystemProperties.JAVA_AWT_HEADLESS);
79          basicKeyCheck(SystemProperties.JAVA_AWT_PRINTERJOB);
80          basicKeyCheck(SystemProperties.JAVA_CLASS_PATH);
81          basicKeyCheck(SystemProperties.JAVA_CLASS_VERSION);
82          basicKeyCheck(SystemProperties.JAVA_COMPILER);
83          basicKeyCheck(SystemProperties.JAVA_CONTENT_HANDLER_PKGS);
84          basicKeyCheck(SystemProperties.JAVA_ENDORSED_DIRS);
85          basicKeyCheck(SystemProperties.JAVA_EXT_DIRS);
86          basicKeyCheck(SystemProperties.JAVA_HOME);
87          basicKeyCheck(SystemProperties.JAVA_IO_TMPDIR);
88          basicKeyCheck(SystemProperties.JAVA_LIBRARY_PATH);
89          basicKeyCheck(SystemProperties.JAVA_LOCALE_PROVIDERS);
90          basicKeyCheck(SystemProperties.JAVA_LOCALE_USE_OLD_ISO_CODES);
91          basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV4_STACK);
92          basicKeyCheck(SystemProperties.JAVA_NET_PREFER_IPV6_ADDRESSES);
93          basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_PASSWORD);
94          basicKeyCheck(SystemProperties.JAVA_NET_SOCKS_USER_NAME);
95          basicKeyCheck(SystemProperties.JAVA_NET_USE_SYSTEM_PROXIES);
96          basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_INITIAL_SIZE);
97          basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_DEFAULT_THREAD_POOL_THREAD_FACTORY);
98          basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_ASYNCHRONOUS_CHANNEL_PROVIDER);
99          basicKeyCheck(SystemProperties.JAVA_NIO_CHANNELS_SPI_SELECTOR_PROVIDER);
100         basicKeyCheck(SystemProperties.JAVA_NIO_FILE_SPI_DEFAULT_FILE_SYSTEM_PROVIDER);
101         basicKeyCheck(SystemProperties.JAVA_PROPERTIES_DATE);
102         basicKeyCheck(SystemProperties.JAVA_PROTOCOL_HANDLER_PKGS);
103         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_CODEBASE);
104         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_HOST_NAME);
105         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RANDOM_IDS);
106         basicKeyCheck(SystemProperties.JAVA_RMI_SERVER_RMI_CLASS_LOADER_SPI);
107         basicKeyCheck(SystemProperties.JAVA_RUNTIME_NAME);
108         basicKeyCheck(SystemProperties.JAVA_RUNTIME_VERSION);
109         basicKeyCheck(SystemProperties.JAVA_SECURITY_AUTH_LOGIN_CONFIG);
110         basicKeyCheck(SystemProperties.JAVA_SECURITY_MANAGER);
111         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_MAINTENANCE_VERSION);
112         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_NAME);
113         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VENDOR);
114         basicKeyCheck(SystemProperties.JAVA_SPECIFICATION_VERSION);
115         basicKeyCheck(SystemProperties.JAVA_SYSTEM_CLASS_LOADER);
116         basicKeyCheck(SystemProperties.JAVA_TIME_ZONE_DEFAULT_ZONE_RULES_PROVIDER);
117         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_EXCEPTION_HANDLER);
118         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_MAXIMUM_SPARES);
119         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_PARALLELISM);
120         basicKeyCheck(SystemProperties.JAVA_UTIL_CONCURRENT_FORK_JOIN_POOL_COMMON_THREAD_FACTORY);
121         basicKeyCheck(SystemProperties.JAVA_UTIL_CURRENCY_DATA);
122         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_CLASS);
123         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_CONFIG_FILE);
124         basicKeyCheck(SystemProperties.JAVA_UTIL_LOGGING_SIMPLE_FORMATTER_FORMAT);
125         basicKeyCheck(SystemProperties.JAVA_UTIL_PREFS_PREFERENCES_FACTORY);
126         basicKeyCheck(SystemProperties.JAVA_UTIL_PROPERTY_RESOURCE_BUNDLE_ENCODING);
127         basicKeyCheck(SystemProperties.JAVA_VENDOR);
128         basicKeyCheck(SystemProperties.JAVA_VENDOR_URL);
129         basicKeyCheck(SystemProperties.JAVA_VENDOR_VERSION);
130         basicKeyCheck(SystemProperties.JAVA_VERSION);
131         basicKeyCheck(SystemProperties.JAVA_VERSION_DATE);
132         basicKeyCheck(SystemProperties.JAVA_VM_INFO);
133         basicKeyCheck(SystemProperties.JAVA_VM_NAME);
134         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_NAME);
135         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VENDOR);
136         basicKeyCheck(SystemProperties.JAVA_VM_SPECIFICATION_VERSION);
137         basicKeyCheck(SystemProperties.JAVA_VM_VENDOR);
138         basicKeyCheck(SystemProperties.JAVA_VM_VERSION);
139         basicKeyCheck(SystemProperties.JAVA_XML_CONFIG_FILE);
140         basicKeyCheck(SystemProperties.JAVAX_ACCESSIBILITY_ASSISTIVE_TECHNOLOGIES);
141         basicKeyCheck(SystemProperties.JAVAX_NET_SSL_SESSION_CACHE_SIZE);
142         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES);
143         basicKeyCheck(SystemProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS);
144         basicKeyCheck(SystemProperties.JAVAX_SECURITY_AUTH_USE_SUBJECT_CREDS_ONLY);
145         basicKeyCheck(SystemProperties.JAVAX_SMART_CARD_IO_TERMINAL_FACTORY_DEFAULT_TYPE);
146         basicKeyCheck(SystemProperties.JDBC_DRIVERS);
147         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_PROXYING_DISABLED_SCHEMES);
148         basicKeyCheck(SystemProperties.JDK_HTTP_AUTH_TUNNELING_DISABLED_SCHEMES);
149         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ALLOW_RESTRICTED_HEADERS);
150         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_AUTH_RETRY_LIMIT);
151         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_BUF_SIZE);
152         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_POOL_SIZE);
153         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_CONNECTION_WINDOW_SIZE);
154         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_DISABLE_RETRY_CONNECT);
155         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_ALL_METHOD_RETRY);
156         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_ENABLE_PUSH);
157         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HPACK_MAX_HEADER_TABLE_SIZE);
158         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_HTTP_CLIENT_LOG);
159         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT);
160         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_KEEP_ALIVE_TIMEOUT_H2);
161         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_FRAME_SIZE);
162         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_MAX_STREAMS);
163         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_RECEIVE_BUFFER_SIZE);
164         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_REDIRECTS_RETRY_LIMIT);
165         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_SEND_BUFFER_SIZE);
166         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WEB_SOCKET_WRITE_BUFFER_SIZE);
167         basicKeyCheck(SystemProperties.JDK_HTTP_CLIENT_WINDOW_SIZE);
168         basicKeyCheck(SystemProperties.JDK_HTTPS_NEGOTIATE_CBT);
169         basicKeyCheck(SystemProperties.JDK_HTTP_SERVER_MAX_CONNECTIONS);
170         basicKeyCheck(SystemProperties.JDK_INCLUDE_IN_EXCEPTIONS);
171         basicKeyCheck(SystemProperties.JDK_INTERNAL_HTTP_CLIENT_DISABLE_HOST_NAME_VERIFICATION);
172         basicKeyCheck(SystemProperties.JDK_IO_PERMISSIONS_USE_CANONICAL_PATH);
173         basicKeyCheck(SystemProperties.JDK_JNDI_LDAP_OBJECT_FACTORIES_FILTER);
174         basicKeyCheck(SystemProperties.JDK_JNDI_OBJECT_FACTORIES_FILTER);
175         basicKeyCheck(SystemProperties.JDK_JNDI_RMI_OBJECT_FACTORIES_FILTER);
176         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN);
177         basicKeyCheck(SystemProperties.JDK_MODULE_MAIN_CLASS);
178         basicKeyCheck(SystemProperties.JDK_MODULE_PATH);
179         basicKeyCheck(SystemProperties.JDK_MODULE_UPGRADE_PATH);
180         basicKeyCheck(SystemProperties.JDK_NET_UNIX_DOMAIN_TMPDIR);
181         basicKeyCheck(SystemProperties.JDK_NET_URL_CLASS_PATH_SHOW_IGNORED_CLASS_PATH_ENTRIES);
182         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER);
183         basicKeyCheck(SystemProperties.JDK_SERIAL_FILTER_FACTORY);
184         basicKeyCheck(SystemProperties.JDK_TLS_CLIENT_SIGNATURE_SCHEMES);
185         basicKeyCheck(SystemProperties.JDK_TLS_NAMED_GROUPS);
186         basicKeyCheck(SystemProperties.JDK_TLS_SERVER_SIGNATURE_SCHEMES);
187         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_MAXPOOLSIZE);
188         basicKeyCheck(SystemProperties.JDK_VIRTUAL_THREAD_SCHEDULER_PARALLELISM);
189         basicKeyCheck(SystemProperties.JDK_XML_CDATA_CHUNK_SIZE);
190         basicKeyCheck(SystemProperties.JDK_XML_DTD_SUPPORT);
191         basicKeyCheck(SystemProperties.JDK_XML_ELEMENT_ATTRIBUTE_LIMIT);
192         basicKeyCheck(SystemProperties.JDK_XML_ENABLE_EXTENSION_FUNCTIONS);
193         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_EXPANSION_LIMIT);
194         basicKeyCheck(SystemProperties.JDK_XML_ENTITY_REPLACEMENT_LIMIT);
195         basicKeyCheck(SystemProperties.JDK_XML_IS_STANDALONE);
196         basicKeyCheck(SystemProperties.JDK_XML_JDK_CATALOG_RESOLVE);
197         basicKeyCheck(SystemProperties.JDK_XML_MAX_ELEMENT_DEPTH);
198         basicKeyCheck(SystemProperties.JDK_XML_MAX_GENERAL_ENTITY_SIZE_LIMIT);
199         basicKeyCheck(SystemProperties.JDK_XML_MAX_OCCUR_LIMIT);
200         basicKeyCheck(SystemProperties.JDK_XML_MAX_PARAMETER_ENTITY_SIZE_LIMIT);
201         basicKeyCheck(SystemProperties.JDK_XML_MAX_XML_NAME_LIMIT);
202         basicKeyCheck(SystemProperties.JDK_XML_OVERRIDE_DEFAULT_PARSER);
203         basicKeyCheck(SystemProperties.JDK_XML_RESET_SYMBOL_TABLE);
204         basicKeyCheck(SystemProperties.JDK_XML_TOTAL_ENTITY_SIZE_LIMIT);
205         basicKeyCheck(SystemProperties.JDK_XML_XSLTC_IS_STANDALONE);
206         basicKeyCheck(SystemProperties.LINE_SEPARATOR);
207         basicKeyCheck(SystemProperties.NATIVE_ENCODING);
208         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_NEGATIVE_TTL);
209         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_STALE_TTL);
210         basicKeyCheck(SystemProperties.NETWORK_ADDRESS_CACHE_TTL);
211         basicKeyCheck(SystemProperties.ORG_JCP_XML_DSIG_SECURE_VALIDATION);
212         basicKeyCheck(SystemProperties.ORG_OPENJDK_JAVA_UTIL_STREAM_TRIPWIRE);
213         basicKeyCheck(SystemProperties.OS_ARCH);
214         basicKeyCheck(SystemProperties.OS_NAME);
215         basicKeyCheck(SystemProperties.OS_VERSION);
216         basicKeyCheck(SystemProperties.PATH_SEPARATOR);
217         basicKeyCheck(SystemProperties.SOCKS_PROXY_HOST);
218         basicKeyCheck(SystemProperties.SOCKS_PROXY_PORT);
219         basicKeyCheck(SystemProperties.SOCKS_PROXY_VERSION);
220         basicKeyCheck(SystemProperties.STDERR_ENCODING);
221         basicKeyCheck(SystemProperties.STDOUT_ENCODING);
222         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_DRAIN_AMOUNT);
223         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_IDLE_INTERVAL);
224         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_IDLE_CONNECTIONS);
225         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_HEADERS);
226         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_REQ_TIME);
227         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_MAX_RSP_TIME);
228         basicKeyCheck(SystemProperties.SUN_NET_HTTP_SERVER_NO_DELAY);
229         basicKeyCheck(SystemProperties.SUN_SECURITY_KRB5_PRINCIPAL);
230         basicKeyCheck(SystemProperties.USER_COUNTRY);
231         basicKeyCheck(SystemProperties.USER_DIR);
232         basicKeyCheck(SystemProperties.USER_EXTENSIONS);
233         basicKeyCheck(SystemProperties.USER_HOME);
234         basicKeyCheck(SystemProperties.USER_LANGUAGE);
235         basicKeyCheck(SystemProperties.USER_NAME);
236         basicKeyCheck(SystemProperties.USER_REGION);
237         basicKeyCheck(SystemProperties.USER_SCRIPT);
238         basicKeyCheck(SystemProperties.USER_TIMEZONE);
239         basicKeyCheck(SystemProperties.USER_VARIANT);
240     }
241 
242     @Test
243     public void testGetAwtToolkit() {
244         assertDoesNotThrow(SystemProperties::getAwtToolkit);
245     }
246 
247     @Test
248     public void testGetBoolean() {
249         final String key = RandomStringUtils.random(10);
250         final String absentKey = RandomStringUtils.random(10);
251         assertNull(System.getProperty(absentKey));
252         try {
253             System.setProperty(key, Boolean.toString(Boolean.TRUE));
254             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(key, () -> false));
255             assertEquals(Boolean.TRUE, SystemProperties.getBoolean(absentKey, () -> Boolean.TRUE));
256             assertFalse(SystemProperties.getBoolean(absentKey, () -> false));
257             assertFalse(SystemProperties.getBoolean(absentKey, null));
258         } finally {
259             System.clearProperty(key);
260         }
261     }
262 
263     @Test
264     public void testGetDoesNotThrow() {
265         assertDoesNotThrow(SystemProperties::getAppleAwtEnableTemplateImages);
266         assertDoesNotThrow(SystemProperties::getAwtToolkit);
267         assertDoesNotThrow(SystemProperties::getComSunJndiLdapObjectTrustSerialData);
268         assertDoesNotThrow(SystemProperties::getComSunNetHttpServerHttpServerProvider);
269         assertDoesNotThrow(SystemProperties::getFileEncoding);
270         assertDoesNotThrow(SystemProperties::getFileSeparator);
271         assertDoesNotThrow(SystemProperties::getFtpNonProxyHost);
272         assertDoesNotThrow(SystemProperties::getFtpProxyHost);
273         assertDoesNotThrow(SystemProperties::getFtpProxyPort);
274         assertDoesNotThrow(SystemProperties::getHttpAgent);
275         assertDoesNotThrow(SystemProperties::getHttpAuthDigestCnonceRepeat);
276         assertDoesNotThrow(SystemProperties::getHttpAuthDigestReenabledAlgorithms);
277         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateProxy);
278         assertDoesNotThrow(SystemProperties::getHttpAuthDigestValidateServer);
279         assertDoesNotThrow(SystemProperties::getHttpAuthNtlmDomain);
280         assertDoesNotThrow(SystemProperties::getHttpKeepAlive);
281         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeProxy);
282         assertDoesNotThrow(SystemProperties::getHttpKeepAliveTimeServer);
283         assertDoesNotThrow(SystemProperties::getHttpMaxConnections);
284         assertDoesNotThrow(SystemProperties::getHttpMaxRedirects);
285         assertDoesNotThrow(SystemProperties::getHttpNonProxyHosts);
286         assertDoesNotThrow(SystemProperties::getHttpProxyHost);
287         assertDoesNotThrow(SystemProperties::getHttpProxyPort);
288         assertDoesNotThrow(SystemProperties::getHttpsProxyHost);
289         assertDoesNotThrow(SystemProperties::getHttpsProxyPort);
290         assertDoesNotThrow(SystemProperties::getJavaAwtFonts);
291         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
292         assertDoesNotThrow(SystemProperties::getJavaAwtHeadless);
293         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
294         assertDoesNotThrow(SystemProperties::getJavaClassPath);
295         assertDoesNotThrow(SystemProperties::getJavaClassVersion);
296         assertDoesNotThrow(SystemProperties::getJavaCompiler);
297         assertDoesNotThrow(SystemProperties::getJavaContentHandlerPkgs);
298         assertDoesNotThrow(SystemProperties::getJavaEndorsedDirs);
299         assertDoesNotThrow(SystemProperties::getJavaExtDirs);
300         assertDoesNotThrow(SystemProperties::getJavaHome);
301         assertDoesNotThrow(SystemProperties::getJavaIoTmpdir);
302         assertDoesNotThrow(SystemProperties::getJavaLibraryPath);
303         assertDoesNotThrow(SystemProperties::getJavaLocaleProviders);
304         assertDoesNotThrow(SystemProperties::getJavaLocaleUseOldIsoCodes);
305         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv4Stack);
306         assertDoesNotThrow(SystemProperties::getJavaNetPreferIpv6Addresses);
307         assertDoesNotThrow(SystemProperties::getJavaNetSocksPassword);
308         assertDoesNotThrow(SystemProperties::getJavaNetSocksUserName);
309         assertDoesNotThrow(SystemProperties::getJavaNetUseSystemProxies);
310         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolInitialSize);
311         assertDoesNotThrow(SystemProperties::getJavaNioChannelsDefaultThreadPoolThreadFactory);
312         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiAsynchronousChannelProvider);
313         assertDoesNotThrow(SystemProperties::getJavaNioChannelsSpiSelectorProvider);
314         assertDoesNotThrow(SystemProperties::getJavaNioFileSpiDefaultFileSystemProvider);
315         assertDoesNotThrow(SystemProperties::getJavaPropertiesDate);
316         assertDoesNotThrow(SystemProperties::getJavaProtocolHandlerPkgs);
317         assertDoesNotThrow(SystemProperties::getJavaRmiServerCodebase);
318         assertDoesNotThrow(SystemProperties::getJavaRmiServerHostName);
319         assertDoesNotThrow(SystemProperties::getJavaRmiServerRandomIds);
320         assertDoesNotThrow(SystemProperties::getJavaRmiServerRmiClassLoaderSpi);
321         assertDoesNotThrow(SystemProperties::getJavaRuntimeName);
322         assertDoesNotThrow(SystemProperties::getJavaRuntimeVersion);
323         assertDoesNotThrow(SystemProperties::getJavaSecurityAuthLoginConfig);
324         assertDoesNotThrow(SystemProperties::getJavaSecurityManager);
325         assertDoesNotThrow(SystemProperties::getJavaSpecificationMaintenanceVersion);
326         assertDoesNotThrow(SystemProperties::getJavaSpecificationName);
327         assertDoesNotThrow(SystemProperties::getJavaSpecificationVendor);
328         assertDoesNotThrow(() -> SystemProperties.getJavaSpecificationVersion());
329         assertDoesNotThrow(SystemProperties::getJavaSystemClassLoader);
330         assertDoesNotThrow(SystemProperties::getJavaTimeZoneDefaultZoneRulesProvider);
331         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonExceptionHandler);
332         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonMaximumSpares);
333         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonParallelism);
334         assertDoesNotThrow(SystemProperties::getJavaUtilConcurrentForkJoinPoolCommonThreadFactory);
335         assertDoesNotThrow(SystemProperties::getJavaUtilCurrencyData);
336         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigClass);
337         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingConfigFile);
338         assertDoesNotThrow(SystemProperties::getJavaUtilLoggingSimpleFormatterFormat);
339         assertDoesNotThrow(SystemProperties::getJavaUtilPrefsPreferencesFactory);
340         assertDoesNotThrow(SystemProperties::getJavaUtilPropertyResourceBundleEncoding);
341         assertDoesNotThrow(SystemProperties::getJavaVendor);
342         assertDoesNotThrow(SystemProperties::getJavaVendorUrl);
343         assertDoesNotThrow(SystemProperties::getJavaVendorVersion);
344         assertDoesNotThrow(SystemProperties::getJavaVersion);
345         assertDoesNotThrow(SystemProperties::getJavaVersionDate);
346         assertDoesNotThrow(SystemProperties::getJavaVmInfo);
347         assertDoesNotThrow(SystemProperties::getJavaVmName);
348         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationName);
349         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVendor);
350         assertDoesNotThrow(SystemProperties::getJavaVmSpecificationVersion);
351         assertDoesNotThrow(SystemProperties::getJavaVmVendor);
352         assertDoesNotThrow(SystemProperties::getJavaVmVersion);
353         assertDoesNotThrow(SystemProperties::getJavaxAccessibilityAssistiveTechnologies);
354         assertDoesNotThrow(SystemProperties::getJavaXmlConfigFile);
355         assertDoesNotThrow(SystemProperties::getJavaxNetSslSessionCacheSize);
356         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledCipherSuites);
357         assertDoesNotThrow(SystemProperties::getJavaxRmiSslClientEnabledProtocols);
358         assertDoesNotThrow(SystemProperties::getJavaxSecurityAuthUseSubjectCredsOnly);
359         assertDoesNotThrow(SystemProperties::getJavaxSmartCardIoTerminalFactoryDefaultType);
360         assertDoesNotThrow(SystemProperties::getJdbcDrivers);
361         assertDoesNotThrow(SystemProperties::getJdkHttpAuthProxyingDisabledSchemes);
362         assertDoesNotThrow(SystemProperties::getJdkHttpAuthTunnelingDisabledSchemes);
363         assertDoesNotThrow(SystemProperties::getJdkHttpClientAllowRestrictedHeaders);
364         assertDoesNotThrow(SystemProperties::getJdkHttpClientAuthRetryLimit);
365         assertDoesNotThrow(SystemProperties::getJdkHttpClientBufSize);
366         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionPoolSize);
367         assertDoesNotThrow(SystemProperties::getJdkHttpClientConnectionWindowSize);
368         assertDoesNotThrow(SystemProperties::getJdkHttpClientDisableRetryConnect);
369         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnableAllMethodRetry);
370         assertDoesNotThrow(SystemProperties::getJdkHttpClientEnablePush);
371         assertDoesNotThrow(SystemProperties::getJdkHttpClientHpackMaxHeaderTableSize);
372         assertDoesNotThrow(SystemProperties::getJdkHttpClientHttpClientLog);
373         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeout);
374         assertDoesNotThrow(SystemProperties::getJdkHttpClientKeepAliveTimeoutH2);
375         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxFrameSize);
376         assertDoesNotThrow(SystemProperties::getJdkHttpClientMaxStreams);
377         assertDoesNotThrow(SystemProperties::getJdkHttpClientReceiveBufferSize);
378         assertDoesNotThrow(SystemProperties::getJdkHttpClientRedirectsRetryLimit);
379         assertDoesNotThrow(SystemProperties::getJdkHttpClientSendBufferSize);
380         assertDoesNotThrow(SystemProperties::getJdkHttpClientWebSocketWriteBufferSize);
381         assertDoesNotThrow(SystemProperties::getJdkHttpClientWindowSize);
382         assertDoesNotThrow(SystemProperties::getJdkHttpServerMaxConnections);
383         assertDoesNotThrow(SystemProperties::getJdkHttpsNegotiateCbt);
384         assertDoesNotThrow(SystemProperties::getJdkIncludeInExceptions);
385         assertDoesNotThrow(SystemProperties::getJdkInternalHttpClientDisableHostNameVerification);
386         assertDoesNotThrow(SystemProperties::getJdkIoPermissionsUseCanonicalPath);
387         assertDoesNotThrow(SystemProperties::getJdkJndiLdapObjectFactoriesFilter);
388         assertDoesNotThrow(SystemProperties::getJdkJndiObjectFactoriesFilter);
389         assertDoesNotThrow(SystemProperties::getJdkJndiRmiObjectFactoriesFilter);
390         assertDoesNotThrow(SystemProperties::getJdkModuleMain);
391         assertDoesNotThrow(SystemProperties::getJdkModuleMainClass);
392         assertDoesNotThrow(SystemProperties::getJdkModulePath);
393         assertDoesNotThrow(SystemProperties::getJdkModuleUpgradePath);
394         assertDoesNotThrow(SystemProperties::getJdkNetUnixDomainTmpDir);
395         assertDoesNotThrow(SystemProperties::getJdkNetUrlClassPathShowIgnoredClassPathEntries);
396         assertDoesNotThrow(SystemProperties::getJdkSerialFilter);
397         assertDoesNotThrow(SystemProperties::getJdkSerialFilterFactory);
398         assertDoesNotThrow(SystemProperties::getJdkTlsClientSignatureSchemes);
399         assertDoesNotThrow(SystemProperties::getJdkTlsNamedGroups);
400         assertDoesNotThrow(SystemProperties::getJdkTlsServerSignatureSchemes);
401         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerMaxPoolSize);
402         assertDoesNotThrow(SystemProperties::getJdkVirtualThreadSchedulerParallelism);
403         assertDoesNotThrow(SystemProperties::getJdkXmlCdataChunkSize);
404         assertDoesNotThrow(SystemProperties::getJdkXmlDtdSupport);
405         assertDoesNotThrow(SystemProperties::getJdkXmlElementAttributeLimit);
406         assertDoesNotThrow(SystemProperties::getJdkXmlEnableExtensionFunctions);
407         assertDoesNotThrow(SystemProperties::getJdkXmlEntityExpansionLimit);
408         assertDoesNotThrow(SystemProperties::getJdkXmlEntityReplacementLimit);
409         assertDoesNotThrow(SystemProperties::getJdkXmlIsStandalone);
410         assertDoesNotThrow(SystemProperties::getJdkXmlJdkCatalogResolve);
411         assertDoesNotThrow(SystemProperties::getJdkXmlMaxElementDepth);
412         assertDoesNotThrow(SystemProperties::getJdkXmlMaxGeneralEntitySizeLimit);
413         assertDoesNotThrow(SystemProperties::getJdkXmlMaxOccurLimit);
414         assertDoesNotThrow(SystemProperties::getJdkXmlMaxParameterEntitySizeLimit);
415         assertDoesNotThrow(SystemProperties::getJdkXmlMaxXmlNameLimit);
416         assertDoesNotThrow(SystemProperties::getJdkXmlOverrideDefaultParser);
417         assertDoesNotThrow(SystemProperties::getJdkXmlResetSymbolTable);
418         assertDoesNotThrow(SystemProperties::getJdkXmlTotalEntitySizeLimit);
419         assertDoesNotThrow(SystemProperties::getJdkXmlXsltcIsStandalone);
420         assertDoesNotThrow(() -> SystemProperties.getLineSeparator());
421         assertDoesNotThrow(SystemProperties::getNativeEncoding);
422         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheNegativeTtl);
423         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheStaleTtl);
424         assertDoesNotThrow(SystemProperties::getNetworkAddressCacheTtl);
425         assertDoesNotThrow(SystemProperties::getOrgJcpXmlDsigSecureValidation);
426         assertDoesNotThrow(SystemProperties::getOrgOpenJdkJavaUtilStreamTripwire);
427         assertDoesNotThrow(SystemProperties::getOsArch);
428         assertDoesNotThrow(SystemProperties::getOsName);
429         assertDoesNotThrow(SystemProperties::getOsVersion);
430         assertDoesNotThrow(SystemProperties::getPathSeparator);
431         assertDoesNotThrow(SystemProperties::getSocksProxyHost);
432         assertDoesNotThrow(SystemProperties::getSocksProxyPort);
433         assertDoesNotThrow(SystemProperties::getSocksProxyVersion);
434         assertDoesNotThrow(SystemProperties::getStdErrEncoding);
435         assertDoesNotThrow(SystemProperties::getStdOutEncoding);
436         assertDoesNotThrow(SystemProperties::getSunNetHttpServerDrainAmount);
437         assertDoesNotThrow(SystemProperties::getSunNetHttpServerIdleInterval);
438         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxIdleConnections);
439         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqHeaders);
440         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxReqTime);
441         assertDoesNotThrow(SystemProperties::getSunNetHttpServerMaxRspTime);
442         assertDoesNotThrow(SystemProperties::getSunNetHttpServerNoDelay);
443         assertDoesNotThrow(SystemProperties::getSunSecurityKrb5Principal);
444         assertDoesNotThrow(SystemProperties::getUserCountry);
445         assertDoesNotThrow(SystemProperties::getUserDir);
446         assertDoesNotThrow(SystemProperties::getUserExtensions);
447         assertDoesNotThrow(SystemProperties::getUserHome);
448         assertDoesNotThrow(SystemProperties::getUserLanguage);
449         assertDoesNotThrow(() -> SystemProperties.getUserName());
450         assertDoesNotThrow(SystemProperties::getUserRegion);
451         assertDoesNotThrow(SystemProperties::getUserScript);
452         assertDoesNotThrow(SystemProperties::getUserTimezone);
453         assertDoesNotThrow(SystemProperties::getUserVariant);
454     }
455 
456     @Test
457     public void testGetFileEncoding() {
458         basicKeyCheck(SystemProperties.getFileEncoding());
459     }
460 
461     @Test
462     public void testGetFileSeparator() {
463         assertNotNull(SystemProperties.getFileSeparator());
464     }
465 
466     @Test
467     public void testGetInt() {
468         final String key = RandomStringUtils.random(10);
469         final String absentKey = RandomStringUtils.random(10);
470         assertNull(System.getProperty(absentKey));
471         try {
472             System.setProperty(key, Integer.toString(Integer.MAX_VALUE));
473             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(key, () -> 0));
474             assertEquals(Integer.MAX_VALUE, SystemProperties.getInt(absentKey, () -> Integer.MAX_VALUE));
475             assertEquals(0, SystemProperties.getInt(absentKey, () -> 0));
476             assertEquals(0, SystemProperties.getInt(absentKey, null));
477         } finally {
478             System.clearProperty(key);
479         }
480     }
481 
482     @Test
483     public void testGetJavaAwtFonts() {
484         assertNull(SystemProperties.getJavaAwtFonts());
485     }
486 
487     @Test
488     public void testGetJavaAwtGraphicsenv() {
489         assertDoesNotThrow(SystemProperties::getJavaAwtGraphicsenv);
490     }
491 
492     @Test
493     public void testGetJavaAwtHeadless() {
494         assertNull(SystemProperties.getJavaAwtHeadless());
495     }
496 
497     @Test
498     public void testGetJavaAwtPrinterjob() {
499         assertDoesNotThrow(SystemProperties::getJavaAwtPrinterjob);
500     }
501 
502     @Test
503     public void testGetJavaClassPath() {
504         assertNotNull(SystemProperties.getJavaClassPath());
505     }
506 
507     @Test
508     public void testGetJavaClassVersion() {
509         assertNotNull(SystemProperties.getJavaClassVersion());
510     }
511 
512     @Test
513     public void testGetJavaCompiler() {
514         if (SystemUtils.IS_JAVA_14) {
515             // Not in Java 11
516             assertNotNull(SystemProperties.getJavaCompiler());
517         }
518     }
519 
520     @Test
521     public void testGetJavaEndorsedDirs() {
522         if (isJava11OrGreater()) {
523             // Not in Java 11
524             assertNull(SystemProperties.getJavaEndorsedDirs());
525         } else {
526             assertNotNull(SystemProperties.getJavaExtDirs());
527         }
528     }
529 
530     @Test
531     public void testGetJavaExtDirs() {
532         if (isJava11OrGreater()) {
533             // Not in Java 11
534             assertNull(SystemProperties.getJavaExtDirs());
535         } else {
536             assertNotNull(SystemProperties.getJavaExtDirs());
537         }
538     }
539 
540     @Test
541     public void testGetJavaHome() {
542         assertNotNull(SystemProperties.getJavaHome());
543     }
544 
545     @Test
546     public void testGetJavaIoTmpdir() {
547         assertNotNull(SystemProperties.getJavaIoTmpdir());
548     }
549 
550     @Test
551     public void testGetJavaLibraryPath() {
552         assertNotNull(SystemProperties.getJavaLibraryPath());
553     }
554 
555     @Test
556     public void testGetJavaLocaleProviders() {
557         assumeTrue(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_9));
558         // default is null
559         assertNull(SystemProperties.getJavaLocaleProviders(), SystemProperties.getJavaVersion());
560     }
561 
562     @Test
563     public void testGetJavaRuntimeName() {
564         assertNotNull(SystemProperties.getJavaRuntimeName());
565     }
566 
567     @Test
568     public void testGetJavaRuntimeVersion() {
569         assertNotNull(SystemProperties.getJavaRuntimeVersion());
570     }
571 
572     @Test
573     public void testGetJavaSpecificationName() {
574         assertNotNull(SystemProperties.getJavaSpecificationName());
575     }
576 
577     @Test
578     public void testGetJavaSpecificationVendor() {
579         assertNotNull(SystemProperties.getJavaSpecificationVendor());
580     }
581 
582     @Test
583     public void testGetJavaSpecificationVersion() {
584         assertNotNull(SystemProperties.getJavaSpecificationVersion());
585     }
586 
587     @Test
588     public void testGetJavaSpecificationVersionSupplier() {
589         assertNotNull(SystemProperties.getJavaSpecificationVersion("99.0"));
590     }
591 
592     @Test
593     public void testGetJavaUtilPrefsPreferencesFactory() {
594         assertNull(SystemProperties.getJavaUtilPrefsPreferencesFactory());
595     }
596 
597     @Test
598     public void testGetJavaVendor() {
599         assertNotNull(SystemProperties.getJavaVendor());
600     }
601 
602     @Test
603     public void testGetJavaVendorUrl() {
604         assertNotNull(SystemProperties.getJavaVendorUrl());
605     }
606 
607     @Test
608     public void testGetJavaVersion() {
609         assertNotNull(SystemProperties.getJavaVersion());
610     }
611 
612     @Test
613     public void testGetJavaVmInfo() {
614         assertNotNull(SystemProperties.getJavaVmInfo());
615     }
616 
617     @Test
618     public void testGetJavaVmName() {
619         assertNotNull(SystemProperties.getJavaVmName());
620     }
621 
622     @Test
623     public void testGetJavaVmSpecificationName() {
624         assertNotNull(SystemProperties.getJavaVmSpecificationName());
625     }
626 
627     @Test
628     public void testGetJavaVmSpecificationVendor() {
629         assertNotNull(SystemProperties.getJavaVmSpecificationVendor());
630     }
631 
632     @Test
633     public void testGetJavaVmSpecificationVersion() {
634         assertNotNull(SystemProperties.getJavaVmSpecificationVersion());
635     }
636 
637     @Test
638     public void testGetJavaVmVendor() {
639         assertNotNull(SystemProperties.getJavaVmVendor());
640     }
641 
642     @Test
643     public void testGetJavaVmVersion() {
644         assertNotNull(SystemProperties.getJavaVmVersion());
645     }
646 
647     @Test
648     public void testGetLineSeparator() {
649         assertNotNull(SystemProperties.getLineSeparator());
650         assertNotNull(SystemProperties.getLineSeparator(null));
651         assertNotNull(SystemProperties.getLineSeparator(() -> ""));
652         assertNotNull(SystemProperties.getLineSeparator(() -> "\n"));
653         assertNotNull(SystemProperties.getLineSeparator(() -> null));
654         assertNotNull(SystemProperties.getLineSeparator(null));
655     }
656 
657     @Test
658     public void testGetLong() {
659         final String key = RandomStringUtils.random(10);
660         final String absentKey = RandomStringUtils.random(10);
661         assertNull(System.getProperty(absentKey));
662         try {
663             System.setProperty(key, Long.toString(Long.MAX_VALUE));
664             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(key, () -> 0));
665             assertEquals(Long.MAX_VALUE, SystemProperties.getLong(absentKey, () -> Long.MAX_VALUE));
666             assertEquals(0, SystemProperties.getLong(absentKey, () -> 0));
667             assertEquals(0, SystemProperties.getLong(absentKey, null));
668         } finally {
669             System.clearProperty(key);
670         }
671     }
672 
673     @Test
674     public void testGetOsArch() {
675         assertNotNull(SystemProperties.getOsArch());
676     }
677 
678     @Test
679     public void testGetOsName() {
680         assertNotNull(SystemProperties.getOsName());
681     }
682 
683     @Test
684     public void testGetOsVersion() {
685         assertNotNull(SystemProperties.getOsVersion());
686     }
687 
688     @Test
689     public void testGetPathSeparator() {
690         assertNotNull(SystemProperties.getPathSeparator());
691     }
692 
693     @Test
694     public void testGetUserCountry() {
695         assertDoesNotThrow(SystemProperties::getUserCountry);
696     }
697 
698     @Test
699     public void testGetUserDir() {
700         assertNotNull(SystemProperties.getUserDir());
701     }
702 
703     @Test
704     public void testGetUserHome() {
705         assertNotNull(SystemProperties.getUserHome());
706     }
707 
708     @Test
709     public void testGetUserLanguage() {
710         assertNotNull(SystemProperties.getUserLanguage());
711     }
712 
713     @Test
714     public void testGetUserName() {
715         assertNotNull(SystemProperties.getUserName());
716         assertNotNull(SystemProperties.getUserName(""));
717         assertNotNull(SystemProperties.getUserName("User"));
718         assertNotNull(SystemProperties.getUserName(null));
719     }
720 
721     @Test
722     public void testGetUserTimezone() {
723         assertDoesNotThrow(SystemProperties::getUserTimezone);
724     }
725 
726 }