blob: 8b1df406382ff00bc6d042591fda89fd39499936 [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
* <p/>
* http://www.apache.org/licenses/LICENSE-2.0
* <p/>
* 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.cas.resource.system;
import org.apache.commons.io.FileUtils;
import org.apache.oodt.cas.resource.structs.ResourceNode;
import org.apache.oodt.cas.resource.structs.exceptions.JobQueueException;
import org.apache.oodt.cas.resource.structs.exceptions.JobRepositoryException;
import org.apache.oodt.cas.resource.structs.exceptions.MonitorException;
import org.apache.oodt.cas.resource.structs.exceptions.QueueManagerException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Hashtable;
import java.util.List;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
/**
* Tests for the XmlRpcResourceManagerClient to ensure communications between client and server operate correctly.
*/
public class TestXmlRpcResourceManagerClient {
private static final int RM_PORT = 50001;
private static ResourceManagerClient rmc;
private static ResourceManager rm;
@BeforeClass
public static void setUp() throws Exception {
generateTestConfiguration();
rm = new XmlRpcResourceManager(RM_PORT);
rm.startUp();
rmc = new XmlRpcResourceManagerClient(new URL("http://localhost:" + RM_PORT));
}
private static void generateTestConfiguration() throws IOException {
Properties config = new Properties();
String propertiesFile = "." + File.separator + "src" + File.separator +
"test" + File.separator + "resources" + File.separator + "test.resource.properties";
System.getProperties().load(new FileInputStream(new File(propertiesFile)));
// stage policy
File tmpPolicyDir = null;
try {
tmpPolicyDir = File.createTempFile("test", "ignore").getParentFile();
} catch (Exception e) {
fail(e.getMessage());
}
for (File policyFile : new File("./src/test/resources/policy")
.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile() && pathname.getName().endsWith(".xml");
}
})) {
try {
FileUtils.copyFileToDirectory(policyFile, tmpPolicyDir);
} catch (Exception e) {
fail(e.getMessage());
}
}
config.setProperty("org.apache.oodt.cas.resource.nodes.dirs", tmpPolicyDir
.toURI().toString());
config.setProperty("org.apache.oodt.cas.resource.nodetoqueues.dirs",
tmpPolicyDir.toURI().toString());
System.getProperties().putAll(config);
}
@Test
public void testGetNodes() throws MonitorException {
List<Hashtable> nodes = rmc.getNodes();
assertThat(nodes, is(not(nullValue())));
assertThat(nodes, hasSize(1));
}
@Test
public void testGetExecutionReport() throws JobRepositoryException {
String execreport = rmc.getExecReport();
assertThat(execreport, is(not(nullValue())));
//TODO make it return more than an empty string;
}
@Test
public void testJobQueueCapacity() throws JobRepositoryException {
int capacity = rmc.getJobQueueCapacity();
assertThat(capacity, equalTo(1000));
}
@Test
public void testGetJobQueueSize() throws JobRepositoryException {
int size = rmc.getJobQueueSize();
assertThat(size, equalTo(0));
//TODO Make it change queue size
}
@Test
public void testGetNodeById() throws MonitorException {
List<ResourceNode> nodelist = rmc.getNodes();
ResourceNode node = rmc.getNodeById(nodelist.get(0).getNodeId());
assertThat(node, is(not(nullValue())));
assertThat(node.getNodeId(), equalTo("localhost"));
}
@Test
public void testGetNodeLoad() throws MonitorException {
List<ResourceNode> nodelist = rmc.getNodes();
String node = rmc.getNodeLoad(nodelist.get(0).getNodeId());
assertNotNull(node);
assertThat(node, equalTo("0/8"));
}
@Test
public void testNodeReport() throws MonitorException {
String report = rmc.getNodeReport();
assertThat(report, is(not(nullValue())));
}
@Test
public void testGetNodesInQueue() throws QueueManagerException {
List<String> nodes = rmc.getNodesInQueue("long");
assertThat(nodes, is(not(nullValue())));
assertThat(nodes, hasSize(1));
}
@Test
public void testQueuedJobs() throws JobQueueException {
List jobs = rmc.getQueuedJobs();
assertThat(jobs, is(not(nullValue())));
//TODO queue a job
}
@Test
public void testQueuesWithNode() throws MonitorException, QueueManagerException {
List<ResourceNode> nodelist = rmc.getNodes();
List<String> queues = rmc.getQueuesWithNode(nodelist.get(0).getNodeId());
assertThat(queues, hasSize(3));
assertThat(queues, containsInAnyOrder("high", "quick", "long"));
}
@Test
public void testQueues() throws QueueManagerException {
List<String> queues = rmc.getQueues();
assertThat(queues, hasSize(3));
assertThat(queues, containsInAnyOrder("high", "quick", "long"));
}
@AfterClass
public static void tearDown() {
rm.shutdown();
}
}