1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package helper;
25 
26 import share.*;
27 import lib.TestParameters;
28 import util.PropertyName;
29 import util.utils;
30 
31 /**
32  * This class is printing to a <CODE>LogWriter</CODE>. This could be useful if a UNO-API
33  * function runs longer than the time out. To avoid the assumption of death application
34  * a simple string is logged for 100 times of time out.</br>
35  * Example:</br>
36  *          logger = new LoggingThread((LogWriter)log, tParam);
37  *          logger.start();
38  *          oObj.longRunningFunction();
39  *          logger.finish();
40  *
41  */
42 public class LoggingThread extends Thread {
43 
44     TestParameters param;
45     LogWriter log = null;
46     boolean finished = false;
47     boolean debug = false;
48 
49     /**
50      *
51      * @param log
52      * @param tParam
53      */
LoggingThread(LogWriter log, TestParameters tParam)54     public LoggingThread(LogWriter log, TestParameters tParam) {
55         this.log = log;
56         this.param = tParam;
57         this.debug = tParam.getBool(PropertyName.DEBUG_IS_ACTIVE);
58     }
59 
run()60     public void run() {
61         final int timeOut = param.getInt(PropertyName.TIME_OUT) / 2;
62         int count = 0;
63         finished = false;
64         if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " start");
65         while (!finished && count < 200) {
66             try {
67                 if (debug) log.println("TimeOutLogger: "+utils.getDateTime() + count);
68                 synchronized (this) {
69                     wait(timeOut);
70                 }
71                 count++;
72             } catch (InterruptedException ex) {
73             }
74         }
75         if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " finished");
76     }
77 
78     /**
79      * finished the LoggingThread
80      */
finish()81     public void finish() {
82         try {
83             finished = true;
84             synchronized (this) {
85                 notify();
86             }
87             if (debug) log.println("TimeOutLogger: " + utils.getDateTime() + " try to finish ");
88             sleep(1000);
89         } catch (InterruptedException ex) {
90         }
91     }
92 }
93