add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / benchmark / src / java / org / apache / lucene / benchmark / byTask / tasks / WaitTask.java
1 package org.apache.lucene.benchmark.byTask.tasks;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * 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, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import org.apache.lucene.benchmark.byTask.PerfRunData;
21
22 /**
23  * Simply waits for the specified (via the parameter) amount
24  * of time.  For example Wait(30s) waits for 30 seconds.
25  * This is useful with background tasks to control how long
26  * the tasks run.
27  *
28  *<p>You can specify h, m, or s (hours, minutes, seconds) as
29  *the trailing time unit.  No unit is interpreted as
30  *seconds.</p>
31  */
32 public class WaitTask extends PerfTask {
33
34   private double waitTimeSec;
35
36   public WaitTask(PerfRunData runData) {
37     super(runData);
38   }
39
40   @Override
41   public void setParams(String params) {
42     super.setParams(params);
43     if (params != null) {
44       int multiplier;
45       if (params.endsWith("s")) {
46         multiplier = 1;
47         params = params.substring(0, params.length()-1);
48       } else if (params.endsWith("m")) {
49         multiplier = 60;
50         params = params.substring(0, params.length()-1);
51       } else if (params.endsWith("h")) {
52         multiplier = 3600;
53         params = params.substring(0, params.length()-1);
54       } else {
55         // Assume seconds
56         multiplier = 1;
57       }
58
59       waitTimeSec = Double.parseDouble(params) * multiplier;
60     } else {
61       throw new IllegalArgumentException("you must specify the wait time, eg: 10.0s, 4.5m, 2h");
62     }
63   }
64
65   @Override
66   public int doLogic() throws Exception {
67     Thread.sleep((long) (1000*waitTimeSec));
68     return 0;
69   }
70
71   @Override
72   public boolean supportsParams() {
73     return true;
74   }
75 }