package org.ourgrid.common.jdlTests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
import java.util.List;
import org.junit.Test;
import org.ourgrid.common.specification.OurGridSpecificationConstants;
import org.ourgrid.common.specification.main.DescriptionFileCompile;
import org.ourgrid.common.specification.worker.WorkerSpecification;
import org.ourgrid.common.specification.worker.WorkerSpecificationConstants;
/**
* @author David Candeia
*
*/
public class WorkerTest {
private static final String TEST_FILES_PATH = "test" + File.separator + "specs" + File.separator + "semantic"
+ File.separator;
private static final String test_file1 = TEST_FILES_PATH + "GridPeerTest41.classad";
private static final String test_file2 = TEST_FILES_PATH + "GridPeerTest1.classad";
private static final String test_file3 = TEST_FILES_PATH + "GridPeerTest4.classad";
private static final String TEST_FILES_PATH2 = "test" + File.separator + "acceptance" + File.separator;
// private static final String test_file4 = TEST_FILES_PATH + File.separator + "file4.classad";
@Test
public void testWorker1() throws Exception {
try {
List<WorkerSpecification> work = DescriptionFileCompile.compileNewSDF(test_file1);
fail("Should fail since the server name is not specified");
} catch (Exception e) {
// System.out.println("Error: " + e.getMessage());
assertEquals(
"Missing attribute \"username or servername\".",
e.getMessage());
}
}
@Test
public void testWorker2() throws Exception {
List<WorkerSpecification> workers = DescriptionFileCompile.compileNewSDF(test_file2);
assertTrue(2 == workers.size());
}
@Test
public void testWorker3() throws Exception {
try {
List<WorkerSpecification> workers = DescriptionFileCompile.compileNewSDF(test_file3);
fail("Should fail since the server name is not specified");
} catch (Exception e) {
// System.out.println("Error: " + e.getMessage());
assertEquals(
"Missing attribute \"username or servername\".",
e.getMessage());
}
}
@Test
public void testWorker4() throws Exception {
List<WorkerSpecification> specs = DescriptionFileCompile.compileNewSDF("test" + File.separator +"acceptance" + File.separator +"file1.classad");
assertTrue(1 == specs.size());
WorkerSpecification workerSpecA = specs.get(0);
assertEquals("testserver", workerSpecA.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("testuser", workerSpecA.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("linux", workerSpecA.getAttribute(WorkerSpecificationConstants.OS));
specs = DescriptionFileCompile.compileNewSDF("test" + File.separator +"acceptance" + File.separator +"file2.classad");
assertTrue(2 == specs.size());
WorkerSpecification workerSpecB = specs.get(0);
WorkerSpecification workerSpecC = specs.get(1);
assertEquals("testserver", workerSpecB.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("testuserB", workerSpecB.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("testserver", workerSpecC.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("testuserC", workerSpecC.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("windows", workerSpecC.getAttribute(WorkerSpecificationConstants.OS));
assertEquals("256", workerSpecC.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
specs = DescriptionFileCompile.compileNewSDF("test" + File.separator +"acceptance" + File.separator +"file3.classad");
assertTrue(1 == specs.size());
WorkerSpecification workerSpecD = specs.get(0);
assertEquals("testserver", workerSpecD.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("testuser", workerSpecD.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("linux", workerSpecD.getAttribute(WorkerSpecificationConstants.OS));
assertEquals("1024", workerSpecD.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
}
@Test
public void testWorker5() throws Exception {
List<WorkerSpecification> specs = DescriptionFileCompile.compileNewSDF("test" + File.separator + "acceptance"
+ File.separator + "req_111" + File.separator + "TA_111.1.classad");
assertTrue(17 == specs.size());
WorkerSpecification workerSpecB = specs.get(0);
WorkerSpecification workerSpecC = specs.get(1);
WorkerSpecification workerSpecR = specs.get(16);
assertEquals("xmpp.ourgrid.org", workerSpecB.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("worker0", workerSpecB.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("xmpp.ourgrid.org", workerSpecC.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("worker1", workerSpecC.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("256", workerSpecC.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
assertEquals("xmpp.ourgrid.org", workerSpecR.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("worker16", workerSpecR.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("1024", workerSpecR.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
specs = DescriptionFileCompile.compileNewSDF("test" + File.separator + "acceptance" + File.separator + "req_111"
+ File.separator + "TA_111.4.classad");
assertTrue(2 == specs.size());
WorkerSpecification workerSpec1 = specs.get(0);
WorkerSpecification workerSpec2 = specs.get(1);
assertEquals("xmpp.ourgrid.org", workerSpec1.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("worker1", workerSpec1.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("512", workerSpec1.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
assertTrue(workerSpec1.getAttribute(WorkerSpecificationConstants.OS) != null);
assertTrue(workerSpec1.getAttribute(WorkerSpecificationConstants.OS).equalsIgnoreCase("linux"));
assertEquals("{brams}", workerSpec1.getAttribute(WorkerSpecificationConstants.SOFTWARE).toString());
assertEquals("[name=\"brams\"]", workerSpec1.getAttribute("brams").toString());
assertEquals("xmpp.ourgrid.org", workerSpec2.getAttribute(OurGridSpecificationConstants.SERVERNAME));
assertEquals("worker2", workerSpec2.getAttribute(OurGridSpecificationConstants.USERNAME));
assertEquals("512", workerSpec2.getAttribute(WorkerSpecificationConstants.MAIN_MEMORY));
assertTrue(workerSpec2.getAttribute(OurGridSpecificationConstants.ATT_OS).equalsIgnoreCase("linux"));
assertEquals("{brams}", workerSpec1.getAttribute(WorkerSpecificationConstants.SOFTWARE).toString());
assertEquals("[name=\"brams\"]", workerSpec1.getAttribute("brams").toString());
}
// @Test
// public void testWorkerAddWithAnnotations() throws Exception {
// List<WorkerSpec> specs = DescriptionFileCompile.compileNewSDF("test" + File.separator + "acceptance"
// + File.separator + "TA_ANN.1.sdf");
//
// assertTrue(17 == specs.size());
// WorkerSpec workerSpecB = specs.get(0);
// WorkerSpec workerSpecC = specs.get(1);
// WorkerSpec workerSpecR = specs.get(16);
//
// assertEquals("xmpp.ourgrid.org", workerSpecB.getAttribute(WorkerSpec.ATT_SERVERNAME));
// assertEquals("worker0", workerSpecB.getAttribute(WorkerSpec.ATT_USERNAME));
//
// assertEquals("worker0", workerSpecB.getAnnotation(WorkerSpec.ATT_USERNAME));
// assertEquals("tag1", workerSpecB.getAnnotation("tag1"));
// assertEquals("tag2", workerSpecB.getAnnotation("tag2"));
//
//
// assertEquals("xmpp.ourgrid.org", workerSpecC.getAttribute(WorkerSpec.ATT_SERVERNAME));
// assertEquals("worker1", workerSpecC.getAttribute(WorkerSpec.ATT_USERNAME));
// assertEquals("256", workerSpecC.getAttribute(WorkerSpec.ATT_MEM));
//
// assertEquals("worker1", workerSpecC.getAnnotation(WorkerSpec.ATT_USERNAME));
// assertEquals("tag1", workerSpecC.getAnnotation("tag1"));
// assertEquals("tag2", workerSpecC.getAnnotation("tag2"));
// assertEquals("256", workerSpecC.getAnnotation(WorkerSpec.ATT_MEM));
//
//
// assertEquals("xmpp.ourgrid.org", workerSpecR.getAttribute(WorkerSpec.ATT_SERVERNAME));
// assertEquals("worker16", workerSpecR.getAttribute(WorkerSpec.ATT_USERNAME));
// assertEquals("1024", workerSpecR.getAttribute(WorkerSpec.ATT_MEM));
//
// assertEquals("worker16", workerSpecR.getAnnotation(WorkerSpec.ATT_USERNAME));
// assertEquals("tag1", workerSpecR.getAnnotation("tag1"));
// assertEquals("tag2", workerSpecR.getAnnotation("tag2"));
// assertEquals("1024", workerSpecR.getAnnotation(WorkerSpec.ATT_MEM));
// }
}