Author: degenaro
Date: Tue Nov  4 18:18:38 2014
New Revision: 1636674

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

WorkItem statistics: Finished min/max/avg; Running min/max

Added:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Assertion.java
   (with props)
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IRunningWorkItemStatistics.java
   (with props)
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/RunningWorkItemStatistics.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/fsm/wi/ActionEnd.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.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/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItemStatistics.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/Tod.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItemStatistics.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

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Assertion.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Assertion.java?rev=1636674&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Assertion.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/Assertion.java
 Tue Nov  4 18:18:38 2014
@@ -0,0 +1,34 @@
+/*
+ * 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.common;
+
+import org.apache.uima.ducc.container.jd.JobDriver;
+
+public class Assertion {
+
+       private static IContainerLogger logger = 
ContainerLogger.getLogger(JobDriver.class, 
IContainerLogger.Component.JD.name());
+       
+       public static void nonNegative(long value) {
+               String location = "nonNegative";
+               if(value < 0) {
+                       logger.error(location, IEntityId.null_id, value);
+                       throw new RuntimeException();
+               }
+       }
+}

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

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -24,7 +24,11 @@ public class Standardize {
                crFetches,
                crTotal,
                preemptions,
-               clockedMillisMax,
+               finishedMillisMax,
+               finishedMillisMin,
+               finishedMillisAvg,
+               runningMillisMax,
+               runningMillisMin,
                state,
                event,
                curr,

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
 Tue Nov  4 18:18:38 2014
@@ -60,6 +60,7 @@ public class ActionEnd implements IActio
                                
mb.append(Standardize.Label.seqNo.get()+metaCas.getSystemKey());
                                
mb.append(Standardize.Label.remote.get()+rwi.toString());
                                logger.info(location, IEntityId.null_id, 
mb.toString());
+                               wi.resetTods();
                        }
                        else {MessageBuffer mb = new MessageBuffer();
                                mb.append("No CAS found for processing");

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionGet.java
 Tue Nov  4 18:18:38 2014
@@ -61,6 +61,7 @@ public class ActionGet implements IActio
                        IEvent event = null;
                        //
                        if(metaCas != null) {
+                               wi.resetTods();
                                wi.setTodGet();
                                event = WiFsm.CAS_Available;
                                MessageBuffer mb = new MessageBuffer();

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -38,8 +38,10 @@ import org.apache.uima.ducc.container.jd
 import org.apache.uima.ducc.container.jd.mh.iface.IProcessInfo;
 import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerIdentity;
 import org.apache.uima.ducc.container.jd.mh.impl.OperatingInfo;
+import org.apache.uima.ducc.container.jd.wi.IRunningWorkItemStatistics;
 import org.apache.uima.ducc.container.jd.wi.IWorkItem;
 import org.apache.uima.ducc.container.jd.wi.IWorkItemStatistics;
+import org.apache.uima.ducc.container.jd.wi.RunningWorkItemStatistics;
 import org.apache.uima.ducc.container.jd.wi.WorkItem;
 import org.apache.uima.ducc.container.net.iface.IMetaCas;
 import org.apache.uima.ducc.container.net.iface.IMetaCasTransaction;
@@ -61,15 +63,24 @@ public class Dispatcher {
                        CasManager cm = jdc.getCasManager();
                        CasManagerStats cms = cm.getCasManagerStats();
                        IWorkItemStatistics wis = jdc.getWorkItemStatistics();
+                       IRunningWorkItemStatistics rwis = 
RunningWorkItemStatistics.getCurrent();
                        oi.setWorkItemCrTotal(cms.getCrTotal());
                        oi.setWorkItemCrFetches(cms.getCrGets());
                        oi.setWorkItemPreemptions(cms.getNumberOfPreemptions());
-                       oi.setWorkItemClockedMillisMax(wis.getMillisMax());
+                       oi.setWorkItemFinishedMillisMin(wis.getMillisMin());
+                       oi.setWorkItemFinishedMillisMax(wis.getMillisMax());
+                       oi.setWorkItemFinishedMillisAvg(wis.getMillisAvg());
+                       oi.setWorkItemRunningMillisMin(rwis.getMillisMin());
+                       oi.setWorkItemRunningMillisMax(rwis.getMillisMax());
                        MessageBuffer mb = new MessageBuffer();
                        
mb.append(Standardize.Label.crTotal.get()+oi.getWorkItemCrTotal());
                        
mb.append(Standardize.Label.crFetches.get()+oi.getWorkItemCrFetches());
                        
mb.append(Standardize.Label.preemptions.get()+oi.getWorkItemPreemptions());
-                       
mb.append(Standardize.Label.clockedMillisMax.get()+oi.getWorkItemClockedMillisMax());
+                       
mb.append(Standardize.Label.finishedMillisMin.get()+oi.getWorkItemFinishedMillisMin());
+                       
mb.append(Standardize.Label.finishedMillisMax.get()+oi.getWorkItemFinishedMillisMax());
+                       
mb.append(Standardize.Label.finishedMillisAvg.get()+oi.getWorkItemFinishedMillisAvg());
+                       
mb.append(Standardize.Label.runningMillisMin.get()+oi.getWorkItemRunningMillisMin());
+                       
mb.append(Standardize.Label.runningMillisMax.get()+oi.getWorkItemRunningMillisMax());
                        logger.debug(location, IEntityId.null_id, 
mb.toString());
                        retVal = oi;
                }

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -49,7 +49,20 @@ public interface IOperatingInfo {
        
        //
        
-       public void setWorkItemClockedMillisMax(long value);
-       public long getWorkItemClockedMillisMax();
+       public void setWorkItemFinishedMillisMin(long value);
+       public long getWorkItemFinishedMillisMin();
        
+       public void setWorkItemFinishedMillisMax(long value);
+       public long getWorkItemFinishedMillisMax();
+       
+       public void setWorkItemFinishedMillisAvg(long value);
+       public long getWorkItemFinishedMillisAvg();
+       
+       //
+       
+       public void setWorkItemRunningMillisMin(long value);
+       public long getWorkItemRunningMillisMin();
+       
+       public void setWorkItemRunningMillisMax(long value);
+       public long getWorkItemRunningMillisMax();
 }

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -32,7 +32,12 @@ public class OperatingInfo implements IO
        private int jpUserProcessingTimeouts = 0;
        private int jpUserProcessingErrorRetries = 0;
        
-       private long clockedMillisMax = 0;
+       private long finishedMillisMin = 0;
+       private long finishedMillisMax = 0;
+       private long finishedMillisAvg = 0;
+       
+       private long runningMillisMin = 0;
+       private long runningMillisMax = 0;
        
        @Override
        public void setWorkItemCrTotal(int value) {
@@ -125,13 +130,53 @@ public class OperatingInfo implements IO
        }
 
        @Override
-       public void setWorkItemClockedMillisMax(long value) {
-               clockedMillisMax = value;
+       public void setWorkItemFinishedMillisMin(long value) {
+               finishedMillisMin = value;
+       }
+
+       @Override
+       public long getWorkItemFinishedMillisMin() {
+               return finishedMillisMin;
+       }
+       
+       @Override
+       public void setWorkItemFinishedMillisMax(long value) {
+               finishedMillisMax = value;
+       }
+
+       @Override
+       public long getWorkItemFinishedMillisMax() {
+               return finishedMillisMax;
+       }
+
+       @Override
+       public void setWorkItemFinishedMillisAvg(long value) {
+               finishedMillisAvg = value;
+       }
+
+       @Override
+       public long getWorkItemFinishedMillisAvg() {
+               return finishedMillisAvg;
+       }
+
+       @Override
+       public void setWorkItemRunningMillisMin(long value) {
+               runningMillisMin = value;
+       }
+
+       @Override
+       public long getWorkItemRunningMillisMin() {
+               return runningMillisMin;
+       }
+
+       @Override
+       public void setWorkItemRunningMillisMax(long value) {
+               runningMillisMax = value;
        }
 
        @Override
-       public long getWorkItemClockedMillisMax() {
-               return clockedMillisMax;
+       public long getWorkItemRunningMillisMax() {
+               return runningMillisMax;
        }
 
 }

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IRunningWorkItemStatistics.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IRunningWorkItemStatistics.java?rev=1636674&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IRunningWorkItemStatistics.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IRunningWorkItemStatistics.java
 Tue Nov  4 18:18:38 2014
@@ -0,0 +1,28 @@
+/*
+ * 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.wi;
+
+public interface IRunningWorkItemStatistics {
+       
+       public void setMillisMax(long value);
+       public long getMillisMax();
+       
+       public void setMillisMin(long value);
+       public long getMillisMin();
+}

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

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItem.java
 Tue Nov  4 18:18:38 2014
@@ -29,13 +29,18 @@ public interface IWorkItem {
        public void setFsm(IFsm value);
        public IFsm getFsm();
        
+       public void resetTods();
+       
        public void setTodGet();
+       public void resetTodGet();
        public long getTodGet();
        
        public void setTodAck();
+       public void resetTodAck();
        public long getTodAck();
        
        public void setTodEnd();
+       public void resetTodEnd();
        public long getTodEnd();
        
        public long getMillisOperating();

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItemStatistics.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItemStatistics.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItemStatistics.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/IWorkItemStatistics.java
 Tue Nov  4 18:18:38 2014
@@ -22,4 +22,6 @@ public interface IWorkItemStatistics {
        
        public void ended(IWorkItem wi);
        public long getMillisMax();
+       public long getMillisMin();
+       public long getMillisAvg();
 }

Added: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/RunningWorkItemStatistics.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/RunningWorkItemStatistics.java?rev=1636674&view=auto
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/RunningWorkItemStatistics.java
 (added)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/RunningWorkItemStatistics.java
 Tue Nov  4 18:18:38 2014
@@ -0,0 +1,80 @@
+/*
+ * 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.wi;
+
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.uima.ducc.container.jd.JobDriverCommon;
+import org.apache.uima.ducc.container.jd.mh.iface.remote.IRemoteWorkerIdentity;
+
+public class RunningWorkItemStatistics implements IRunningWorkItemStatistics {
+
+       private long millisMin = 0;
+       private long millisMax = 0;
+       
+       public static RunningWorkItemStatistics getCurrent() {
+               long min = Long.MAX_VALUE;
+               long max = 0;
+               ConcurrentHashMap<IRemoteWorkerIdentity, IWorkItem> map = 
JobDriverCommon.getInstance().getMap();
+               for(Entry<IRemoteWorkerIdentity, IWorkItem> entry : 
map.entrySet()) {
+                       IWorkItem wi = entry.getValue();
+                       long time = wi.getMillisOperating();
+                       if(time > 0) {
+                               if(time > max) {
+                                       max = time;
+                               }
+                               if(time < min) {
+                                       min = time;
+                               }
+                       }
+               }
+               if(min > max) {
+                       min = max;
+               }
+               RunningWorkItemStatistics retVal = new 
RunningWorkItemStatistics(min,max);
+               return retVal;
+       }
+       
+       public RunningWorkItemStatistics(long min, long max) {
+               setMillisMin(min);
+               setMillisMax(max);
+       }
+       
+       @Override
+       public void setMillisMin(long value) {
+               millisMin = value;
+       }
+       
+       @Override
+       public long getMillisMin() {
+               return millisMin;
+       }
+       
+       @Override
+       public void setMillisMax(long value) {
+               millisMax = value;
+       }
+       
+       @Override
+       public long getMillisMax() {
+               return millisMax;
+       }
+       
+}

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

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/Tod.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/Tod.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/Tod.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/Tod.java
 Tue Nov  4 18:18:38 2014
@@ -18,15 +18,21 @@
 */
 package org.apache.uima.ducc.container.jd.wi;
 
+import java.util.concurrent.atomic.AtomicLong;
+
 public class Tod {
 
-       private long tod = 0;
+       private AtomicLong tod = new AtomicLong(0);
        
        public void set() {
-               tod = System.currentTimeMillis();
+               tod.set(System.currentTimeMillis());
+       }
+       
+       public void reset() {
+               tod.set(0);
        }
        
        public long get() {
-               return tod;
+               return tod.get();
        }
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItem.java
 Tue Nov  4 18:18:38 2014
@@ -18,7 +18,10 @@
 */
 package org.apache.uima.ducc.container.jd.wi;
 
+import org.apache.uima.ducc.container.common.Assertion;
 import org.apache.uima.ducc.container.common.fsm.iface.IFsm;
+import org.apache.uima.ducc.container.common.fsm.iface.IState;
+import org.apache.uima.ducc.container.jd.fsm.wi.WiFsm;
 import org.apache.uima.ducc.container.net.iface.IMetaCas;
 
 public class WorkItem implements IWorkItem {
@@ -56,11 +59,23 @@ public class WorkItem implements IWorkIt
        }
 
        @Override
+       public void resetTods() {
+               todGet.reset();
+               todAck.reset();
+               todEnd.reset();
+       }
+       
+       @Override
        public void setTodGet() {
                todGet.set();
        }
 
        @Override
+       public void resetTodGet() {
+               todGet.reset();
+       }
+       
+       @Override
        public long getTodGet() {
                return todGet.get();
        }
@@ -69,6 +84,11 @@ public class WorkItem implements IWorkIt
        public void setTodAck() {
                todAck.set();
        }
+       
+       @Override
+       public void resetTodAck() {
+               todAck.reset();
+       }
 
        @Override
        public long getTodAck() {
@@ -81,6 +101,11 @@ public class WorkItem implements IWorkIt
        }
 
        @Override
+       public void resetTodEnd() {
+               todEnd.reset();
+       }
+
+       @Override
        public long getTodEnd() {
                return todEnd.get();
        }
@@ -92,10 +117,17 @@ public class WorkItem implements IWorkIt
                long end = getTodEnd();
                if(start > 0) {
                        if(end == 0) {
-                               end = System.currentTimeMillis();
+                               IState state = fsm.getStateCurrent();
+                               
if(state.getName().equals(WiFsm.CAS_Active.getName())) {
+                                       end = System.currentTimeMillis();
+                               }
+                               else {
+                                       end = start;
+                               }
                        }
                        retVal = end - start;
                }
+               Assertion.nonNegative(retVal);
                return retVal;
        }
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItemStatistics.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItemStatistics.java?rev=1636674&r1=1636673&r2=1636674&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItemStatistics.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/WorkItemStatistics.java
 Tue Nov  4 18:18:38 2014
@@ -18,19 +18,46 @@
 */
 package org.apache.uima.ducc.container.jd.wi;
 
+import org.apache.uima.ducc.container.common.Assertion;
 import org.apache.uima.ducc.container.common.SynchronizedStats;
 
 public class WorkItemStatistics implements IWorkItemStatistics {
 
        private SynchronizedStats stats = new SynchronizedStats();
        
+       private long mintime = 0;
+       
+       @Override
        public void ended(IWorkItem wi) {
                long time = wi.getMillisOperating();
+               Assertion.nonNegative(time);
+               if(time < mintime) {
+                       time = mintime;
+               }
                stats.addValue(time);
        }
        
+       @Override
+       public long getMillisMin() {
+               double stat = stats.getMin();
+               if(stat == Double.MAX_VALUE) {
+                       stat = 0;
+               };
+               long value = (long) stat;
+               return value;
+       }
+       
+       @Override
        public long getMillisMax() {
-               long value = (long) stats.getMax();
+               double stat = stats.getMax();
+               long value = (long) stat;
+               return value;
+       }
+       
+       @Override
+       public long getMillisAvg() {
+               double stat = stats.getMean();
+               long value = (long) stat;
                return value;
        }
 }

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -263,6 +263,12 @@ public class TestDispatcher {
                                randomPreempt(dispatcher,ti);
                                
transAck(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
                                randomPreempt(dispatcher,ti);
+                               try {
+                                       Thread.sleep(20);
+                               }
+                               catch(Exception e) {
+                               }
+                               dispatcher.handleGetOperatingInfo();
                                
transEnd(dispatcher,ti.getNode(),ti.getPid(),ti.getTid(),casNo);
                                randomPreempt(dispatcher,ti);
                                casNo--;
@@ -279,6 +285,12 @@ public class TestDispatcher {
                        asExpected("CASes fetched count == 100");
                        assertTrue(oi.getWorkItemPreemptions() == 
expectedPremptionsTest03);
                        asExpected("CASes preempted count == 
"+expectedPremptionsTest03);
+                       try {
+                               Thread.sleep(50);
+                       }
+                       catch(Exception e) {
+                       }
+                       dispatcher.handleGetOperatingInfo();
                }
                catch(Exception e) {
                        e.printStackTrace();

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=1636674&r1=1636673&r2=1636674&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  4 18:18:38 2014
@@ -462,6 +462,16 @@ public class TestSuite {
                assertTrue(oi.getWorkItemUserProcessingErrorRetries() == 75);
                oi.setWorkItemUserProcessingTimeouts(80);
                assertTrue(oi.getWorkItemUserProcessingTimeouts() == 80);
+               oi.setWorkItemFinishedMillisMin(1000);
+               assertTrue(oi.getWorkItemFinishedMillisMin() == 1000);
+               oi.setWorkItemFinishedMillisMax(2000);
+               assertTrue(oi.getWorkItemFinishedMillisMax() == 2000);
+               oi.setWorkItemFinishedMillisAvg(1500);
+               assertTrue(oi.getWorkItemFinishedMillisAvg() == 1500);
+               oi.setWorkItemRunningMillisMin(1001);
+               assertTrue(oi.getWorkItemRunningMillisMin() == 1001);
+               oi.setWorkItemRunningMillisMax(2001);
+               assertTrue(oi.getWorkItemRunningMillisMax() == 2001);
        }
 
 }


Reply via email to