Author: degenaro
Date: Fri Sep 16 15:34:57 2016
New Revision: 1761052

URL: http://svn.apache.org/viewvc?rev=1761052&view=rev
Log:
UIMA-5047 DUCC WebServer (WS) to handle -1 as indicator of N/A for CPU 
percentage

Modified:
    
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java

Modified: 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: 
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1761052&r1=1761051&r2=1761052&view=diff
==============================================================================
--- 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
 (original)
+++ 
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
 Fri Sep 16 15:34:57 2016
@@ -837,85 +837,113 @@ public class DuccHandler extends DuccAbs
                return sb.toString();
        }
        
-       private String getPctCPU(IDuccWorkJob job, IDuccProcess process) {
-               StringBuffer sb = new StringBuffer();
-               if(process != null) {
-                       String runTime = ""+process.getCpuTime();
-                       double pctCPU_overall = 0;
-                       double pctCPU_current = 0;
-                       String displayCPU = formatter.format(pctCPU_overall);
-                       if(process.getDataVersion() < 1) {
-                               boolean rt = false;
-                               if(runTime != null) {
-                                       if(runTime.contains(":")) {
-                                               rt = true;
-                                       }
-                                       else {
-                                               try {
-                                                       long value = 
Long.parseLong(runTime);
-                                                       if(value > 0) {
-                                                               rt = true;
-                                                       }
-                                               }
-                                               catch(Exception e) {
-                                               }
-                                       }
-                               }
+       // legacy
+       private String getPctCpuV0(IDuccWorkJob job, IDuccProcess process) {
+               String retVal = "";
+               boolean rt = false;
+               double pctCPU_overall = 0;
+               String runTime = ""+process.getCpuTime();
+               if(runTime != null) {
+                       if(runTime.contains(":")) {
+                               rt = true;
+                       }
+                       else {
                                try {
-                                       if(rt) {
-                                               long msecsCPU = 
process.getCpuTime()*1000;
-                                               long msecsRun = 
process.getTimeWindowRun().getElapsedMillis();
-                                               
switch(process.getProcessState()) {
-                                               case Running:
-                                                       long msecsInit = 
process.getTimeWindowInit().getElapsedMillis();
-                                                       msecsRun = msecsRun - 
msecsInit;
-                                                       break;
-                                               default:
-                                                       break;
-                                               }
-                                               double secsCPU = 
(msecsCPU*1.0)/1000.0;
-                                               double secsRun = 
(msecsRun*1.0)/1000.0;
-                                               double timeCPU = secsCPU;
-                                               double timeRun = secsRun;
-                                               pctCPU_overall = 
100*(timeCPU/timeRun);
-                                               
if(!Double.isNaN(pctCPU_overall)) {
-                                                       StringBuffer tb = new 
StringBuffer();
-                                                       String fmtsecsCPU = 
formatter.format(secsCPU);
-                                                       String fmtsecsRun = 
formatter.format(secsRun);
-                                                       String title = 
"title="+"\""+"seconds"+" "+"CPU:"+fmtsecsCPU+" "+"run:"+fmtsecsRun+"\"";
-                                                       tb.append("<span 
"+title+">");
-                                                       String fmtPctCPU = 
formatter.format(pctCPU_overall);
-                                                       tb.append(fmtPctCPU);
-                                                       tb.append("</span>");
-                                                       displayCPU = 
tb.toString();
-                                               }
+                                       long value = Long.parseLong(runTime);
+                                       if(value > 0) {
+                                               rt = true;
                                        }
                                }
                                catch(Exception e) {
                                }
                        }
-                       else {
-                               StringBuffer tb = new StringBuffer();
-                               pctCPU_overall = process.getCpuTime();
-                               pctCPU_current = process.getCurrentCPU();
+               }
+               try {
+                       if(rt) {
+                               long msecsCPU = process.getCpuTime()*1000;
+                               long msecsRun = 
process.getTimeWindowRun().getElapsedMillis();
                                switch(process.getProcessState()) {
                                case Running:
-                                       String title = "title="+"\"lifetime: 
"+formatter.format(pctCPU_overall)+"\"";
-                                       tb.append("<span "+title+" 
class=\"health_green\">");
-                                       
tb.append(formatter.format(pctCPU_current));
-                                       tb.append("</span>");
+                                       long msecsInit = 
process.getTimeWindowInit().getElapsedMillis();
+                                       msecsRun = msecsRun - msecsInit;
                                        break;
                                default:
-                                       tb.append("<span>");
-                                       
tb.append(formatter.format(pctCPU_overall));
-                                       tb.append("</span>");
                                        break;
                                }
-                               displayCPU = tb.toString();
+                               double secsCPU = (msecsCPU*1.0)/1000.0;
+                               double secsRun = (msecsRun*1.0)/1000.0;
+                               double timeCPU = secsCPU;
+                               double timeRun = secsRun;
+                               pctCPU_overall = 100*(timeCPU/timeRun);
+                               if(!Double.isNaN(pctCPU_overall)) {
+                                       StringBuffer sb = new StringBuffer();
+                                       String fmtsecsCPU = 
formatter.format(secsCPU);
+                                       String fmtsecsRun = 
formatter.format(secsRun);
+                                       String title = 
"title="+"\""+"seconds"+" "+"CPU:"+fmtsecsCPU+" "+"run:"+fmtsecsRun+"\"";
+                                       sb.append("<span "+title+">");
+                                       String fmtPctCPU = 
formatter.format(pctCPU_overall);
+                                       sb.append(fmtPctCPU);
+                                       sb.append("</span>");
+                                       retVal = sb.toString();
+                               }
                        }
-                       sb.append(displayCPU);
                }
-               return sb.toString();
+               catch(Exception e) {
+               }
+               return retVal;
+       }
+       
+       private String formatPctCpu(double pctCpu) {
+               String retVal = "";
+               if(pctCpu < 0) {
+                       retVal = "N/A";
+               }
+               else {
+                       retVal = formatter.format(pctCpu);
+               }
+               return retVal;
+       }
+       
+       private String getPctCpuV1(IDuccWorkJob job, IDuccProcess process) {
+               double pctCPU_overall = process.getCpuTime();
+               double pctCPU_current = process.getCurrentCPU();
+               String fmtCPU_overall = formatPctCpu(pctCPU_overall);
+               String fmtCPU_current = formatPctCpu(pctCPU_current);
+               StringBuffer sb = new StringBuffer();
+               switch(process.getProcessState()) {
+               case Running:
+                       String title = "title="+"\"lifetime: 
"+fmtCPU_overall+"\"";
+                       sb.append("<span "+title+" class=\"health_green\">");
+                       sb.append(fmtCPU_current);
+                       sb.append("</span>");
+                       break;
+               default:
+                       sb.append("<span>");
+                       sb.append(fmtCPU_overall);
+                       sb.append("</span>");
+                       break;
+               }
+               String retVal = sb.toString();
+               return retVal;
+       }
+       
+       private String getPctCpu(IDuccWorkJob job, IDuccProcess process) {
+               String location = "getPctCpu";
+               String retVal = "";
+               if(process != null) {
+                       try {
+                               if(process.getDataVersion() < 1) {
+                                       retVal = getPctCpuV0(job, process);
+                               }
+                               else {
+                                       retVal = getPctCpuV1(job, process);
+                               }
+                       }
+                       catch(Exception e) {
+                               duccLogger.error(location, jobid, e);
+                       }
+               }
+               return retVal;
        }
        
        private String getRSS(IDuccWorkJob job, IDuccProcess process) {
@@ -1217,7 +1245,7 @@ public class DuccHandler extends DuccAbs
                // %cpu
                index++; // jp.16
                cbList[index].append("<td align=\"right\">");
-               String pctCPU = getPctCPU(job,process);
+               String pctCPU = getPctCpu(job,process);
                cbList[index].append(pctCPU);
                logAppend(index,"%cpu",pctCPU);
                cbList[index].append("</td>");  


Reply via email to