/* * Copyright 1999-2006 University of Chicago * * Licensed 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.globus.rsl.tests; import org.globus.rsl.*; import java.util.*; import java.io.*; import junit.framework.*; import junit.extensions.*; public class RslAttributesTest extends TestCase { protected RslAttributes attribs; public RslAttributesTest(String name) { super(name); } public static void main (String[] args) { junit.textui.TestRunner.run (suite()); } public static Test suite() { return new TestSuite(RslAttributesTest.class); } public void setUp() { String rsl = "&(rsl_substitution=(HOME /home/gawor)(VAR2 testValue))(exECutable=/bin/ls)(arGUments=-arg1 -arg2 \"-arg3 with space\" \"'arg4 in quotes'\")(directory=/home/vijay/gram)(stdin=https://localhost:9999/test)(environment=(v1 value1/$(JAREK)/value2 ) (v2 $(GLOBUS)) (v3 $(HOME)/data # /bin))"; try { attribs = new RslAttributes(rsl); } catch(Exception e) { fail("Failed to parse rsl"); } } public void testParse() { assertEquals("executable", "/bin/ls", attribs.getSingle("executable")); assertEquals("directory", "/home/vijay/gram", attribs.getSingle("directory")); assertEquals("stdin", "https://localhost:9999/test", attribs.getSingle("stdin")); assertEquals("stdout", null, attribs.getSingle("stdout")); List args = attribs.getMulti("arguments"); assertEquals("arg size", 4, args.size()); assertEquals("arg 1", "-arg1", args.get(0)); assertEquals("arg 2", "-arg2", args.get(1)); assertEquals("arg 3", "-arg3 with space", args.get(2)); assertEquals("arg 4", "'arg4 in quotes'", args.get(3)); Map envs = attribs.getMap("environment"); assertEquals("env size", 3, envs.size()); assertEquals("env1", "value1/$(JAREK)/value2", envs.get("v1")); assertEquals("env2", "$(GLOBUS)", envs.get("v2")); assertEquals("env3", "$(HOME)/data/bin", envs.get("v3")); Map vars = attribs.getVariables("rsl_substitution"); assertEquals("var name 1", true, vars.containsKey("HOME")); assertEquals("var name 2", true, vars.containsKey("VAR2")); assertEquals("var name 3", false, vars.containsKey("home")); assertEquals("var value 1", "/home/gawor", vars.get("HOME")); assertEquals("var value 2", "testValue", vars.get("VAR2")); } public void testModify() { attribs.set("executabLE", "/home/gawor/ls"); assertEquals("executable", "/home/gawor/ls", attribs.getSingle("executable")); attribs.set("stdout", "http://goshen.mcs.anl.gov:2222:/kkkk"); assertEquals("stdout", "http://goshen.mcs.anl.gov:2222:/kkkk", attribs.getSingle("stdOUT")); // modify arg list assertEquals("delete arg1", true, attribs.remove("arguments", "-arg2") ); assertEquals("delete arg2", false, attribs.remove("arguments", "-noarg") ); attribs.add("arguments", "test arg"); // check arg list List args = attribs.getMulti("arguments"); assertEquals("arg size", 4, args.size()); assertEquals("arg 1", "-arg1", args.get(0)); assertEquals("arg 2", "-arg3 with space", args.get(1)); assertEquals("arg 3", "'arg4 in quotes'", args.get(2)); assertEquals("arg 4", "test arg", args.get(3)); // modify env assertEquals("delete env1", true, attribs.removeMap("environment", "v2") ); assertEquals("delete env2", false, attribs.removeMap("environment", "v8") ); attribs.addMulti("environment", new String [] {"v5", "value5"}); // check env Map envs = attribs.getMap("environment"); assertEquals("env size", 3, envs.size()); assertEquals("env1", "value1/$(JAREK)/value2", envs.get("v1")); assertEquals("env2", "$(HOME)/data/bin", envs.get("v3")); assertEquals("env3", "value5", envs.get("v5")); // modify variables assertEquals("var remove", false, attribs.removeVariable("rsl_substitution", "VAR1")); assertEquals("var remove", true, attribs.removeVariable("rsl_substitution", "VAR2")); attribs.addVariable("rsl_substitution", "VAR3", "variable3"); // check variables Map vars = attribs.getVariables("rsl_substitution"); assertEquals("var name 1", true, vars.containsKey("HOME")); assertEquals("var name 2", false, vars.containsKey("VAR2")); assertEquals("var name 3", true, vars.containsKey("VAR3")); assertEquals("var value 1", "/home/gawor", vars.get("HOME")); assertEquals("var value 2", "variable3", vars.get("VAR3")); System.out.println( attribs.toRSL() ); } }