/******************************************************************************* * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2019) * * contact.vitam@culture.gouv.fr * * This software is a computer program whose purpose is to implement a digital archiving back-office system managing * high volumetry securely and efficiently. * * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as * circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". * * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the * successive licensors have only limited liability. * * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or * developing or reproducing the software by the user in light of its specific status of free software, that may mean * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data * to be ensured and, more generally, to use and operate it in the same conditions as regards security. * * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you * accept its terms. *******************************************************************************/ package fr.gouv.vitam.common; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; import fr.gouv.vitam.common.SystemPropertyUtil.Platform; public class SystemPropertyUtilTest { private static final String OS_NAME = "os.name"; private static final String OTHER = "other"; private static final String KEY_TEST = "keyTest"; private static final String KEY_ITEST = "keyTestI"; private static final String KEY_LTEST = "keyTestL"; private static final String KEY_BTEST = "keyTestB"; private static final String KEY_VALUE = "KeyValue"; private static final int KEY_IVALUE = 1; private static final long KEY_LVALUE = 2L; private static final boolean KEY_BVALUE = true; @Test public final void testSystemPropertyDefault() { SystemPropertyUtil.refresh(); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); SystemPropertyUtil.set(SystemPropertyUtil.FILE_ENCODING, "UTF-16"); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); SystemPropertyUtil.set(SystemPropertyUtil.FILE_ENCODING, CharsetUtils.UTF_8); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); SystemPropertyUtil.clear(SystemPropertyUtil.FILE_ENCODING); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); SystemPropertyUtil.refresh(); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); final String config = VitamConfiguration.getVitamConfigFolder(); assertNotNull(config); final String data = VitamConfiguration.getVitamDataFolder(); assertNotNull(data); final String log = VitamConfiguration.getVitamLogFolder(); assertNotNull(log); final String tmp = VitamConfiguration.getVitamTmpFolder(); assertNotNull(tmp); SystemPropertyUtil.set(VitamConfiguration.VITAM_CONFIG_PROPERTY, KEY_VALUE); SystemPropertyUtil.set(VitamConfiguration.VITAM_DATA_PROPERTY, KEY_VALUE); SystemPropertyUtil.set(VitamConfiguration.VITAM_LOG_PROPERTY, KEY_VALUE); SystemPropertyUtil.set(VitamConfiguration.VITAM_TMP_PROPERTY, KEY_VALUE); VitamConfiguration.checkVitamConfiguration(); assertFalse(VitamConfiguration.getVitamConfigFolder().equals(config)); assertFalse(VitamConfiguration.getVitamDataFolder().equals(data)); assertFalse(VitamConfiguration.getVitamLogFolder().equals(log)); assertFalse(VitamConfiguration.getVitamTmpFolder().equals(tmp)); SystemPropertyUtil.set(VitamConfiguration.VITAM_CONFIG_PROPERTY, config); SystemPropertyUtil.set(VitamConfiguration.VITAM_DATA_PROPERTY, data); SystemPropertyUtil.set(VitamConfiguration.VITAM_LOG_PROPERTY, log); SystemPropertyUtil.set(VitamConfiguration.VITAM_TMP_PROPERTY, tmp); VitamConfiguration.checkVitamConfiguration(); assertTrue(VitamConfiguration.getVitamConfigFolder().equals(config)); assertTrue(VitamConfiguration.getVitamDataFolder().equals(data)); assertTrue(VitamConfiguration.getVitamLogFolder().equals(log)); assertTrue(VitamConfiguration.getVitamTmpFolder().equals(tmp)); } @Test public final void testSystemPropertyString() { SystemPropertyUtil.refresh(); assertTrue(SystemPropertyUtil.isFileEncodingCorrect()); SystemPropertyUtil.set(KEY_TEST, KEY_VALUE); assertTrue(SystemPropertyUtil.contains(KEY_TEST)); assertEquals(KEY_VALUE, SystemPropertyUtil.get(KEY_TEST)); assertEquals(KEY_VALUE, SystemPropertyUtil.get(KEY_TEST, OTHER)); assertEquals(KEY_VALUE, SystemPropertyUtil.getAndSet(KEY_TEST, OTHER)); assertEquals(OTHER, SystemPropertyUtil.getAndSet(KEY_TEST + "2", OTHER)); assertEquals(OTHER, SystemPropertyUtil.set(KEY_TEST + "2", OTHER)); } @Test public final void testSystemPropertyBoolean() { SystemPropertyUtil.set(KEY_BTEST, KEY_BVALUE); assertTrue(SystemPropertyUtil.contains(KEY_BTEST)); assertEquals(Boolean.toString(KEY_BVALUE), SystemPropertyUtil.get(KEY_BTEST)); assertEquals(KEY_BVALUE, SystemPropertyUtil.get(KEY_BTEST, false)); assertEquals(KEY_BVALUE, SystemPropertyUtil.getAndSet(KEY_BTEST, false)); assertEquals(false, SystemPropertyUtil.getAndSet(KEY_BTEST + "2", false)); assertEquals(false, SystemPropertyUtil.set(KEY_BTEST + "2", false)); assertEquals(false, SystemPropertyUtil.get(KEY_BTEST + "3", false)); assertEquals(null, SystemPropertyUtil.set(KEY_BTEST + "3", "true")); assertEquals(true, SystemPropertyUtil.get(KEY_BTEST + "3", false)); assertEquals("true", SystemPropertyUtil.set(KEY_BTEST + "3", "yes")); assertEquals(true, SystemPropertyUtil.get(KEY_BTEST + "3", false)); assertEquals("yes", SystemPropertyUtil.set(KEY_BTEST + "3", "1")); assertEquals(true, SystemPropertyUtil.get(KEY_BTEST + "3", false)); assertEquals("1", SystemPropertyUtil.set(KEY_BTEST + "3", "yes2")); assertEquals(false, SystemPropertyUtil.get(KEY_BTEST + "3", false)); assertEquals("yes2", SystemPropertyUtil.set(KEY_BTEST + "3", "")); assertEquals(true, SystemPropertyUtil.get(KEY_BTEST + "3", false)); } @Test public final void testSystemPropertyInt() { SystemPropertyUtil.set(KEY_ITEST, KEY_IVALUE); assertTrue(SystemPropertyUtil.contains(KEY_ITEST)); assertEquals(Integer.toString(KEY_IVALUE), SystemPropertyUtil.get(KEY_ITEST)); assertEquals(KEY_IVALUE, SystemPropertyUtil.get(KEY_ITEST, 4)); assertEquals(KEY_IVALUE, SystemPropertyUtil.getAndSet(KEY_ITEST, 4)); assertEquals(4, SystemPropertyUtil.getAndSet(KEY_ITEST + "2", 4)); assertEquals(4, SystemPropertyUtil.set(KEY_ITEST + "2", 4)); assertEquals(5, SystemPropertyUtil.get(KEY_ITEST + "3", 5)); assertEquals(null, SystemPropertyUtil.set(KEY_ITEST + "3", "yes2")); assertEquals(6, SystemPropertyUtil.get(KEY_ITEST + "3", 6)); } @Test public final void testSystemPropertyLong() { SystemPropertyUtil.set(KEY_LTEST, KEY_LVALUE); assertTrue(SystemPropertyUtil.contains(KEY_LTEST)); assertEquals(Long.toString(KEY_LVALUE), SystemPropertyUtil.get(KEY_LTEST)); assertEquals(KEY_LVALUE, SystemPropertyUtil.get(KEY_LTEST, 3L)); assertEquals(KEY_LVALUE, SystemPropertyUtil.getAndSet(KEY_LTEST, 3L)); assertEquals(3L, SystemPropertyUtil.getAndSet(KEY_LTEST + "2", 3L)); assertEquals(3L, SystemPropertyUtil.set(KEY_LTEST + "2", 3L)); assertEquals(4L, SystemPropertyUtil.get(KEY_LTEST + "3", 4L)); assertEquals(null, SystemPropertyUtil.set(KEY_LTEST + "3", "yes2")); assertEquals(5L, SystemPropertyUtil.get(KEY_LTEST + "3", 5L)); } @Test public final void testSystemPropertyDebug() { final AtomicBoolean bool = new AtomicBoolean(false); final OutputStream outputStream = new OutputStream() { @Override public void write(byte[] b, int off, int len) throws IOException { bool.set(true); } @Override public void write(byte[] b) throws IOException { bool.set(true); } @Override public void write(int arg0) throws IOException { bool.set(true); } }; final PrintStream out = new PrintStream(outputStream); SystemPropertyUtil.debug(out); assertTrue(bool.get()); } @Test public final void testSystemPropertyOs() { SystemPropertyUtil.get(OS_NAME); final Platform platform = SystemPropertyUtil.getOS(); switch (platform) { case MAC: assertTrue(SystemPropertyUtil.isMac()); assertFalse(SystemPropertyUtil.isWindows()); assertFalse(SystemPropertyUtil.isUnix()); assertFalse(SystemPropertyUtil.isSolaris()); break; case SOLARIS: assertFalse(SystemPropertyUtil.isMac()); assertFalse(SystemPropertyUtil.isWindows()); assertFalse(SystemPropertyUtil.isUnix()); assertTrue(SystemPropertyUtil.isSolaris()); break; case UNIX: assertFalse(SystemPropertyUtil.isMac()); assertFalse(SystemPropertyUtil.isWindows()); assertTrue(SystemPropertyUtil.isUnix()); assertFalse(SystemPropertyUtil.isSolaris()); break; case UNSUPPORTED: assertFalse(SystemPropertyUtil.isMac()); assertFalse(SystemPropertyUtil.isWindows()); assertFalse(SystemPropertyUtil.isUnix()); assertFalse(SystemPropertyUtil.isSolaris()); break; case WINDOWS: assertFalse(SystemPropertyUtil.isMac()); assertTrue(SystemPropertyUtil.isWindows()); assertFalse(SystemPropertyUtil.isUnix()); assertFalse(SystemPropertyUtil.isSolaris()); break; default: break; } } @Test public final void testSystemPropertyError() { try { SystemPropertyUtil.contains(null); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.get(null); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.get(null, KEY_IVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.get(null, KEY_BVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.get(null, KEY_LVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.getAndSet(null, KEY_VALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.getAndSet(null, KEY_BVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.getAndSet(null, KEY_IVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.getAndSet(null, KEY_LVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.set(null, KEY_VALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.set(null, KEY_BVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.set(null, KEY_IVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } try { SystemPropertyUtil.set(null, KEY_LVALUE); fail(ResourcesPublicUtilTest.SHOULD_RAIZED_AN_EXCEPTION); } catch (final IllegalArgumentException e) {// NOSONAR } } }