/* * Copyright (c) 2013-2015 Chris Newland. * Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD * Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki */ package org.adoptopenjdk.jitwatch.test; import static org.junit.Assert.*; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.adoptopenjdk.jitwatch.core.JITWatchConfig; import org.adoptopenjdk.jitwatch.core.JITWatchConstants; import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestJITWatchConfig { private String testConfigFilename; @Before public void setUp() throws IOException { testConfigFilename = File.createTempFile("test", ".properties").getAbsolutePath(); } @After public void tearDown() { if (testConfigFilename != null) { File configFile = new File(testConfigFilename); if (configFile.exists() && configFile.isFile()) { configFile.delete(); } } } @Test public void testConfigOnlyBuiltInProfiles() { JITWatchConfig config = new JITWatchConfig(new File(testConfigFilename)); Set<String> configNames = config.getProfileNames(); assertEquals(2, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); List<String> sourcesList = config.getSourceLocations(); assertEquals(0, sourcesList.size()); } @Test public void testEmptyConfigSaveReload() { JITWatchConfig config = new JITWatchConfig(new File(testConfigFilename)); String foo = "foo"; List<String> sourcesList = new ArrayList<String>(); sourcesList.add(foo); config.setSourceLocations(sourcesList); config.marshalConfigToProperties(); config.savePropertiesToFile(); config = new JITWatchConfig(new File(testConfigFilename)); List<String> retrievedSourcesList = config.getSourceLocations(); assertEquals(1, retrievedSourcesList.size()); assertTrue(retrievedSourcesList.contains(foo)); Set<String> configNames = config.getProfileNames(); assertEquals(2, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); config.setProfileName("MISSING"); List<String> retrievedSourcesList2 = config.getSourceLocations(); assertEquals(0, retrievedSourcesList2.size()); assertFalse(retrievedSourcesList2.contains(foo)); } @Test public void testSwitchBetweenDefaultAndUserProfiles() { JITWatchConfig config = new JITWatchConfig(new File(testConfigFilename)); String foo = "foo"; List<String> sourcesListFoo = new ArrayList<String>(); sourcesListFoo.add(foo); config.setSourceLocations(sourcesListFoo); config.marshalConfigToProperties(); config.savePropertiesToFile(); config = new JITWatchConfig(new File(testConfigFilename)); List<String> retrievedSourcesList = config.getSourceLocations(); assertEquals(1, retrievedSourcesList.size()); assertTrue(retrievedSourcesList.contains(foo)); Set<String> configNames = config.getProfileNames(); assertEquals(2, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); String secondProfileName = "Spaceship"; config.setProfileName(secondProfileName); List<String> retrievedSourcesList2 = config.getSourceLocations(); assertEquals(0, retrievedSourcesList2.size()); String bar = "bar"; List<String> sourcesListBar = new ArrayList<String>(); sourcesListBar.add(bar); config.setSourceLocations(sourcesListBar); config.saveConfig(); assertEquals(secondProfileName, config.getProfileName()); configNames = config.getProfileNames(); assertEquals(3, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); assertTrue(configNames.contains(secondProfileName)); config.setProfileName(JITWatchConstants.S_PROFILE_DEFAULT); assertEquals(JITWatchConstants.S_PROFILE_DEFAULT, config.getProfileName()); retrievedSourcesList = config.getSourceLocations(); assertEquals(1, retrievedSourcesList.size()); assertTrue(retrievedSourcesList.contains(foo)); config.setProfileName(secondProfileName); retrievedSourcesList2 = config.getSourceLocations(); assertEquals(1, retrievedSourcesList2.size()); assertTrue(retrievedSourcesList2.contains(bar)); } @Test public void testMakeCustomProfileThenDeleteIt() { JITWatchConfig config = new JITWatchConfig(new File(testConfigFilename)); String foo = "foo"; List<String> sourcesListFoo = new ArrayList<String>(); sourcesListFoo.add(foo); config.setSourceLocations(sourcesListFoo); config.marshalConfigToProperties(); config.savePropertiesToFile(); config = new JITWatchConfig(new File(testConfigFilename)); List<String> retrievedSourcesList = config.getSourceLocations(); assertEquals(1, retrievedSourcesList.size()); assertTrue(retrievedSourcesList.contains(foo)); Set<String> configNames = config.getProfileNames(); assertEquals(2, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); String customProfileName = "Spaceship"; config.setProfileName(customProfileName); List<String> retrievedSourcesList2 = config.getSourceLocations(); assertEquals(0, retrievedSourcesList2.size()); String bar = "bar"; List<String> sourcesListBar = new ArrayList<String>(); sourcesListBar.add(bar); config.setSourceLocations(sourcesListBar); config.saveConfig(); assertEquals(customProfileName, config.getProfileName()); configNames = config.getProfileNames(); assertEquals(3, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); assertTrue(configNames.contains(customProfileName)); config.deleteProfile(customProfileName); configNames = config.getProfileNames(); assertEquals(2, configNames.size()); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_DEFAULT)); assertTrue(configNames.contains(JITWatchConstants.S_PROFILE_SANDBOX)); assertFalse(configNames.contains(customProfileName)); assertEquals(JITWatchConstants.S_PROFILE_DEFAULT, config.getProfileName()); retrievedSourcesList = config.getSourceLocations(); assertEquals(1, retrievedSourcesList.size()); assertTrue(retrievedSourcesList.contains(foo)); } }