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