/*
* RHQ Management Platform
* Copyright (C) 2005-2014 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package org.rhq.modules.plugins.wildfly10.itest.nonpc;
import static org.rhq.modules.plugins.wildfly10.test.util.ASConnectionFactory.getDomainControllerASConnection;
import java.util.List;
import java.util.Map;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.modules.plugins.wildfly10.ConfigurationLoadDelegate;
import org.rhq.modules.plugins.wildfly10.ConfigurationWriteDelegate;
import org.rhq.modules.plugins.wildfly10.json.Address;
/**
* Tests related to configurations
*
* @author Heiko W. Rupp
*/
public class ConfigurationTest extends AbstractIntegrationTest {
@Override
@BeforeSuite
void loadPluginDescriptor() throws Exception {
super.loadPluginDescriptor();
}
// TODO: Re-enable if appropriate.
@Test(enabled = false)
public void readSocketBindings() throws Exception {
ConfigurationDefinition configDef = loadServiceDescriptor("SocketBindingGroupDomain");
Address a = new Address("socket-binding-group=standard-sockets");
ConfigurationLoadDelegate loadDelegate = new ConfigurationLoadDelegate(configDef,
getDomainControllerASConnection(), a);
Configuration conf = loadDelegate.loadResourceConfiguration();
assert conf != null : "Did not get a configuration back";
PropertySimple ps = conf.getSimple("default-interface");
assert ps != null : "No property 'default-interface' found";
String tmp = ps.getStringValue();
assert tmp != null;
assert tmp.equals("public");
PropertyList pl = conf.getList("*");
assert pl != null;
List<Property> listContent = pl.getList();
assert !listContent.isEmpty() : "List '*' has no elements";
assert listContent.get(0) instanceof PropertyMap : "List content is no map";
for (Property p : listContent) {
PropertyMap pm = (PropertyMap) p;
Map<String, Property> pmap = pm.getMap();
assert pmap.size() == 6;
PropertySimple name = (PropertySimple) pmap.get("name");
assert name != null;
assert name.getStringValue() != null;
if ("http".equals(name.getStringValue())) {
PropertySimple portProp = (PropertySimple) pmap.get("port");
assert portProp != null;
assert portProp.getStringValue() != null;
assert "8080".equals(portProp.getStringValue()) : "Http port property was not 8080, but "
+ portProp.getStringValue();
}
}
}
// TODO: Re-enable if appropriate.
@Test(enabled = false)
public void readUpdateSocketBindings() throws Exception {
ConfigurationDefinition configDef = loadServiceDescriptor("SocketBindingGroupDomain");
Address a = new Address("socket-binding-group=standard-sockets");
ConfigurationLoadDelegate loadDelegate = new ConfigurationLoadDelegate(configDef,
getDomainControllerASConnection(), a);
Configuration conf = loadDelegate.loadResourceConfiguration();
assert conf != null : "Did not get a configuration back";
PropertyList pl = conf.getList("*");
assert pl != null;
List<Property> listContent = pl.getList();
assert !listContent.isEmpty() : "List '*' has no elements";
assert listContent.get(0) instanceof PropertyMap : "List content is no map";
for (Property p : listContent) {
PropertyMap pm = (PropertyMap) p;
Map<String, Property> pmap = pm.getMap();
assert pmap.size() == 6;
PropertySimple name = (PropertySimple) pmap.get("name");
assert name != null;
assert name.getStringValue() != null;
if ("http".equals(name.getStringValue())) {
PropertySimple portProp = (PropertySimple) pmap.get("port");
assert portProp != null;
assert portProp.getStringValue() != null;
portProp.setStringValue("8081");
}
if ("https".equals(name.getStringValue())) {
PropertySimple portProp = (PropertySimple) pmap.get("port");
assert portProp != null;
assert portProp.getStringValue() != null;
portProp.setStringValue("9443");
}
}
// We have changed http port to 8081 and https to 9443, lets write back
ConfigurationWriteDelegate cwd = new ConfigurationWriteDelegate(configDef, getDomainControllerASConnection(), a);
ConfigurationUpdateReport report = new ConfigurationUpdateReport(conf);
cwd.updateResourceConfiguration(report);
assert report.getStatus() == ConfigurationUpdateStatus.SUCCESS;
// now check the result (and change back)
Configuration conf2 = loadDelegate.loadResourceConfiguration();
assert conf2 != null : "Did not get a configuration back";
List<Property> pl2 = conf.getList("*").getList();
for (Property p : pl2) {
PropertyMap pm = (PropertyMap) p;
Map<String, Property> pmap = pm.getMap();
PropertySimple name = (PropertySimple) pmap.get("name");
assert name != null;
assert name.getStringValue() != null;
if ("http".equals(name.getStringValue())) {
PropertySimple portProp = (PropertySimple) pmap.get("port");
assert portProp != null;
assert portProp.getStringValue() != null;
portProp.setStringValue("8080");
}
if ("https".equals(name.getStringValue())) {
PropertySimple portProp = (PropertySimple) pmap.get("port");
assert portProp != null;
assert portProp.getStringValue() != null;
portProp.setStringValue("8443");
}
}
report = new ConfigurationUpdateReport(conf);
cwd.updateResourceConfiguration(report);
assert report.getStatus() == ConfigurationUpdateStatus.SUCCESS;
}
}