/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) 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, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) 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 OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.netmgt.config.tester;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.opennms.netmgt.config.DataSourceFactory;
import org.opennms.test.ConfigurationTestUtils;
import org.opennms.test.DaoTestConfigBean;
import org.springframework.util.StringUtils;
import java.io.File;
import java.io.FilenameFilter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.SQLException;
import java.util.*;
import static org.junit.Assert.*;
public class ConfigTesterTest {
private static Set<String> m_filesTested = new HashSet<String>();
private static Set<String> m_filesIgnored = new HashSet<String>();
//private ConfigTesterDataSource m_dataSource;
@Before
public void init() {
DaoTestConfigBean daoTestConfig = new DaoTestConfigBean();
daoTestConfig.afterPropertiesSet();
}
@After
public void done() {
ConfigTesterDataSource dataSource = (ConfigTesterDataSource) DataSourceFactory.getDataSource();
if (dataSource != null && dataSource.getConnectionGetAttempts().size() > 0) {
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
for (SQLException e : dataSource.getConnectionGetAttempts()) {
e.printStackTrace(printWriter);
}
fail(dataSource.getConnectionGetAttempts().size()
+ " DataSource.getConnection attempts were made: \n"
+ writer.toString());
}
}
@Test
public void testSystemProperties() {
assertEquals("false", System.getProperty("distributed.layoutApplicationsVertically"));
assertEquals("target/test/logs/webapp", System.getProperty("opennms.webapplogs.dir"));
}
@Test
public void testAckdConfiguration() {
testConfigFile("ackd-configuration.xml");
}
@Test
public void testActiondConfiguration() {
testConfigFile("actiond-configuration.xml");
}
@Test
public void testAmiConfig() {
testConfigFile("ami-config.xml");
}
@Test
/**
* FIXME: AsteriskConfig doesn't appear to be in our classpath.
*/
public void testAsteriskConfiguration() {
ignoreConfigFile("asterisk-configuration.properties");
}
@Test
public void testAvailabilityReports() {
testConfigFile("availability-reports.xml");
}
@Test
/**
* This file isn't read directly by OpenNMS.
*/
public void testC3p0Properties() {
ignoreConfigFile("c3p0.properties");
}
@Test
public void testCapsdConfiguration() {
testConfigFile("capsd-configuration.xml");
}
@Test
public void testCategories() {
testConfigFile("categories.xml");
}
@Test
public void testChartConfiguration() {
testConfigFile("chart-configuration.xml");
}
@Test
/**
* Database access.
*/
public void testCollectdConfiguration() {
ignoreConfigFile("collectd-configuration.xml");
}
@Test
public void testDatabaseReports() {
testConfigFile("database-reports.xml");
}
@Test
public void testDatabaseSchema() {
testConfigFile("database-schema.xml");
}
@Test
public void testDataCollectionConfig() {
testConfigFile("datacollection-config.xml");
}
@Test
public void testDestinationPaths() {
testConfigFile("destinationPaths.xml");
}
@Test
public void testDiscoveryConfiguration() {
testConfigFile("discovery-configuration.xml");
}
@Test
public void testEventConf() {
testConfigFile("eventconf.xml");
}
@Test
public void testEventdConfiguration() {
testConfigFile("eventd-configuration.xml");
}
@Test
public void testEventsArchiverConfiguration() {
testConfigFile("events-archiver-configuration.xml");
}
@Test
public void testExcludeUeis() {
testConfigFile("exclude-ueis.properties");
}
@Test
public void testGroups() {
testConfigFile("groups.xml");
}
@Test
public void testHttpDatacollectionConfig() {
testConfigFile("http-datacollection-config.xml");
}
@Test
public void testJasperReports() {
testConfigFile("jasper-reports.xml");
}
@Test
public void testJavamailConfigurationProperties() {
testConfigFile("javamail-configuration.properties");
}
@Test
public void testJavamailConfigurationXml() {
testConfigFile("javamail-configuration.xml");
}
@Test
public void testJdbcDatacollectionConfig() {
testConfigFile("jdbc-datacollection-config.xml");
}
@Test
public void testJmxDatacollectionConfig() {
testConfigFile("jmx-datacollection-config.xml");
}
@Test
public void testKscPerformanceReports() {
testConfigFile("ksc-performance-reports.xml");
}
@Test
/**
* FIXME: Database access.
*/
public void testLinkdConfiguration() {
ignoreConfigFile("linkd-configuration.xml");
}
@Test
public void testMagicUsers() {
testConfigFile("magic-users.properties");
}
@Test
public void testMap() {
testConfigFile("map.properties");
}
@Test
/**
* FIXME: Database access.
*/
public void testMapsadapterConfiguration() {
ignoreConfigFile("mapsadapter-configuration.xml");
}
@Test
public void testMicroblogConfiguration() {
testConfigFile("microblog-configuration.xml");
}
@Test
public void testModelImporter() {
testConfigFile("model-importer.properties");
}
@Test
/**
* FIXME: Don't know why this is ignored.
*
* See GatewayGroupLoader for the code that we'd need to call in the ConfigTester.
*/
public void testModemConfig() {
ignoreConfigFile("modemConfig.properties");
}
@Test
/**
* FIXME: Use LocationMonitorDaoHibernate to parse the config file
*/
public void testMonitoringLocations() {
ignoreConfigFile("monitoring-locations.xml");
}
@Test
public void testNotifdConfiguration() {
testConfigFile("notifd-configuration.xml");
}
@Test
public void testNotificationCommands() {
testConfigFile("notificationCommands.xml");
}
@Test
/**
* FIXME: Database access.
*/
public void testNotifications() {
ignoreConfigFile("notifications.xml");
}
@Test
@Ignore
public void testNsclientConfig() {
testConfigFile("nsclient-config.xml");
}
@Test
@Ignore
public void testNsclientDatacollectionConfig() {
testConfigFile("nsclient-datacollection-config.xml");
}
@Test
public void testOpennmsDatasources() {
testConfigFile("opennms-datasources.xml");
}
@Test
public void testOpennmsServer() {
testConfigFile("opennms-server.xml");
}
@Test
/**
* FIXME: Don't know why this is off.
*/
public void testOpennms() {
ignoreConfigFile("opennms.properties");
}
@Test
public void testOtrs() {
testConfigFile("otrs.properties");
}
@Test
public void testPollOutages() {
testConfigFile("poll-outages.xml");
}
@Test
public void testPollerConfig() {
testConfigFile("poller-config.properties");
}
@Test
/**
* FIXME: Database access.
*/
public void testPollerConfiguration() {
ignoreConfigFile("poller-configuration.xml");
}
@Test
public void testProvisiondConfiguration() {
testConfigFile("provisiond-configuration.xml");
}
@Test
/**
* FIXME: Not part of the standard build?
*/
public void testRancidConfiguration() {
ignoreConfigFile("rancid-configuration.xml");
}
@Test
public void testReportdConfiguration() {
testConfigFile("reportd-configuration.xml");
}
@Test
public void testResponseAdhocGraph() {
testConfigFile("response-adhoc-graph.properties");
}
@Test
public void testResponsePrefabGraph() {
testConfigFile("response-graph.properties");
}
@Test
public void testRrdConfiguration() {
testConfigFile("rrd-configuration.properties");
}
@Test
public void testRt() {
testConfigFile("rt.properties");
}
@Test
public void testRtcConfiguration() {
testConfigFile("rtc-configuration.xml");
}
@Test
public void testRwsConfiguration() {
testConfigFile("rws-configuration.xml");
}
@Test
public void testScriptdConfiguration() {
testConfigFile("scriptd-configuration.xml");
}
@Test
public void testServiceConfiguration() {
testConfigFile("service-configuration.xml");
}
@Test
public void testSiteStatusViews() {
testConfigFile("site-status-views.xml");
}
@Test
public void testSmsPhonebook() {
testConfigFile("smsPhonebook.properties");
}
@Test
public void testSnmpAdhocGraph() {
testConfigFile("snmp-adhoc-graph.properties");
}
@Test
/**
* FIXME: Not part of the standard build?
*/
public void testSnmpAssetAdapterConfiguration() {
ignoreConfigFile("snmp-asset-adapter-configuration.xml");
}
@Test
public void testSnmpConfig() {
testConfigFile("snmp-config.xml");
}
@Test
public void testSnmpPrefabGraph() {
testConfigFile("snmp-graph.properties");
}
@Test
/**
* FIXME: Database access.
*/
public void testSnmpInterfacePollerConfiguration() {
ignoreConfigFile("snmp-interface-poller-configuration.xml");
}
@Test
public void testStatsdConfiguration() {
testConfigFile("statsd-configuration.xml");
}
@Test
public void testSurveillanceViews() {
testConfigFile("surveillance-views.xml");
}
@Test
public void testSyslogdConfiguration() {
testConfigFile("syslogd-configuration.xml");
}
@Test
/**
* FIXME: Database access.
*/
public void testThreshdConfiguration() {
ignoreConfigFile("threshd-configuration.xml");
}
@Test
public void testThresholds() {
testConfigFile("thresholds.xml");
}
@Test
public void testTl1dConfiguration() {
testConfigFile("tl1d-configuration.xml");
}
@Test
public void testTranslatorConfiguration() {
testConfigFile("translator-configuration.xml");
}
@Test
public void testTrapdConfiguration() {
testConfigFile("trapd-configuration.xml");
}
@Test
public void testUsers() {
testConfigFile("users.xml");
}
@Test
public void testVacuumdConfiguration() {
testConfigFile("vacuumd-configuration.xml");
}
@Test
public void testViewsdisplay() {
testConfigFile("viewsdisplay.xml");
}
@Test
public void testVulnscandConfiguration() {
testConfigFile("vulnscand-configuration.xml");
}
@Test
public void testWmiConfig() {
testConfigFile("wmi-config.xml");
}
@Test
public void testWmiDatacollectionConfig() {
testConfigFile("wmi-datacollection-config.xml");
}
@Test
public void testXmlrpcdConfiguration() {
testConfigFile("xmlrpcd-configuration.xml");
}
@Test
@Ignore
public void testXmpConfig() {
testConfigFile("xmp-config.xml");
}
@Test
@Ignore
public void testXmpDatacollectionConfig() {
testConfigFile("xmp-datacollection-config.xml");
}
@Test
/**
* FIXME: Configuration code is not in its own class.
*
* It's embedded in XMPPNotificationManager's constructor.
*/
public void testXmppConfiguration() {
ignoreConfigFile("xmpp-configuration.properties");
}
@Test
public void testRemoteRepositoyConfig() {
ignoreConfigFile("remote-repository.xml");
}
@Test
public void testAllConfigs() {
ConfigTester.main(new String[] { "-a" });
}
private void testConfigFile(String file) {
/*
* Add to the tested list first, so if we get a test failure
* for a specific file test, we don't also make
* testCheckAllDaemonXmlConfigFilesTested fail.
*/
m_filesTested.add(file);
ConfigTester.main(new String[] { file });
}
private void ignoreConfigFile(String file) {
m_filesIgnored.add(file);
}
@Test
public void testCheckAllDaemonXmlConfigFilesTested() {
File someConfigFile = ConfigurationTestUtils.getFileForConfigFile("discovery-configuration.xml");
File configDir = someConfigFile.getParentFile();
assertTrue("daemon configuration directory exists at " + configDir.getAbsolutePath(), configDir.exists());
assertTrue("daemon configuration directory is a directory at " + configDir.getAbsolutePath(), configDir.isDirectory());
String[] configFiles = configDir.list(new FilenameFilter() {
public boolean accept(File file, String name) {
return name.endsWith(".xml");
} });
Set<String> allXml = new HashSet<String>(Arrays.asList(configFiles));
allXml.removeAll(m_filesTested);
allXml.removeAll(m_filesIgnored);
if (allXml.size() > 0) {
List<String> files = new ArrayList<String>(allXml);
Collections.sort(files);
fail("These files in " + configDir.getAbsolutePath() + " were not tested: \n\t" + StringUtils.collectionToDelimitedString(files, "\n\t"));
}
}
}