package lcmc.common.domain.util;
import java.util.Map;
import javax.swing.JCheckBox;
import lcmc.AppContext;
import lcmc.common.domain.UserConfig;
import lcmc.common.ui.main.MainPresenter;
import lcmc.common.ui.main.ProgressIndicator;
import lcmc.host.domain.Host;
import lcmc.testutils.IntegrationTestLauncher;
import lcmc.testutils.annotation.type.GuiTest;
import lcmc.testutils.annotation.type.IntegrationTest;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Jsr330ScopeMetadataResolver;
import static org.junit.Assert.*;
@Category(IntegrationTest.class)
public final class ToolsITest {
private IntegrationTestLauncher testSuite;
private MainPresenter mainPresenter;
private ProgressIndicator progressIndicator;
private UserConfig userConfig;
@Before
public void setUp() {
testSuite = AppContext.getBean(IntegrationTestLauncher.class);
testSuite.initTestCluster();
userConfig = AppContext.getBean(UserConfig.class);
mainPresenter = AppContext.getBean(MainPresenter.class);
progressIndicator = AppContext.getBean(ProgressIndicator.class);
}
@Test
public void testIsIp() {
for (final Host host : testSuite.getHosts()) {
assertTrue(Tools.isIp(host.getIpAddress()));
assertFalse(Tools.isIp(host.getHostname()));
}
}
@Test
public void testIsLocalIp() {
for (final Host host : testSuite.getHosts()) {
assertFalse(Tools.isLocalIp(host.getIpAddress()));
}
}
@Test
public void testGetHostCheckBoxes() {
for (final Host host : testSuite.getHosts()) {
final Map<Host, JCheckBox> comps = Tools.getHostCheckBoxes(host.getCluster());
assertNotNull(comps);
assertTrue(comps.size() == testSuite.getHosts().size());
assertTrue(comps.containsKey(host));
}
}
@Test
public void testVersionBeforePacemaker() {
for (final Host h : testSuite.getHosts()) {
Tools.versionBeforePacemaker(h);
}
}
@Test
public void helperFieShouldBeLoaded() {
final String testFile = "/help-progs/lcmc-gui-helper";
assertTrue(Tools.getFile(testFile).indexOf("#!") == 0);
}
@Test
public void nullFileShouldReturnNull() {
assertNull(Tools.getFile(null));
}
@Test
public void nonExistingFileShouldReturnNull() {
assertNull(Tools.getFile("not_existing_file"));
}
@Test
@Category(GuiTest.class)
public void testLoadFile() {
assertNull(Tools.loadFile(mainPresenter, "JUNIT_TEST_FILE_CLICK_OK", false));
final String testFile = "/tmp/lcmc-test-file";
userConfig.saveConfig(testFile, false);
final String file = Tools.loadFile(mainPresenter, testFile, false);
assertNotNull(file);
assertFalse("".equals(file));
}
@Test
@Category(GuiTest.class)
public void testStartProgressIndicator() {
for (int i = 0; i < 10; i++) {
progressIndicator.startProgressIndicator(null);
progressIndicator.startProgressIndicator("test");
progressIndicator.startProgressIndicator("test2");
progressIndicator.startProgressIndicator("test3");
progressIndicator.startProgressIndicator(null, "test4");
progressIndicator.startProgressIndicator("name", "test4");
progressIndicator.startProgressIndicator("name2", "test4");
progressIndicator.startProgressIndicator("name2", null);
progressIndicator.startProgressIndicator(null, null);
progressIndicator.stopProgressIndicator(null, null);
progressIndicator.stopProgressIndicator("name2", null);
progressIndicator.stopProgressIndicator("name2", "test4");
progressIndicator.stopProgressIndicator("name", "test4");
progressIndicator.stopProgressIndicator(null, "test4");
progressIndicator.stopProgressIndicator("test3");
progressIndicator.stopProgressIndicator("test2");
progressIndicator.stopProgressIndicator("test");
progressIndicator.stopProgressIndicator(null);
}
}
@Test
@Category(GuiTest.class)
public void testProgressIndicatorFailed() {
progressIndicator.progressIndicatorFailed(null, "fail3");
progressIndicator.progressIndicatorFailed("name", "fail2");
progressIndicator.progressIndicatorFailed("name", null);
progressIndicator.progressIndicatorFailed("fail1");
progressIndicator.progressIndicatorFailed(null);
progressIndicator.progressIndicatorFailed("fail two seconds", 2);
}
@Test
@Category(GuiTest.class)
public void testIsLinux() {
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
assertFalse(Tools.isLinux());
}
if (System.getProperty("os.name").toLowerCase().contains("linux")) {
assertTrue(Tools.isLinux());
}
}
@Test
@Category(GuiTest.class)
public void testIsWindows() {
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
assertTrue(Tools.isWindows());
}
if (System.getProperty("os.name").toLowerCase().contains("linux")) {
assertFalse(Tools.isWindows());
}
}
@Test
@Category(GuiTest.class)
public void testGetUnixPath() {
assertEquals("/bin", Tools.getUnixPath("/bin"));
if (Tools.isWindows()) {
assertEquals("/bin/dir/file", Tools.getUnixPath("d:\\bin\\dir\\file"));
}
}
@Configuration
@ComponentScan(basePackages = "lcmc", scopeResolver = Jsr330ScopeMetadataResolver.class)
static class TestConfig {
}
}