blob: b77683c796d03546113f8a29cc7e512d7cca39c5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.oodt.config.distributed;
import org.apache.commons.io.FileUtils;
import org.apache.oodt.config.distributed.cli.ConfigPublisher;
import org.apache.oodt.config.test.AbstractDistributedConfigurationTest;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Testing the functionality of {@link DistributedConfigurationPublisher} and its CLI
*
* @author Imesha Sudasingha
*/
public class DistributedConfigurationPublisherTest extends AbstractDistributedConfigurationTest {
private static final String CONFIG_PUBLISHER_XML = "config-publisher.xml";
@Before
public void setUpTest() {
System.setProperty("org.apache.oodt.cas.cli.action.spring.config", "src/main/resources/cmd-line-actions.xml");
System.setProperty("org.apache.oodt.cas.cli.option.spring.config", "src/main/resources/cmd-line-options.xml");
}
@After
public void tearDownTest() {
System.clearProperty("org.apache.oodt.cas.cli.action.spring.config");
System.clearProperty("org.apache.oodt.cas.cli.option.spring.config");
}
@Test
public void publishConfigurationTest() throws Exception {
// Publishing configuration through CLI and verifying whether they were stored correctly
ConfigPublisher.main(new String[]{
"-connectString", zookeeper.getConnectString(),
"-config", CONFIG_PUBLISHER_XML,
"-a", "publish"
});
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(CONFIG_PUBLISHER_XML);
Map distributedConfigurationPublishers = applicationContext.getBeansOfType(DistributedConfigurationPublisher.class);
List<DistributedConfigurationPublisher> publishers = new ArrayList<>(distributedConfigurationPublishers.values().size());
for (Object bean : distributedConfigurationPublishers.values()) {
publishers.add((DistributedConfigurationPublisher) bean);
}
for (DistributedConfigurationPublisher publisher : publishers) {
Assert.assertTrue(publisher.verifyPublishedConfiguration());
ZNodePaths zNodePaths = publisher.getZNodePaths();
// Checking for configuration files
for (Map.Entry<String, String> entry : publisher.getPropertiesFiles().entrySet()) {
String zNodePath = zNodePaths.getPropertiesZNodePath(entry.getValue());
Assert.assertNotNull(client.checkExists().forPath(zNodePath));
String storedContent = new String(client.getData().forPath(zNodePath));
String fileContent = FileUtils.readFileToString(new File(entry.getKey()));
Assert.assertEquals(fileContent, storedContent);
}
// Checking for configuration files
for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
String zNodePath = zNodePaths.getConfigurationZNodePath(entry.getValue());
Assert.assertNotNull(client.checkExists().forPath(zNodePath));
String storedContent = new String(client.getData().forPath(zNodePath));
String fileContent = FileUtils.readFileToString(new File(entry.getKey()));
Assert.assertEquals(fileContent, storedContent);
}
}
// Clearing configuration through CLI and checking whether the configuration has actually been gone
ConfigPublisher.main(new String[]{
"-connectString", zookeeper.getConnectString(),
"-config", CONFIG_PUBLISHER_XML,
"-a", "clear"
});
for (DistributedConfigurationPublisher publisher : publishers) {
Assert.assertFalse(publisher.verifyPublishedConfiguration());
ZNodePaths zNodePaths = publisher.getZNodePaths();
// Checking for configuration files
for (Map.Entry<String, String> entry : publisher.getPropertiesFiles().entrySet()) {
String zNodePath = zNodePaths.getPropertiesZNodePath(entry.getValue());
Assert.assertNull(client.checkExists().forPath(zNodePath));
}
// Checking for configuration files
for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
String zNodePath = zNodePaths.getConfigurationZNodePath(entry.getValue());
Assert.assertNull(client.checkExists().forPath(zNodePath));
}
}
for (DistributedConfigurationPublisher publisher : publishers) {
publisher.destroy();
}
}
}