Author: degenaro
Date: Tue Nov 11 13:54:14 2014
New Revision: 1638094

URL: http://svn.apache.org/r1638094
Log:
UIMA-4069 Redesign of JD toward the main goal of classpath separation for 
container (system) code.

"is process operating" support with JUnit test cases.

Added:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java
   (with props)
Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Standardize.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/Dispatcher.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestDispatcher.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestSuite.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Standardize.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Standardize.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Standardize.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Standardize.java
 Tue Nov 11 13:54:14 2014
@@ -21,6 +21,8 @@ package org.apache.uima.ducc.container.c
 public class Standardize {
 
        public enum Label {
+               node,
+               pid,
                crFetches,
                crTotal,
                preemptions,

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java?rev=1638094&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java
 Tue Nov 11 13:54:14 2014
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.container.jd;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.uima.ducc.container.common.ContainerLogger;
+import org.apache.uima.ducc.container.common.IContainerLogger;
+import org.apache.uima.ducc.container.common.IEntityId;
+import org.apache.uima.ducc.container.common.MessageBuffer;
+import org.apache.uima.ducc.container.common.Standardize;
+import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerIdentity;
+import org.apache.uima.ducc.container.jd.wi.IWorkItem;
+
+public class JobDriverHelper {
+
+       private static IContainerLogger logger = 
ContainerLogger.getLogger(JobDriverHelper.class, 
IContainerLogger.Component.JD.name());
+       
+       private static JobDriverHelper instance = new JobDriverHelper();
+       
+       public static JobDriverHelper getInstance() {
+               return instance;
+       }
+       
+       public HashMap<String,ArrayList<String>> getMapOperating() {
+               String location = "getMapOperating";
+               HashMap<String,ArrayList<String>> mapOperating = new 
HashMap<String, ArrayList<String>>();
+               JobDriver jd = JobDriver.getInstance();
+               ConcurrentHashMap<IRemoteWorkerIdentity, IWorkItem> map = 
jd.getMap();
+               for(Entry<IRemoteWorkerIdentity, IWorkItem> entry : 
map.entrySet()) {
+                       IRemoteWorkerIdentity rwi = entry.getKey();
+                       String node = rwi.getNode();
+                       String pid = ""+rwi.getPid();
+                       ArrayList<String> list = null;
+                       if(!mapOperating.containsKey(node)) {
+                               list = new ArrayList<String>();
+                               mapOperating.put(node,list);
+                       }
+                       else {
+                               list = mapOperating.get(node);
+                       }
+                       if(!list.contains(pid)) {
+                               list.add(pid);
+                               MessageBuffer mb = new MessageBuffer();
+                               mb.append(Standardize.Label.node.get()+node);
+                               mb.append(Standardize.Label.pid.get()+pid);
+                               logger.debug(location, IEntityId.null_id, mb);
+                       }
+               }
+               return mapOperating;
+       }
+}

Propchange: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/JobDriverHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/Dispatcher.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/Dispatcher.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/Dispatcher.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/Dispatcher.java
 Tue Nov 11 13:54:14 2014
@@ -29,6 +29,7 @@ import org.apache.uima.ducc.container.co
 import org.apache.uima.ducc.container.common.fsm.iface.IEvent;
 import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
 import org.apache.uima.ducc.container.jd.JobDriver;
+import org.apache.uima.ducc.container.jd.JobDriverHelper;
 import org.apache.uima.ducc.container.jd.cas.CasManagerStats;
 import org.apache.uima.ducc.container.jd.cas.CasManager;
 import org.apache.uima.ducc.container.jd.fsm.wi.ActionData;
@@ -60,6 +61,7 @@ public class Dispatcher {
                try {
                        IOperatingInfo oi = new OperatingInfo();
                        JobDriver jd = JobDriver.getInstance();
+                       JobDriverHelper jdh = JobDriverHelper.getInstance();
                        CasManager cm = jd.getCasManager();
                        CasManagerStats cms = cm.getCasManagerStats();
                        IWorkItemStatistics wis = jd.getWorkItemStatistics();
@@ -79,6 +81,7 @@ public class Dispatcher {
                        oi.setWorkItemRunningMillisMin(rwis.getMillisMin());
                        oi.setWorkItemRunningMillisMax(rwis.getMillisMax());
                        
oi.setWorkItemTodMostRecentStart(rwis.getTodMostRecentStart());
+                       oi.setMapOperating(jdh.getMapOperating());
                        MessageBuffer mb = new MessageBuffer();
                        
mb.append(Standardize.Label.crTotal.get()+oi.getWorkItemCrTotal());
                        
mb.append(Standardize.Label.crFetches.get()+oi.getWorkItemCrFetches());

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/iface/IOperatingInfo.java
 Tue Nov 11 13:54:14 2014
@@ -18,6 +18,9 @@
 */
 package org.apache.uima.ducc.container.jd.mh.iface;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+
 public interface IOperatingInfo {
 
        public void setWorkItemCrTotal(int value);
@@ -80,4 +83,9 @@ public interface IOperatingInfo {
        
        public void setKillJob();
        public boolean isKillJob();
+       
+       //
+       
+       public void setMapOperating(HashMap<String,ArrayList<String>> value);
+       public HashMap<String,ArrayList<String>> getMapOperating();
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/mh/impl/OperatingInfo.java
 Tue Nov 11 13:54:14 2014
@@ -18,6 +18,9 @@
 */
 package org.apache.uima.ducc.container.jd.mh.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+
 import org.apache.uima.ducc.container.jd.mh.iface.IOperatingInfo;
 
 public class OperatingInfo implements IOperatingInfo {
@@ -44,6 +47,8 @@ public class OperatingInfo implements IO
        
        private boolean killJob = false;
        
+       private HashMap<String,ArrayList<String>> mapOperating = null;
+       
        @Override
        public void setWorkItemCrTotal(int value) {
                crTotal = value;
@@ -219,4 +224,14 @@ public class OperatingInfo implements IO
                return killJob;
        }
 
+       @Override
+       public void setMapOperating(HashMap<String, ArrayList<String>> value) {
+               mapOperating = value;
+       }
+
+       @Override
+       public HashMap<String, ArrayList<String>> getMapOperating() {
+               return mapOperating;
+       }
+
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestDispatcher.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestDispatcher.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestDispatcher.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestDispatcher.java
 Tue Nov 11 13:54:14 2014
@@ -23,6 +23,9 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map.Entry;
 import java.util.Random;
 
 import org.apache.uima.ducc.container.jd.JobDriver;
@@ -144,7 +147,7 @@ public class TestDispatcher extends ATes
        // multiple node:pid:tid
        
        @Test
-       public void test_02() {
+       public void test_02a() {
                if(isDisabled(this.getClass().getName())) {
                        return;
                }
@@ -197,6 +200,64 @@ public class TestDispatcher extends ATes
                }
        }
        
+       // multiple node:pid:tid
+       
+       @Test
+       public void test_02b() {
+               if(isDisabled(this.getClass().getName())) {
+                       return;
+               }
+               try {
+                       URL urlXml = this.getClass().getResource("/CR100.xml");
+                       File file = new File(urlXml.getFile());
+                       String crXml = file.getAbsolutePath();
+                       String crCfg = null;
+                       IJobDriverConfig jdCfg = new JobDriverConfig();
+                       jdCfg.setUserClasspath(Utilities.userCP);
+                       jdCfg.setCrXml(crXml);
+                       jdCfg.setCrCfg(crCfg);
+                       JobDriver.setInstance(jdCfg);
+                       int size = JobDriver.getInstance().getMap().size();
+                       debug("map size:"+size);
+                       Dispatcher dispatcher = new Dispatcher();
+                       ThreadInfoFactory tif = new ThreadInfoFactory(200,10,1);
+                       ThreadInfo ti = tif.getRandom();
+                       debug("random:"+ti.toKey());
+                       int casNo = 1;
+                       IMetaCas metaCasPrevious = null;
+                       IMetaCas metaCas = 
transGet(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
+                       assertTrue(metaCas != null);
+                       IOperatingInfo oi = dispatcher.handleGetOperatingInfo();
+                       while(oi.getWorkItemCrFetches() < 100) {
+                               if(metaCas != null) {
+                                       
transAck(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
+                                       
//transEnd(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
+                                       casNo++;
+                                       metaCasPrevious = metaCas;
+                                       assertTrue(metaCasPrevious != null);
+                               }
+                               ti = tif.getRandom();
+                               debug("random:"+ti.toKey());
+                               metaCas = 
transGet(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
+                               oi = dispatcher.handleGetOperatingInfo();
+                       }
+                       assertTrue(oi.getWorkItemCrFetches() == 100);
+                       asExpected("CASes fetched count == 100");
+                       int count = 0;
+                       HashMap<String, ArrayList<String>> mapOperating = 
oi.getMapOperating();
+                       for(Entry<String, ArrayList<String>> entry : 
mapOperating.entrySet()) {
+                               ArrayList<String> list = entry.getValue();
+                               count = count + list.size();
+                       }
+                       assertTrue(count == 100);
+                       asExpected("Map operating count == 100");
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail("Exception");
+               }
+       }
+       
        // multiple node:pid:tid with preemptions
        
        @Test

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestSuite.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestSuite.java?rev=1638094&r1=1638093&r2=1638094&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestSuite.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/test/java/org/apache/uima/ducc/container/jd/test/TestSuite.java
 Tue Nov 11 13:54:14 2014
@@ -23,6 +23,8 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
 
 import org.apache.uima.ducc.container.jd.JobDriverException;
 import org.apache.uima.ducc.container.jd.cas.CasManager;
@@ -382,6 +384,17 @@ public class TestSuite extends ATest {
                assertTrue(oi.getWorkItemRunningMillisMin() == 1001);
                oi.setWorkItemRunningMillisMax(2001);
                assertTrue(oi.getWorkItemRunningMillisMax() == 2001);
+               ArrayList<String> pids01 = new ArrayList<String>();
+               pids01.add("011");
+               pids01.add("012");
+               HashMap<String,ArrayList<String>> map = new 
HashMap<String,ArrayList<String>>();
+               String mapKey = "node01";
+               map.put("node01", pids01);
+               oi.setMapOperating(map);
+               HashMap<String,ArrayList<String>> mapOperating = 
oi.getMapOperating();
+               assertTrue(mapOperating.size() == 1);
+               ArrayList<String> list = mapOperating.get(mapKey);
+               assertTrue(list.size() == 2);
        }
 
 }


Reply via email to