/* * * JBoss, Home of Professional Open Source. * Copyright 2014, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. * / */ package org.jboss.as.test.integration.domain.suites; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import org.jboss.as.test.integration.domain.management.cli.BasicOpsTestCase; import org.jboss.as.test.integration.domain.management.cli.CliCapabilityCompletionTestCase; import org.jboss.as.test.integration.domain.management.cli.CliCompletionTestCase; import org.jboss.as.test.integration.domain.management.cli.CloneProfileTestCase; import org.jboss.as.test.integration.domain.management.cli.DeployAllDomainTestCase; import org.jboss.as.test.integration.domain.management.cli.HierarchicalCompositionTestCase; import org.jboss.as.test.integration.domain.management.cli.UndeployTestCase; import org.jboss.as.test.integration.domain.management.cli.UndeployWildcardDomainTestCase; import org.jboss.as.test.integration.domain.management.cli.WildCardReadsTestCase; import org.jboss.as.test.integration.domain.management.util.DomainTestSupport; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Suite; /** * * @author Dominik Pospisil <dpospisi@redhat.com> */ @RunWith(Suite.class) @Suite.SuiteClasses({ BasicOpsTestCase.class, CliCapabilityCompletionTestCase.class, CliCompletionTestCase.class, CloneProfileTestCase.class, UndeployWildcardDomainTestCase.class, UndeployTestCase.class, HierarchicalCompositionTestCase.class, WildCardReadsTestCase.class, DeployAllDomainTestCase.class }) public class CLITestSuite { public static final Map<String, String[]> hostServers = new HashMap<String, String[]>(); public static final Map<String, String> hostAddresses = new HashMap<String, String>(); public static final Map<String, String[]> serverGroups = new HashMap<String, String[]>(); public static final Map<String, Integer> portOffsets = new HashMap<String, Integer>(); public static final Map<String, String[]> serverProfiles = new HashMap<String, String[]>(); public static final Map<String, Boolean> serverStatus = new HashMap<String, Boolean>(); private static boolean initializedLocally = false; private static volatile DomainTestSupport support; // This can only be called from tests as part of this suite public static synchronized DomainTestSupport createSupport(final String testName) { if(support == null) { start(testName); } return support; } // This can only be called from tests as part of this suite public static synchronized void stopSupport() { if(! initializedLocally) { stop(); } } private static synchronized void start(final String name) { try { support = DomainTestSupport.createAndStartDefaultSupport(name); } catch (Exception e) { throw new RuntimeException(e); } } private static synchronized void stop() { if(support != null) { support.stop(); support = null; } } @BeforeClass public static void initSuite() throws Exception { initializedLocally = true; start(CLITestSuite.class.getSimpleName()); hostServers.put("master", new String[]{"main-one", "main-two", "other-one"}); hostServers.put("slave", new String[]{"main-three", "main-four", "other-two"}); hostAddresses.put("master", DomainTestSupport.masterAddress); hostAddresses.put("slave", DomainTestSupport.slaveAddress); serverGroups.put("main-server-group", new String[]{"main-one", "main-two", "main-three", "main-four"}); serverGroups.put("other-server-group", new String[]{"other-one", "other-two"}); serverProfiles.put("default", new String[]{"main-server-group"}); serverProfiles.put("ha", new String[]{"other-server-group"}); portOffsets.put("main-one", 0); portOffsets.put("main-two", 150); portOffsets.put("other-one", 250); portOffsets.put("main-three", 350); portOffsets.put("main-four", 450); portOffsets.put("other-two", 550); serverStatus.put("main-one", true); serverStatus.put("main-two", false); serverStatus.put("main-three", true); serverStatus.put("main-four", false); serverStatus.put("other-one", false); serverStatus.put("other-two", true); } @AfterClass public static void tearDownSuite() { stop(); } public static void addServer(String serverName, String hostName, String groupName, String profileName, int portOffset, boolean status) { LinkedList<String> hservers = new LinkedList<String>(Arrays.asList(hostServers.get(hostName))); hservers.add(serverName); hostServers.put(hostName, hservers.toArray(new String[hservers.size()])); LinkedList<String> gservers = new LinkedList<String>(); if (serverGroups.containsKey(groupName)) { gservers.addAll(Arrays.asList(serverGroups.get(groupName))); } gservers.add(serverName); serverGroups.put(groupName, gservers.toArray(new String[gservers.size()])); LinkedList<String> pgroups = new LinkedList<String>(); if (serverProfiles.containsKey(profileName)) { pgroups.addAll(Arrays.asList(serverProfiles.get(profileName))); } pgroups.add(groupName); serverProfiles.put(profileName, pgroups.toArray(new String[pgroups.size()])); portOffsets.put(serverName, portOffset); serverStatus.put(serverName, status); } public static String getServerHost(String serverName) { for(Map.Entry<String,String[]> entry : hostServers.entrySet()) { if (Arrays.asList(entry.getValue()).contains(serverName)) { return entry.getKey(); } } return null; } }