/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, 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.test.cluster.web; import org.jboss.cache.config.Configuration; import org.jboss.cache.config.Configuration.CacheMode; import org.jboss.cache.config.ConfigurationRegistry; /** * Utility that analyzes the set of available cache configurations in * a ConfigurationRegistry and adds alternatives with different CacheMode * and buddy replication settings * * @author Brian Stansberry */ public class TestConfigurationAdder { public static final String DEFAULT_STD_SESSION_CFG = "standard-session-cache"; public static final String DEFAULT_FIELD_SESSION_CFG = "field-granularity-session-cache"; private ConfigurationRegistry configurationRegistry; private String standardSessionConfig = DEFAULT_STD_SESSION_CFG; private String fieldSessionConfig = DEFAULT_FIELD_SESSION_CFG; private boolean addAlternateCacheMode; private boolean addAlternateBuddyReplication; public void start() throws Exception { createAlternates(standardSessionConfig, configurationRegistry.getConfiguration(standardSessionConfig)); createAlternates(fieldSessionConfig, configurationRegistry.getConfiguration(fieldSessionConfig)); } private void createAlternates(String stdName, Configuration std) throws Exception { CacheMode altCacheMode = (std.getCacheMode() == CacheMode.REPL_ASYNC) ? CacheMode.REPL_SYNC : CacheMode.REPL_ASYNC; String altCacheModeTag = (altCacheMode == CacheMode.REPL_ASYNC ? "async" : "sync"); boolean brEnabled = !std.getBuddyReplicationConfig().isEnabled(); String altBrTag = (brEnabled ? "br-enabled" : "br-disabled"); String altModeName = altCacheModeTag + "-" + stdName; if (configurationRegistry.getConfigurationNames().contains(altModeName) == false) { Configuration altMode = std.clone(); altMode.setCacheMode(altCacheMode); altMode.setClusterName(altModeName); configurationRegistry.registerConfiguration(altModeName, altMode); } String altBrName = altBrTag + "-" + stdName; if (configurationRegistry.getConfigurationNames().contains(altBrName) == false) { Configuration altBr = std.clone(); altBr.getBuddyReplicationConfig().setEnabled(brEnabled); altBr.setClusterName(altBrName); configurationRegistry.registerConfiguration(altBrName, altBr); } String altCombinedName = altBrTag + "-" + altCacheModeTag + "-" + stdName; if (configurationRegistry.getConfigurationNames().contains(altCombinedName) == false) { Configuration altCombined = std.clone(); altCombined.setCacheMode(altCacheMode); altCombined.getBuddyReplicationConfig().setEnabled(brEnabled); altCombined.setClusterName(altCombinedName); configurationRegistry.registerConfiguration(altCombinedName, altCombined); } } public ConfigurationRegistry getConfigurationRegistry() { return configurationRegistry; } public void setConfigurationRegistry(ConfigurationRegistry configurationRegistry) { this.configurationRegistry = configurationRegistry; } public String getStandardSessionConfig() { return standardSessionConfig; } public void setStandardSessionConfig(String standardSessionConfig) { this.standardSessionConfig = standardSessionConfig; } public String getFieldSessionConfig() { return fieldSessionConfig; } public void setFieldSessionConfig(String fieldSessionConfig) { this.fieldSessionConfig = fieldSessionConfig; } public boolean isAddAlternateCacheMode() { return addAlternateCacheMode; } public void setAddAlternateCacheMode(boolean addAlternateCacheMode) { this.addAlternateCacheMode = addAlternateCacheMode; } public boolean isAddAlternateBuddyReplication() { return addAlternateBuddyReplication; } public void setAddAlternateBuddyReplication(boolean addAlternateBuddyReplication) { this.addAlternateBuddyReplication = addAlternateBuddyReplication; } }