You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by iv...@apache.org on 2007/06/19 11:08:01 UTC

svn commit: r548662 - in /harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness: Main.java ReportTool/StoreResAsJU.java plugins/StoreRes.java plugins/TestHandler.java

Author: ivavladimir
Date: Tue Jun 19 02:08:00 2007
New Revision: 548662

URL: http://svn.apache.org/viewvc?view=rev&rev=548662
Log:
issue 4149 was fixed; minor improvements were done

Added:
    harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/ReportTool/StoreResAsJU.java
Modified:
    harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/Main.java
    harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/StoreRes.java
    harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/TestHandler.java

Modified: harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/Main.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/Main.java?view=diff&rev=548662&r1=548661&r2=548662
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/Main.java (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/Main.java Tue Jun 19 02:08:00 2007
@@ -1183,6 +1183,10 @@
                 + "Create Selector: OK");
             startSynChannel();
 
+            //preload classes
+            new ProcDestroy(null);
+            new ThreadDestroy(null);
+            
             if (cfgM.getLocalM() == REMOTE) { // || getExecM() == SAME) {
                 clients = new MCPool();
                 (new RRunner()).start();
@@ -1276,6 +1280,10 @@
                         internalLog.add(Level.CONFIG, methodLogPrefix
                             + "Can't close communication server: " + cs[i]
                             + " " + e);
+                    } catch (Error e) {
+                        internalLog.add(Level.CONFIG, methodLogPrefix
+                            + "Can't close communication server: " + cs[i]
+                            + " " + e, e);
                     }
                 }
                 internalLog.add(Level.CONFIG, methodLogPrefix
@@ -1295,6 +1303,9 @@
                 } catch (Exception e) {
                     internalLog.add(Level.CONFIG, methodLogPrefix
                         + "Can't close synchronization server: " + e);
+                } catch (Error e) {
+                    internalLog.add(Level.WARNING, methodLogPrefix
+                        + "Can't close synchronization server: " + e, e);
                 }
                 internalLog.add(Level.CONFIG, methodLogPrefix
                     + "Close sync channel: OK ");
@@ -1308,6 +1319,9 @@
                     } catch (Exception e) {
                         internalLog.add(Level.CONFIG, methodLogPrefix
                             + "Can't close mcore: " + clients.get(i) + " " + e);
+                    } catch (Error e) {
+                        internalLog.add(Level.CONFIG, methodLogPrefix
+                            + "Can't close mcore: " + clients.get(i) + " " + e, e);
                     }
                 }
                 internalLog.add(Level.CONFIG, methodLogPrefix
@@ -1336,6 +1350,10 @@
                     } catch (InterruptedException ie) {
                         //do noting
                     }
+                } catch (Error ior) {
+                    internalLog.add(Level.SEVERE, methodLogPrefix
+                        + "Process to destroy: " + proc
+                        + "\nNote, some processes can hang up");
                 }
                 internalLog.add(Level.CONFIG, methodLogPrefix
                     + "Process was destroyed : OK " + proc);

Added: harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/ReportTool/StoreResAsJU.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/ReportTool/StoreResAsJU.java?view=auto&rev=548662
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/ReportTool/StoreResAsJU.java (added)
+++ harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/ReportTool/StoreResAsJU.java Tue Jun 19 02:08:00 2007
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2007 The Apache Software Foundation or its licensors, as applicable
+ * Licensed 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.harmony.harness.ReportTool;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.logging.Level;
+
+import org.apache.harmony.harness.Constants;
+import org.apache.harmony.harness.MessageInfo;
+import org.apache.harmony.harness.TResIR;
+import org.apache.harmony.harness.Util;
+import org.apache.harmony.harness.plugins.StoreRes;
+
+public class StoreResAsJU extends StoreRes {
+
+    public static final int     SHORT_MSG_LEN = 1000;
+
+    private static final String classID       = "StoreResAsJU";
+
+    static final String         DATA_TOKEN    = "@@to_replace@@";
+
+    public StoreResAsJU() {
+        super();
+        super.repSuffix = ".xml";
+    }
+
+    public boolean add(TResIR test) {
+        final String methodLogPrefix = MessageInfo.MSG_PREFIX + classID
+            + "\tadd(): ";
+        try {
+            // add result to reporter module.
+            if (rep != null) {
+                String fileName;
+                fileName = "TEST-"
+                    + test.getTestID().replace(Constants.INTERNAL_FILE_SEP_C,
+                        '.');
+                rep.addResult(fileName + repSuffix, test.getExecStat());
+            }
+            if (resStore == null) {
+                log.add(Level.INFO, methodLogPrefix
+                    + "Can not store the result. Please, check your settings.");
+                return false;
+            }
+            //some service information
+            String path = "";
+            String srcPath = "";
+            String msg = convertOutToSpecificFormat(test.getOutMsg());
+            String testInfo = convertInfoToSpecificFormat(test
+                .getTestSpecificInfo());
+            String resultMsg = " (UNKNOWN)";
+            String tmpVal;
+            String cmd = convertCmdToSpecificFormat(test.getExecCmd());
+            String time = " ";
+            String[] srcNames = null;
+            int testStatus = test.getExecStat();
+            if (msg == null) {
+                msg = "";
+            } else {
+                msg = sortByTimestamp(msg);
+            }
+            if (testInfo == null) {
+                testInfo = "";
+            }
+            // note: this result is parsed by result parser which expect the
+            // digit before the whitespace
+            int errors = 0;
+            int failures = 0;
+            boolean status_defined = false;
+            int tests = 1;
+            String resMsg = "";
+            for (int i = 0; i < pasVal.length; i++) {
+                if (testStatus == pasVal[i]) {
+                    resultMsg = " (PASSED)";
+                    status_defined = true;
+                }
+            }
+            for (int i = 0; i < fldVal.length; i++) {
+                if (testStatus == fldVal[i]) {
+                    resultMsg = " (FAILED)";
+                    failures++;
+                    resMsg = "<failure type='failure'>" + DATA_TOKEN
+                        + "</failure>";
+                    status_defined = true;
+                }
+            }
+            for (int i = 0; i < errVal.length; i++) {
+                if (testStatus == errVal[i]) {
+                    resultMsg = " (ERROR)";
+                    errors++;
+                    resMsg = "<error message='error' type='error'>"
+                        + DATA_TOKEN + "</error>";
+                    status_defined = true;
+                }
+            }
+            for (int i = 0; i < merVal.length; i++) {
+                if (testStatus == merVal[i]) {
+                    resultMsg = " (SKIPPED)";
+                    status_defined = true;
+                }
+            }
+            if (!status_defined) {
+                errors++;
+            }
+            char[] tmp = test.getTestID().toCharArray();
+            for (int i = 0; i < tmp.length; i++) {
+                if (tmp[i] == Constants.INTERNAL_FILE_SEP_C) {
+                    if (i > 0 && tmp[i - 1] == '.') { //look for /./
+                        // construction
+                        if (i - 1 > 0
+                            && tmp[i - 2] != Constants.INTERNAL_FILE_SEP_C) {
+                            path = path + ".." + File.separator;
+                        }
+                    } else {
+                        path = path + ".." + File.separator;
+                    }
+                }
+            }
+            srcPath = cfg.getTestSuiteTestRoot()
+                + File.separator
+                + test.getTestID().replace(Constants.INTERNAL_FILE_SEP_C,
+                    File.separatorChar);
+            int index = srcPath.lastIndexOf(File.separator);
+            srcPath = srcPath.substring(0, index) + File.separator;
+            ArrayList tmpArr = (ArrayList)test.getProperty("sources");
+            if (tmpArr != null) {
+                int realCnt;
+                int iter = tmpArr.size();
+                srcNames = new String[iter];
+                for (int cnt = 0; cnt < iter; cnt++) {
+                    srcNames[cnt] = srcPath + tmpArr.get(cnt);
+                    if (Util.checkExistFile(srcNames[cnt])) {
+                        srcNames[cnt] = (new File(srcNames[cnt]))
+                            .getAbsolutePath();
+                    } else {
+                        srcNames[cnt] = null;
+                    }
+                }
+                realCnt = 0;
+                for (int i = 0; i < srcNames.length; i++) {
+                    if (srcNames[i] != null) {
+                        realCnt++;
+                    }
+                }
+                if (realCnt != srcNames.length && realCnt >= 1) {
+                    String[] tmpValArr = new String[realCnt];
+                    for (int i = 0; i < srcNames.length; i++) {
+                        if (srcNames[i] != null) {
+                            tmpValArr[--realCnt] = srcNames[i];
+                        }
+                    }
+                    srcNames = tmpValArr;
+                }
+                if (realCnt == 0) {
+                    srcNames = null;
+                }
+            }
+            //if exist xml-file for test - add it to the head of list
+            if (Util.checkExistFile(cfg.getTestSuiteTestRoot() + File.separator
+                + test.getTestID() + ".xml")) {
+                srcNames = Util.addElemToArray(srcNames, cfg
+                    .getTestSuiteTestRoot()
+                    + File.separator + test.getTestID() + ".xml", true);
+            }
+            //if nothing found try to check some predefined extension
+            if (srcNames == null) {
+                srcNames = new String[1];
+                for (int i = 0; i < DEFAULT_SOURCE_EXT.length; i++) {
+                    srcNames[0] = cfg.getTestSuiteTestRoot() + File.separator
+                        + test.getTestID() + DEFAULT_SOURCE_EXT[i];
+                    if (Util.checkExistFile(srcNames[0])) {
+                        break;
+                    } else {
+                        srcNames[0] = null;
+                    }
+                }
+            }
+            if (srcNames[0] == null) {
+                srcNames[0] = "";
+            }
+            if (maps != null) {
+                for (int i = 0; i < maps.length; i++) {
+                    for (int y = 0; y < srcNames.length; y++) {
+                        if (srcNames[y].startsWith(maps[i][0])) {
+                            srcNames[y] = maps[i][1]
+                                + srcNames[y].substring(maps[i][0].length());
+                        }
+                    }
+                }
+            }
+            ArrayList tmpAL = test.getExecTime();
+            long totalTime = 0;
+            if (tmpAL.size() > 0) {
+                time = tmpAL.size() + " parts";
+                for (int i = 0; i < tmpAL.size(); i++) {
+                    time = time + ". Part " + i + ": "
+                        + tmpAL.get(i).toString();
+                    totalTime = totalTime + ((Long)tmpAL.get(i)).longValue();
+                }
+                time = "Total time: " + totalTime + ". " + time;
+            }
+            if (resMsg.contains(DATA_TOKEN)) {
+                String shortMsg = msg;
+                if (msg.length() > SHORT_MSG_LEN) {
+                    shortMsg = msg.substring(0, SHORT_MSG_LEN) + "...]]>";
+                }
+                resMsg = resMsg.replace(DATA_TOKEN, shortMsg);
+            }
+
+            resStore.write("<?xml version=\"" + xmlVersion + "\"?>\n"
+                + "<testsuite errors='" + errors + "' failures='" + failures
+                + "' name='"
+                + test.getTestID().replace(Constants.INTERNAL_FILE_SEP_C, '.')
+                + "' tests='" + tests + "' time='" + totalTime
+                + "'>\n<properties>\n" + "\t<property name='os' value='"
+                + test.getTestedOS() + "'/>\n"
+                + "\t<property name='platform' value='"
+                + test.getTestedPlatform() + "'/>\n"
+                + "\t<property name='runtime' value='" + test.getTestedVM()
+                + "'/>\n" + "\t<property name='date' value='" + test.getDate()
+                + "'/>\n" + "\t<property name='status' value='"
+                + test.getExecStat() + resultMsg + "'/>\n" + "</properties>\n"
+                + "<testcase classname='"
+                + test.getTestID().replace(Constants.INTERNAL_FILE_SEP_C, '.')
+                + "' name='test' time='" + totalTime + "'>\n" + resMsg
+                + "\n</testcase>\n" + "<system-out>" + msg + "</system-out>\n"
+                + "<system-err>" + testInfo + "</system-err>\n"
+                + "</testsuite>\n");
+            resStore.flush();
+            log.add(Level.WARNING, methodLogPrefix + "Test was run "
+                + test.getTestID() + " " + resultMsg);
+            return true;
+        } catch (Exception e) {
+            log.add(Level.WARNING, methodLogPrefix + MessageInfo.UNEX_EXCEPTION
+                + "while writing the report file(s) for test: "
+                + test.getTestID() + "\n" + e, e);
+            return false;
+        }
+    }
+
+    public boolean init(String name) {
+        final String methodLogPrefix = MessageInfo.MSG_PREFIX + classID
+            + "\tinit(): ";
+        try {
+            String resDir = cfg.getTestResultRoot();
+            String fileName;
+            if (name.length() > (resDir.length() + 1)) {
+                fileName = "TEST-"
+                    + name.substring(resDir.length() + 1).replace(
+                        Constants.INTERNAL_FILE_SEP_C, '.');
+            } else {
+                fileName = "TEST-"
+                    + name.replace(Constants.INTERNAL_FILE_SEP_C, '.');
+            }
+            new File(resDir).mkdirs();
+            File curFile = new File(resDir, fileName);
+            if (!override && curFile.exists()) {
+                File dest = new File(fileName + ".old");
+                if (dest.exists()) {
+                    dest.delete();
+                }
+                curFile.renameTo(dest);
+            }
+            resStore = new FileWriter(curFile);
+            return true;
+        } catch (IOException e) {
+            resStore = null;
+            log.add(Level.WARNING, methodLogPrefix + MessageInfo.UNEX_EXCEPTION
+                + "while creating the report file(s).\n" + e, e);
+        }
+        return false;
+    }
+
+}
\ No newline at end of file

Modified: harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/StoreRes.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/StoreRes.java?view=diff&rev=548662&r1=548661&r2=548662
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/StoreRes.java (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/StoreRes.java Tue Jun 19 02:08:00 2007
@@ -72,10 +72,10 @@
     protected final int[]         errVal             = cfg.getRepError();
     protected final int[]         merVal             = cfg.getRepModErr();
 
-    String                        xmlVersion;
-    String[][]                    maps;
+    protected String              xmlVersion;
+    protected String[][]          maps;
 
-    private String                repSuffix          = Constants.RESULTS_EXT;
+    protected String              repSuffix          = Constants.RESULTS_EXT;
 
     public StoreRes() {
         final String methodLogPrefix = MessageInfo.MSG_PREFIX + classID
@@ -317,11 +317,11 @@
      * default, do nothing
      */
     protected String convertOutToSpecificFormat(String[] data) {
-        String tmpVal = "<pre><![CDATA[";
+        String tmpVal = "<![CDATA[";
         for (int i = 0; i < data.length; i++) {
             tmpVal = tmpVal + correctDataToCD(data[i]) + OUT_MSG_DELIMITER;
         }
-        tmpVal = tmpVal + "]]></pre>";
+        tmpVal = tmpVal + "]]>";
         return tmpVal;
     }
 

Modified: harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/TestHandler.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/TestHandler.java?view=diff&rev=548662&r1=548661&r2=548662
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/TestHandler.java (original)
+++ harmony/enhanced/buildtest/branches/2.0/tests/tools/harness/org/apache/harmony/harness/plugins/TestHandler.java Tue Jun 19 02:08:00 2007
@@ -262,40 +262,42 @@
 
                 if (theTestIR.getTestID() == null) {
                     throw new SAXException(methodLogPrefix
-                        + "The attribute 'ID' test is null");
+                        + "The attribute 'ID' of test is null");
                 }
                 if (theTestIR.getTestID() == "") {
                     throw new SAXException(methodLogPrefix
-                        + "The attribute 'ID' test is empty");
+                        + "The attribute 'ID' of test is empty");
                 }
                 if (theTestIR.getRunnerID() == null) {
                     throw new SAXException(
                         methodLogPrefix
-                            + "The attribute 'ID' of element 'Runner' in this test is null");
+                            + "The attribute 'ID' of element 'Runner' of test "
+                        + theTestIR.getTestID() + " is null");
                 }
                 if (theTestIR.getRunnerID() == "") {
                     throw new SAXException(
                         methodLogPrefix
-                            + "The attribute 'ID' of element 'Runner' in this test is empty");
+                            + "The attribute 'ID' of element 'Runner' of test "
+                        + theTestIR.getTestID() + " is empty");
                 }
                 if (theTestIR.getProperty("date-of-creation") == null
                     || theTestIR.getProperty("date-of-creation").trim() == "") {
-                    log.add(Level.WARNING, methodLogPrefix
-                        + "The attribute 'date-of-creation' of test '"
+                    log.add(Level.INFO, methodLogPrefix
+                        + "The attribute 'date-of-creation' of the test '"
                         + theTestIR.getTestID() + "' is absent or empty");
                 }
                 if (theTestIR.getProperty("Description") == null
                     || theTestIR.getProperty("Description").trim() == "") {
-                    log.add(Level.WARNING, methodLogPrefix
-                        + "The element 'Description' of test '"
+                    log.add(Level.INFO, methodLogPrefix
+                        + "The element 'Description' of the test '"
                         + theTestIR.getTestID() + "' is absent or empty");
                 }
                 if (theTestIR.getProperty((Object)"copyrights") == null
                     || ((ArrayList)theTestIR.getProperty((Object)"copyrights"))
                         .size() <= 0) {
-                    //log.add(Level.WARNING, methodLogPrefix
-                    //    + "There are not elements 'Copyright' of test '"
-                    //    + theTestIR.getTestID() + "'");
+                    //log.add(Level.INFO, methodLogPrefix
+                    //    + "The elements 'Copyright' of test '"
+                    //    + theTestIR.getTestID() + "' is empty");
                 } else {
                     boolean empty = false;
                     for (int i = 0; i < ((ArrayList)theTestIR
@@ -305,16 +307,16 @@
                             empty = true;
                     }
                     if (empty)
-                        log.add(Level.WARNING, methodLogPrefix
-                            + "There are empty elements 'Copyright' of test '"
-                            + theTestIR.getTestID() + "'");
+                        log.add(Level.INFO, methodLogPrefix
+                            + "The element 'Copyright' of the test '"
+                            + theTestIR.getTestID() + "' is empty");
                 }
                 if (theTestIR.getProperty((Object)"authors") == null
                     || ((ArrayList)theTestIR.getProperty((Object)"authors"))
                         .size() <= 0) {
-                    log.add(Level.WARNING, methodLogPrefix
-                        + "There are not elements 'Author' of test '"
-                        + theTestIR.getTestID() + "'");
+                    log.add(Level.INFO, methodLogPrefix
+                        + "The element 'Author' of the test '"
+                        + theTestIR.getTestID() + "' is empty");
                 } else {
                     boolean empty = false;
                     for (int i = 0; i < ((ArrayList)theTestIR
@@ -324,16 +326,16 @@
                             empty = true;
                     }
                     if (empty)
-                        log.add(Level.WARNING, methodLogPrefix
-                            + "There are empty elements 'Author' of test '"
+                        log.add(Level.INFO, methodLogPrefix
+                            + "There are empty elements 'Author' in the test '"
                             + theTestIR.getTestID() + "'");
                 }
                 if (theTestIR.getProperty((Object)"sources") == null
                     || ((ArrayList)theTestIR.getProperty((Object)"sources"))
                         .size() <= 0) {
-                    log.add(Level.WARNING, methodLogPrefix
-                        + "There are not elements 'Source' of test '"
-                        + theTestIR.getTestID() + "'");
+                    log.add(Level.INFO, methodLogPrefix
+                        + "The element 'Source' of the test '"
+                        + theTestIR.getTestID() + "' is absent");
                 } else {
                     for (int i = 0; i < ((ArrayList)theTestIR
                         .getProperty((Object)"sources")).size(); i++) {
@@ -341,11 +343,11 @@
                             .getProperty((Object)"sources")).get(i));
                         if (src == null) {
                             log.add(Level.INFO, methodLogPrefix
-                                + "incorrect element 'Source' of test '"
+                                + "incorrect element 'Source' of the test '"
                                 + theTestIR.getTestID() + "'");
                         } else if (src.trim() == "") {
                             log.add(Level.INFO, methodLogPrefix
-                                + "empty element 'Source' of test '"
+                                + "empty element 'Source' of the test '"
                                 + theTestIR.getTestID() + "'");
                         }
                     }
@@ -357,8 +359,8 @@
                             empty = true;
                     }
                     if (empty)
-                        log.add(Level.WARNING, methodLogPrefix
-                            + "There are empty elements 'Keyword' of test '"
+                        log.add(Level.INFO, methodLogPrefix
+                            + "There are empty elements 'Keyword' in the test '"
                             + theTestIR.getTestID() + "'");
                 }
                 if (((ArrayList)theTestIR.getModifications()).size() > 0) {
@@ -380,16 +382,16 @@
                     if (emptyDate)
                         log
                             .add(
-                                Level.WARNING,
+                                Level.INFO,
                                 methodLogPrefix
-                                    + "There are empty attributes 'date' of element 'Modification' in test '"
+                                    + "There are empty attributes 'date' of element 'Modification' in the test '"
                                     + theTestIR.getTestID() + "'");
                     if (emptyAuthor)
                         log
                             .add(
-                                Level.WARNING,
+                                Level.INFO,
                                 methodLogPrefix
-                                    + "There are empty attributes 'author' of element 'Modification' in test '"
+                                    + "There are empty attributes 'author' of element 'Modification' in the test '"
                                     + theTestIR.getTestID() + "'");
                 }
             }