You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2014/11/11 14:54:15 UTC

svn commit: r1638094 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-container/src: main/java/org/apache/uima/ducc/container/common/ main/java/org/apache/uima/ducc/container/jd/ main/java/org/apache/uima/ducc/container/jd/mh/ main/java/org/apache/uima/duc...

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);
 	}
 
 }