You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2015/03/06 18:11:39 UTC

svn commit: r1664680 [1/2] - in /uima/sandbox/uima-ducc/trunk: src/main/resources/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/ uima-ducc-common/src/test/java/org/apache/u...

Author: challngr
Date: Fri Mar  6 17:11:37 2015
New Revision: 1664680

URL: http://svn.apache.org/r1664680
Log:
UIMA-4275 User limits and class inclusion mechanism.

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test1/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.classes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npA.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npB.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npC.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npD.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npE.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.classes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npA.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npB.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npC.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npD.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npE.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.classes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npA.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npB.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npC.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npD.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npE.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test2/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test3/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test4/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test5/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test6/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test7/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test8/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/ducc.classes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/ducc.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/ducc.users
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/npA.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/npB.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/npC.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/npD.nodes
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test9/resources/npE.nodes
Modified:
    uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/NodeConfiguration.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/java/org/apache/uima/ducc/common/test/NodeConfigurationTest.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorHelper.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/JobManagerConverter.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/ResourceClass.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/Scheduler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-rm/src/main/java/org/apache/uima/ducc/rm/scheduler/User.java

Modified: uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties?rev=1664680&r1=1664679&r2=1664680&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/default.ducc.properties Fri Mar  6 17:11:37 2015
@@ -350,8 +350,10 @@ ducc.rm.state.publish.ratio = 1
 ducc.rm.share.quantum = 1
 # Implementation class for actual scheduling algorithm
 ducc.rm.scheduler = org.apache.uima.ducc.rm.scheduler.NodepoolScheduler
-# File defining thescheduler classes - found in DUCC_HOME/resources
+# File defining the scheduler classes - found in DUCC_HOME/resources
 ducc.rm.class.definitions = ducc.classes
+# File defining the user registry.  Optional, need not exist.  Found in DUCC_HOME/resources.
+ducc.rm.user.registry  = ducc.users
 # default memory, in GB, if not specified 
 ducc.rm.default.memory = 4
 # number of node metrics heartbeats to wait for before rm starts up

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/NodeConfiguration.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/NodeConfiguration.java?rev=1664680&r1=1664679&r2=1664680&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/NodeConfiguration.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/NodeConfiguration.java Fri Mar  6 17:11:37 2015
@@ -47,19 +47,22 @@ public class NodeConfiguration
 {
     String config_file_name = null;
     String ducc_nodes = null;
+    String ducc_users = null;
     BufferedReader in;
     int lineno = 0;
     DuccProperties defaultFairShareClass  = new DuccProperties();
     DuccProperties defaultFixedShareClass = new DuccProperties();
     DuccProperties defaultReserveClass    = new DuccProperties();
     DuccProperties defaultNodepool        = new DuccProperties();
+    DuccProperties defaultUser            = new DuccProperties();                         // UIMA-4275
 
     Map<String, DuccProperties> nodepools = new HashMap<String, DuccProperties>();        // all nodepools, by name
     ArrayList<DuccProperties> independentNodepools = new ArrayList<DuccProperties>();     // the top-level node pools
 
     // UIMA-4142 Move all these declarations to the top and comment them
-    ArrayList<DuccProperties> classes = new ArrayList<DuccProperties>();                  // all classes, during parsing, a discard
-    Map<String, DuccProperties> clmap = new HashMap<String, DuccProperties>();            // all classes, by name
+    List<DuccProperties> classes = new ArrayList<DuccProperties>();                       // all classes, during parsing, a discard
+    Map<String, DuccProperties> clmap    = new HashMap<String, DuccProperties>();         // all classes, by name
+    Map<String, DuccProperties> usermap  = new HashMap<String, DuccProperties>();         // all users, by name UIMA-4275
     ArrayList<String> independentClasses = new ArrayList<String>();                       // all classes that don't derive from something
 
     Map<String, String> allNodes   = new HashMap<String, String>();                        // map node           -> nodepool name, map for dup checking
@@ -80,15 +83,11 @@ public class NodeConfiguration
     DuccProperties reserveDefault   = null;
     String ducc_home = null;
 
-    public NodeConfiguration(String config_file_name, DuccLogger logger)
-    {
-        this(config_file_name, null, logger);
-    }
-
-    public NodeConfiguration(String config_file_name, String ducc_nodes, DuccLogger logger)
+    public NodeConfiguration(String config_file_name, String ducc_nodes, String ducc_users, DuccLogger logger)
     {
         this.config_file_name = config_file_name;
         this.ducc_nodes = ducc_nodes;
+        this.ducc_users = ducc_users;
         this.logger = logger;
         
         ducc_home = System.getProperty("DUCC_HOME");
@@ -105,7 +104,9 @@ public class NodeConfiguration
         defaultFairShareClass.put("prediction-fudge", ""+SystemPropertyResolver.getIntProperty("ducc.rm.prediction.fudge", 60000));
         defaultFairShareClass.put("max-processes", Integer.toString(Integer.MAX_VALUE));
         defaultFairShareClass.put("nodepool", "<required>");
+        defaultFairShareClass.put("users", "<optional>");
         defaultFairShareClass.put("debug", "fixed");
+        defaultFairShareClass.put("hostile", "false");
         defaultFairShareClass.put("abstract", "<optional>");
         defaultFairShareClass.put("children", "<optional>");
         defaultFairShareClass.put("parent", "<optional>");
@@ -124,6 +125,7 @@ public class NodeConfiguration
         defaultFixedShareClass.put("max-processes", Integer.toString(Integer.MAX_VALUE));
         defaultFixedShareClass.put("cap", Integer.toString(Integer.MAX_VALUE));
         defaultFixedShareClass.put("nodepool", "<required>");
+        defaultFixedShareClass.put("users", "<optional>");
 
         defaultReserveClass.put("type", "class");
         defaultReserveClass.put("name", "defaultReserveClass");
@@ -136,6 +138,7 @@ public class NodeConfiguration
         defaultReserveClass.put("max-machines", Integer.toString(Integer.MAX_VALUE));
         defaultReserveClass.put("cap", Integer.toString(Integer.MAX_VALUE));
         defaultReserveClass.put("nodepool", "<required>");
+        defaultReserveClass.put("users", "<optional>");
         defaultReserveClass.put("enforce", "true");
 
         defaultNodepool.put("type", "nodepool");
@@ -143,6 +146,9 @@ public class NodeConfiguration
         defaultNodepool.put("nodefile", "<optional>");
         defaultNodepool.put("parent", "<optional>");
         defaultNodepool.put("domain", "<optional>");
+
+        defaultUser.put("type", "user");
+        defaultUser.put("name", "<optional>");
      }
 
     /**
@@ -156,7 +162,7 @@ public class NodeConfiguration
         }
         File f = new File(file);
         if ( ! f.exists() ) {
-            throw new IllegalConfigurationException("File " + file + " does not exist or cannot be read");
+            return null;              // UIMA-4275 Defer crash to caller, making it optional.
         }
         return file;
     }
@@ -232,7 +238,7 @@ public class NodeConfiguration
             line = line.trim();
             if ( line.equals("") )      continue;
             if ( line.startsWith("#") ) continue;
-            return line;
+            return line + ";";          // convert linend into ; so we can do lists
         }
         return null;
     }
@@ -247,7 +253,7 @@ public class NodeConfiguration
         while ( (buf == null) || !buf.hasMoreTokens() ) {
             String line = readLine();
             if ( line == null ) return false;
-            buf = new StringTokenizer(line, "\n\t\r\f{} =;", true);
+            buf = new StringTokenizer(line, "\n\t\r\f{} =,;", true);
         }
         return true;
     }
@@ -255,43 +261,76 @@ public class NodeConfiguration
     /**
      * Provide a continual stream of tokens, throwing out whitespace and semocolons
      */
+    String pushback = null;
     String nextToken()
         throws IOException
     {
+        if ( pushback != null ) {
+            // System.out.println("Return " + pushback + " from pushback.");
+            String ret = pushback;
+            pushback = null;
+            return ret;
+        }
+
         while ( fillBuf() ) {
             String tok = null;
             while ( buf.hasMoreTokens() ) {
                 tok = buf.nextToken();
-                if ( tok.equals(" ") ) continue;
-                if ( tok.equals("\t") ) continue;
-                if ( tok.equals(";") ) continue;   // optional semicolon, ignored
+                // System.out.println("Token: " + tok);
+                if ( tok.equals(" ") ) continue;   // ignoring whitespace
+                if ( tok.equals("\t") ) continue;  // ignoring whitespace
+                if ( tok.equals(",") )  continue;  // ignoring commas as whitespace
+
                 return tok;
             }
         }                         
         return null;
     }
 
+    /**
+     * Consume the token stream up to the next delimeter.
+     */
+    String consume()
+    	    throws IOException
+    {
+        String tok = nextToken();
+        if ( tok.equals("=") ) tok = nextToken();          // optional '='
+        if ( tok.equals("}") ) return tok;                 // start of stream is }, probably invalid
+        if ( tok.equals("{") ) return tok;                 // start of stream is {, probably invalid
+
+        String ret = null;
+        while ( tok != null ) {
+            if ( tok.equals(";") ) return ret;            // logical eol
+
+            if ( tok.equals("}") || tok.equals("{") ) {   // start or begin of stanza, not at start of stream
+                pushback = tok;                           // we allow 1 token pushback
+                return ret;
+            }
+            if ( ret == null ) {
+                ret = tok;
+            } else {
+                ret = ret + " " + tok;
+            }
+            tok = nextToken();
+        }
+        return ret;
+    }
+
     void parseInternal(DuccProperties props)
         throws IOException,
         IllegalConfigurationException
     {
-//         System.out.println("Parsing nodepool " + name);
-//         if ( parent == null ) {
-//             System.out.println("     <base>");
-//         } else {
-//             System.out.println("     Inherits from " + parent);
-//         }
-
         String tok = null;
         while ( (tok = nextToken() ) != null ) {
+        		if ( tok.equals(";") ) continue;
             if ( tok.equals("}") ) return;
 
             String k = tok;
             if ( k.equals("{") ) {
                 throw new IllegalConfigurationException("Missing '}' near line " + lineno + " in " + config_file_name);
             }
-            String v = nextToken();
-            if ( v.equals("=") ) v = nextToken();     // (optionally allow k v  or k=v)
+
+            String v = consume();
 
             if ( v.equals("}") ) {
                 throw new IllegalConfigurationException("Missing value near line " + lineno + " in " + config_file_name);
@@ -300,10 +339,10 @@ public class NodeConfiguration
                 throw new IllegalConfigurationException("Missing '}' near line " + lineno + " in " + config_file_name);
             }
 
-            if ( props.getProperty(k) == null ) {
+            if ( ! props.containsKey(k) ) {
                 props.put(k, v);
             } else {
-                throw new IllegalConfigurationException("Duplicate property near line " + lineno + " in " + config_file_name + ": " + k);
+                throw new IllegalConfigurationException("Duplicate property not allowed near line " + lineno + " in " + config_file_name + ": " + k);
             }
         }
         return;
@@ -313,12 +352,6 @@ public class NodeConfiguration
         throws IOException,
         IllegalConfigurationException
     {
-//         System.out.println("Parsing nodepool " + name);
-//         if ( parent == null ) {
-//             System.out.println("     <base>");
-//         } else {
-//             System.out.println("     Inherits from " + parent);
-//         }
 
         if ( firstNodepool == null ) {
             firstNodepool = name;
@@ -369,6 +402,23 @@ public class NodeConfiguration
         if ( parent != null ) {
             ret.put("parent", parent);
         }
+        
+        parseInternal(ret);
+
+        return ret;
+    }
+
+    // UIMA-4275
+    DuccProperties parseUser(String name, String parent)
+        throws IOException,
+        IllegalConfigurationException
+    {
+        DuccProperties ret = new DuccProperties();
+        ret.put("type", "user");
+        ret.put("name", name);
+        if ( parent != null ) {
+            ret.put("parent", parent);
+        }
 
         parseInternal(ret);
 
@@ -381,6 +431,8 @@ public class NodeConfiguration
     {
         String tok;
         while ( (tok = nextToken()) != null ) {
+
+            if ( tok.equals(";") ) continue;  // logical EOL, ignore here
             String type = tok;                // stanza type
 
             String name = nextToken();        // stanza name
@@ -402,6 +454,7 @@ public class NodeConfiguration
             
             if ( type.equals("Nodepool") ) nodepools.put(name, parseNodepool(name, parent));
             if ( type.equals("Class") )    classes.add(parseClass(name, parent));
+            if ( type.equals("User") )     usermap.put(name, parseUser(name, parent));       // UIMA-4275
         }
         return null;
     }
@@ -434,7 +487,7 @@ public class NodeConfiguration
                     throw new IllegalConfigurationException("Missing required property " + k + " in " + type + " " + name);
                 }
 
-                if ( vm.equals("<optional>") ) {     // its optional but there is no meaningful default
+                if ( vm.contains("<optional>") ) {     // its optional but there is no meaningful default
                     continue;
                 }
 
@@ -654,7 +707,12 @@ public class NodeConfiguration
 
         BufferedReader br = null;
         try {
-            nodefile = resolve(nodefile);
+            String tnodefile = resolve(nodefile);
+            if ( tnodefile == null ) {
+                throw new IllegalConfigurationException("File " + nodefile + " does not exist.");
+            }
+            nodefile = tnodefile;
+
             br = new BufferedReader(new FileReader(nodefile));
             String node = "";
             while ( (node = br.readLine()) != null ) {
@@ -807,6 +865,40 @@ public class NodeConfiguration
     }
 
     /**
+     * Make sure any classes specified in the user registry exist and specify a number.
+     * Expected format: 
+     *     max_allotment.classname = number
+     *
+     * UIMA-4275
+     */
+    void verifyUserLimits()
+        throws IllegalConfigurationException
+    {
+        for (Object o : usermap.keySet() ) {
+            DuccProperties dp = usermap.get(o);
+            for ( Object l : dp.keySet() ) {
+
+                if ( defaultUser.containsKey(l) ) continue;
+
+                String k = (String) l;
+                String val = ((String) dp.get(k)).trim();
+                if ( k.indexOf(".") <= 0 ) {
+                    throw new IllegalConfigurationException("User " + o + ": allotment incorrectly specified, cannot determine class. " + k + " = " + val);
+                }
+                String[] tmp = k.split("\\.");
+                if ( ! clmap.containsKey(tmp[1]) ) {
+                    throw new IllegalConfigurationException("User " + o + ": allotment incorrectly specified, class not defined. " + k + " = " + val);
+                }
+                try { 
+                    Integer.parseInt(val);
+                } catch ( NumberFormatException e ) {
+                    throw new IllegalConfigurationException("User " + o + ": allotment incorrectly specified, value not a number. " + k + " = " + val);
+                }
+            }
+        }
+    }
+
+    /**
      * Read all the node pool files recursively down from the properties file (p) and
      * create a map node -> nodepoolname checking for duplicates.
      * @param p      Properties file representing a nodepool
@@ -878,6 +970,11 @@ public class NodeConfiguration
         return clmap;
     }
 
+    public Map<String, DuccProperties> getUsers()
+    {
+    		return usermap;
+    }
+    
     public void readConfiguration()
         throws FileNotFoundException, 
         IOException,
@@ -888,14 +985,28 @@ public class NodeConfiguration
         }
         defaultDomain = getDomainName();
 
-        config_file_name = resolve(config_file_name);
-        in = new BufferedReader(new FileReader(config_file_name));
+        try {
+            String tconfig_file_name = resolve(config_file_name);
+            if ( tconfig_file_name == null ) {
+                throw new IllegalConfigurationException("File " + config_file_name + " does not exist.");
+            }
+            config_file_name = tconfig_file_name;
+            in = new BufferedReader(new FileReader(config_file_name));
+            
+            parseStanzas();
+            doClassInheritance();
+            connectNodepools();
+            readNpNodes(defaultDomain);
+            checkForCycles();
+        } finally {
+            if ( in != null ) {
+                try { in.close();
+                } catch (IOException e) {
+                    // nothing ... who cares if we got this far, and what can we do anyway ?
+                }
+            }
+        }
 
-        parseStanzas();
-        doClassInheritance();
-        connectNodepools();
-        readNpNodes(defaultDomain);
-        checkForCycles();
         //for (DuccProperties p : independentNodepools) {      // walk the tree and read the node files
         //    readNpNodes(p, defaultDomain);
         //}
@@ -919,11 +1030,24 @@ public class NodeConfiguration
             throw new IllegalConfigurationException(msg);
         }
 
+
+        // UIMA-4275 if classes are ok do the user registry, if it exists
         try {
-            in.close();
-        } catch (IOException e) {
-            // nothing ... who cares if we got this far, and what can we do anyway ?
+            ducc_users = resolve(ducc_users);
+            if ( ducc_users != null ) {
+                in = new BufferedReader(new FileReader(ducc_users));
+                parseStanzas();
+                verifyUserLimits();    // insure the specified classes exist
+            }
+        } finally {
+            if ( in != null ) {
+                try { in.close();
+                } catch (IOException e) {
+                    // nothing ... who cares if we got this far, and what can we do anyway ?
+                }
+            }
         }
+
     }
 
     String formatNodes(Map<String, String> nodes, int indent)
@@ -1009,8 +1133,11 @@ public class NodeConfiguration
     void printClass(DuccProperties cl)
     {        
         String methodName = "printClass";
-        logInfo(methodName, "Class " +       cl.get("name"));
+        logInfo(methodName, "Class " +      cl.get("name"));
         printProperty("Policy",             cl.get("policy"));
+        if ( cl.get("policy").equals("FAIR_SHARE") ) {
+            printProperty("hostile",        cl.get("hostile"));
+        }
         printProperty("Nodepool",           cl.get("nodepool"));
         printProperty("Priority",           cl.get("priority"));
         printProperty("Weight",             cl.get("weight"));
@@ -1023,6 +1150,22 @@ public class NodeConfiguration
         printProperty("Max Processes",      cl.get("max-processes"));
         printProperty("Max Machines",       cl.get("max-machines"));
         printProperty("Enforce Memory Size",cl.get("enforce"));
+        printProperty("Authorized Users"   ,cl.get("users"));
+
+        logInfo(methodName, "");
+    }
+
+    void printUser(DuccProperties cl)
+    {        
+        String methodName = "printUser";
+        logInfo(methodName, "User "  +      cl.get("name"));
+
+        for (Object o : cl.keySet() ) {
+        		String k = (String) o;
+            if ( k.startsWith("max_allotment.") ) {
+                printProperty(k, cl.get(k));
+            }
+        }
 
         logInfo(methodName, "");
     }
@@ -1046,6 +1189,12 @@ public class NodeConfiguration
         for ( DuccProperties p : class_set ) {
             printClass(p);
         }
+
+        DuccProperties[] user_set = usermap.values().toArray(new DuccProperties[usermap.size()]);
+        Arrays.sort(user_set, new UserSorter());
+        for ( DuccProperties p : user_set ) {
+            printUser(p);
+        }
     }
 
     static void usage(String msg)
@@ -1055,10 +1204,11 @@ public class NodeConfiguration
             System.out.println("");
         }
         System.out.println("Usage:");
-        System.out.println("    NodeConfiguration [-c class-definitions] [-n nodefile] [-p] <configfile>");
+        System.out.println("    NodeConfiguration [-c class-definitions] [-n nodefile] [-u userfile] [-p] <configfile>");
         System.out.println("Where:");
         System.out.println("    -c <class-definitions> is the class definition file, usually ducc.classes.");
         System.out.println("    -n <nodefile> is nodefile used with tye system, defaults to ducc.nodes");
+        System.out.println("    -u <userfile> is the user registry.");
         System.out.println("    -p Prints the parsed configuration, for verification.");
         System.out.println("    -? show this help.");
         System.out.println("");
@@ -1073,6 +1223,7 @@ public class NodeConfiguration
 
         boolean doprint = false;
         String nodefile = null;
+        String userfile = null;
         String config = null;
 
         int i = 0;
@@ -1091,6 +1242,12 @@ public class NodeConfiguration
                 continue;
             }
 
+            if ( args[i].equals("-u") ) {
+                userfile = args[i+1];
+                i++;
+                continue;
+            }
+
             if ( args[i].equals("-c") ) {
                 config = args[i+1];
                 i++;
@@ -1112,7 +1269,7 @@ public class NodeConfiguration
             usage("Nodefile not specified.");
         }
 
-        NodeConfiguration nc = new NodeConfiguration(config, nodefile, null);
+        NodeConfiguration nc = new NodeConfiguration(config, nodefile, userfile, null);
 
         int rc = 0;
         try {
@@ -1161,6 +1318,17 @@ public class NodeConfiguration
             return n1.compareTo(n2);
         }
     }
+
+    static public class UserSorter
+        implements Comparator<DuccProperties>
+    {
+        public int compare(DuccProperties u1, DuccProperties u2)
+        {
+            String n1 = u1.getProperty("name");
+            String n2 = u2.getProperty("name");
+            return n1.compareTo(n2);
+        }
+    }
 
 }
 

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java?rev=1664680&r1=1664679&r2=1664680&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java Fri Mar  6 17:11:37 2015
@@ -125,6 +125,7 @@ public class DuccPropertiesResolver {
     public static final String ducc_jd_startup_initialization_error_limit = "ducc.jd.startup.initialization.error.limit";
     
     public static final String ducc_rm_class_definitions = "ducc.rm.class.definitions";
+    public static final String ducc_rm_user_registry = "ducc.rm.user.registry"; // UIMA-4275
     public static final String ducc_rm_share_quantum = "ducc.rm.share.quantum";
     public static final String ducc_jd_share_quantum = "ducc.jd.share.quantum";
     

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java?rev=1664680&r1=1664679&r2=1664680&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java Fri Mar  6 17:11:37 2015
@@ -83,7 +83,7 @@ public class DuccSchedulerClasses {
         File file = new File(fileName);
         if ( lastModified != file.lastModified() ) {         // reread if it looks like it changed
             lastModified = file.lastModified();
-            nodeConfiguration = new NodeConfiguration(fileName, logger);
+            nodeConfiguration = new NodeConfiguration(fileName, null, null, logger); // UIMA-4275 use single common constructor
             lastModified = file.lastModified();
             nodeConfiguration.readConfiguration();
         }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/java/org/apache/uima/ducc/common/test/NodeConfigurationTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/java/org/apache/uima/ducc/common/test/NodeConfigurationTest.java?rev=1664680&r1=1664679&r2=1664680&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/java/org/apache/uima/ducc/common/test/NodeConfigurationTest.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/java/org/apache/uima/ducc/common/test/NodeConfigurationTest.java Fri Mar  6 17:11:37 2015
@@ -40,6 +40,10 @@ public class NodeConfigurationTest
         "test6",  "Toplevel NP, parent is not --default--"     , "0",      // pass
         "test7",  "Class references non-existent NP"           , "1",      // fail
         "test8",  "Two NPs with no node file specified"        , "1",      // fail
+        "test9",  "max_allotment.class Incorrectly specified"  , "1",      // fail
+        "test10", "Memory limit not an integer"                , "1",      // fail
+        "test11", "Parseing userlist in class definitions"     , "0",      // pass
+        "test12", "User max references invalid class"          , "1",      // fail
     };
 
     List<String> successes = new ArrayList<String>();
@@ -58,7 +62,8 @@ public class NodeConfigurationTest
         System.getProperties().setProperty("DUCC_HOME", resolve(test));
         String nodefile = "ducc.nodes";
         String config   = "ducc.classes";
-        NodeConfiguration nc = new NodeConfiguration(config, nodefile, null);
+        String users    = "ducc.users";
+        NodeConfiguration nc = new NodeConfiguration(config, nodefile, users, null);
 
         int rc = 0;
         try {

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test1/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test1/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test1/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test1/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.classes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.classes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.classes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.classes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,90 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+
+# The first nodepool is the default nodepool which contains defaults for *all* nodepools.  
+# There need not be any subpools of global or even nodes.  Any node not otherwise assigned
+# to a nodepool is given to --default-- when it checks in.
+
+# Specify 'default = true' in a fair-share class for job default
+# Specify 'default = true' in a non-fair-share class for reservation default
+# Specify the alternative debug class as 'debug = class'.  No default debug, use
+#    inheritance as shown below
+
+# Test: Everything correct and straighforward, 4 levels of nesting
+Nodepool --default--  { }
+Nodepool npA            { nodefile npA.nodes ; parent --default-- }
+Nodepool npB            { nodefile npB.nodes ; parent --default-- }
+Nodepool npC            { nodefile npC.nodes ; parent npA }
+Nodepool npD            { nodefile npD.nodes ; parent npC }
+Nodepool npE            { nodefile npE.nodes ; parent npB }
+
+# Nnodepools may be defined with additional Nodepool statements.  For example here we define
+# a nodpool as a subpool of the default:
+#    Nodepool  subpool1 { parent = --default-- }
+# Here we define a second 'top-level' nodepool with no parent, consisting of the nodes defined
+# in the file toplevel1.nodes.
+#    Nodepool  toplevel1 { nodefile = toplevel1.nodes }
+
+
+# --------------------- Fair share definitions ---------------
+# The 'fair-base' class is a template for other fair-share classes.  Classes derived
+# from here inherit all its properties.  fair-base is identified as a template because
+# it has the property 'abstract = true'
+#
+
+Class fair-base {
+      policy = FAIR_SHARE
+      nodepool = --default--
+      priority = 10
+      weight = 100
+      abstract = true
+}
+
+# These classes are derived from fair-base, and override the 'weight' property.  As well
+# class 'normal' is designated as the default FAIR_SHARE class
+Class normal         fair-base  { weight = 100; default = true }
+Class normal-npA     fair-base  { weight = 100; nodepool = npA }
+Class normal-npB     fair-base  { weight = 100; nodepool = npB }
+Class normal-npC     fair-base  { weight = 100; nodepool = npC }
+Class normal-npD     fair-base  { weight = 100; nodepool = npD }
+Class normal-npE     fair-base  { weight = 100; nodepool = npE }
+
+# --------------------- Fixed share definitions ---------------
+Class fixed-base {
+      policy = FIXED_SHARE
+      nodepool = --default--
+      priority = 5
+      abstract = true
+      max-processes = 10
+}
+
+Class fixed      fixed-base  { default = true}
+Class JobDriver  fixed-base  { priority = 9 }
+
+# --------------------- Reserve definitions ---------------
+Class reserve-base {
+      policy = RESERVE
+      nodepool = --default--
+      priority = 1
+      abstract = true
+      max-machines = 10
+}
+ 
+Class reserve     reserve-base { default = true }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,27 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn
+agentn-13
+agentn-14
+agentn-15
+agentn-16
+agentn-17
+import npA.nodes
+import npB.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = bob
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npA.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npA.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npA.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npA.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-1
+agentn-2
+agentn-3
+agentn-4
+agentn-5
+import npC.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npB.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npB.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npB.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npB.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-20
+agentn-21
+agentn-22
+agentn-23
+agentn-24
+import npE.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npC.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npC.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npC.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npC.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,24 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-6
+agentn-7
+agentn-8
+agentn-9
+import npD.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npD.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npD.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npD.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npD.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-10
+agentn-11
+agentn-12

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npE.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npE.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npE.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test10/resources/npE.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-18
+agentn-19
+

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.classes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.classes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.classes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.classes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,91 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+
+# The first nodepool is the default nodepool which contains defaults for *all* nodepools.  
+# There need not be any subpools of global or even nodes.  Any node not otherwise assigned
+# to a nodepool is given to --default-- when it checks in.
+
+# Specify 'default = true' in a fair-share class for job default
+# Specify 'default = true' in a non-fair-share class for reservation default
+# Specify the alternative debug class as 'debug = class'.  No default debug, use
+#    inheritance as shown below
+
+# Test: Everything correct and straighforward, 4 levels of nesting
+Nodepool --default--  { }
+Nodepool npA            { nodefile npA.nodes ; parent --default-- }
+Nodepool npB            { nodefile npB.nodes ; parent --default-- }
+Nodepool npC            { nodefile npC.nodes ; parent npA }
+Nodepool npD            { nodefile npD.nodes ; parent npC }
+Nodepool npE            { nodefile npE.nodes ; parent npB }
+
+# Nnodepools may be defined with additional Nodepool statements.  For example here we define
+# a nodpool as a subpool of the default:
+#    Nodepool  subpool1 { parent = --default-- }
+# Here we define a second 'top-level' nodepool with no parent, consisting of the nodes defined
+# in the file toplevel1.nodes.
+#    Nodepool  toplevel1 { nodefile = toplevel1.nodes }
+
+
+# --------------------- Fair share definitions ---------------
+# The 'fair-base' class is a template for other fair-share classes.  Classes derived
+# from here inherit all its properties.  fair-base is identified as a template because
+# it has the property 'abstract = true'
+#
+
+Class fair-base {
+      policy = FAIR_SHARE
+      nodepool = --default--
+      priority = 10
+      weight = 100
+      users = user1 user2, user3
+      abstract = true
+}
+
+# These classes are derived from fair-base, and override the 'weight' property.  As well
+# class 'normal' is designated as the default FAIR_SHARE class
+Class normal         fair-base  { weight = 100; default = true }
+Class normal-npA     fair-base  { weight = 100; nodepool = npA }
+Class normal-npB     fair-base  { weight = 100; nodepool = npB; users user4, user5 user6 }
+Class normal-npC     fair-base  { weight = 100; nodepool = npC }
+Class normal-npD     fair-base  { weight = 100; nodepool = npD }
+Class normal-npE     fair-base  { weight = 100; nodepool = npE }
+
+# --------------------- Fixed share definitions ---------------
+Class fixed-base {
+      policy = FIXED_SHARE
+      nodepool = --default--
+      priority = 5
+      abstract = true
+      max-processes = 10
+}
+
+Class fixed      fixed-base  { default = true }
+Class JobDriver  fixed-base  { priority = 9 }
+
+# --------------------- Reserve definitions ---------------
+Class reserve-base {
+      policy = RESERVE
+      nodepool = --default--
+      priority = 1
+      abstract = true
+      max-machines = 10
+}
+ 
+Class reserve     reserve-base { default = true }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,27 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn
+agentn-13
+agentn-14
+agentn-15
+agentn-16
+agentn-17
+import npA.nodes
+import npB.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 22
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npA.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npA.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npA.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npA.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-1
+agentn-2
+agentn-3
+agentn-4
+agentn-5
+import npC.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npB.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npB.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npB.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npB.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-20
+agentn-21
+agentn-22
+agentn-23
+agentn-24
+import npE.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npC.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npC.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npC.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npC.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,24 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-6
+agentn-7
+agentn-8
+agentn-9
+import npD.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npD.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npD.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npD.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npD.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-10
+agentn-11
+agentn-12

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npE.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npE.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npE.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test11/resources/npE.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-18
+agentn-19
+

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.classes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.classes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.classes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.classes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,90 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+
+# The first nodepool is the default nodepool which contains defaults for *all* nodepools.  
+# There need not be any subpools of global or even nodes.  Any node not otherwise assigned
+# to a nodepool is given to --default-- when it checks in.
+
+# Specify 'default = true' in a fair-share class for job default
+# Specify 'default = true' in a non-fair-share class for reservation default
+# Specify the alternative debug class as 'debug = class'.  No default debug, use
+#    inheritance as shown below
+
+# Test: Everything correct and straighforward, 4 levels of nesting
+Nodepool --default--  { }
+Nodepool npA            { nodefile npA.nodes ; parent --default-- }
+Nodepool npB            { nodefile npB.nodes ; parent --default-- }
+Nodepool npC            { nodefile npC.nodes ; parent npA }
+Nodepool npD            { nodefile npD.nodes ; parent npC }
+Nodepool npE            { nodefile npE.nodes ; parent npB }
+
+# Nnodepools may be defined with additional Nodepool statements.  For example here we define
+# a nodpool as a subpool of the default:
+#    Nodepool  subpool1 { parent = --default-- }
+# Here we define a second 'top-level' nodepool with no parent, consisting of the nodes defined
+# in the file toplevel1.nodes.
+#    Nodepool  toplevel1 { nodefile = toplevel1.nodes }
+
+
+# --------------------- Fair share definitions ---------------
+# The 'fair-base' class is a template for other fair-share classes.  Classes derived
+# from here inherit all its properties.  fair-base is identified as a template because
+# it has the property 'abstract = true'
+#
+
+Class fair-base {
+      policy = FAIR_SHARE
+      nodepool = --default--
+      priority = 10
+      weight = 100
+      abstract = true
+}
+
+# These classes are derived from fair-base, and override the 'weight' property.  As well
+# class 'normal' is designated as the default FAIR_SHARE class
+Class normal         fair-base  { weight = 100; default = true }
+Class normal-npA     fair-base  { weight = 100; nodepool = npA }
+Class normal-npB     fair-base  { weight = 100; nodepool = npB }
+Class normal-npC     fair-base  { weight = 100; nodepool = npC }
+Class normal-npD     fair-base  { weight = 100; nodepool = npD }
+Class normal-npE     fair-base  { weight = 100; nodepool = npE }
+
+# --------------------- Fixed share definitions ---------------
+Class fixed-base {
+      policy = FIXED_SHARE
+      nodepool = --default--
+      priority = 5
+      abstract = true
+      max-processes = 10
+}
+
+Class fixed      fixed-base  { default = true}
+Class JobDriver  fixed-base  { priority = 9 }
+
+# --------------------- Reserve definitions ---------------
+Class reserve-base {
+      policy = RESERVE
+      nodepool = --default--
+      priority = 1
+      abstract = true
+      max-machines = 10
+}
+ 
+Class reserve     reserve-base { default = true }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,27 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn
+agentn-13
+agentn-14
+agentn-15
+agentn-16
+agentn-17
+import npA.nodes
+import npB.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.notaclass     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npA.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npA.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npA.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npA.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-1
+agentn-2
+agentn-3
+agentn-4
+agentn-5
+import npC.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npB.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npB.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npB.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npB.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,25 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-20
+agentn-21
+agentn-22
+agentn-23
+agentn-24
+import npE.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npC.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npC.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npC.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npC.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,24 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-6
+agentn-7
+agentn-8
+agentn-9
+import npD.nodes

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npD.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npD.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npD.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npD.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-10
+agentn-11
+agentn-12

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npE.nodes
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npE.nodes?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npE.nodes (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test12/resources/npE.nodes Fri Mar  6 17:11:37 2015
@@ -0,0 +1,22 @@
+# -----------------------------------------------------------------------
+# 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.
+# -----------------------------------------------------------------------
+
+agentn-18
+agentn-19
+

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test2/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test2/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test2/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test2/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test3/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test3/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test3/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test3/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test4/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test4/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test4/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test4/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test5/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test5/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test5/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test5/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test6/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test6/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test6/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test6/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test7/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test7/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test7/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test7/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test8/resources/ducc.users
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test8/resources/ducc.users?rev=1664680&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test8/resources/ducc.users (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/test/resources/node_configuration_data/test8/resources/ducc.users Fri Mar  6 17:11:37 2015
@@ -0,0 +1,10 @@
+User user1 {
+    max_allotment.normal     = 50
+    max_allotment.normal-npA = 17
+}
+
+User user2 {
+    max_allotment.normal = 200
+    max_allotment.fixed = 72
+
+}