1 package eteg.sinon.util;
2
3 import eteg.sinon.exception.InvalidThinkTimeConfigurationException;
4 import eteg.sinon.executor.ThinkTime;
5
6 import java.util.Properties;
7
8 /***
9 * Implementação de {@link ThinkTime} que retorna sempre o mesmo número de
10 * milissegundos.
11 *
12 * <pre>
13 * $Header: /cvsroot/sinon/sinon/src/java/eteg/sinon/util/ConstantThinkTime.java,v 1.2 2005/06/21 14:25:08 thiagohp Exp $
14 * </pre>
15 *
16 * @author Thiago H. de Paula Figueiredo (last modification by $Author: thiagohp $)
17 * @version $Revision: 1.2 $
18 * @since 20/09/2004.
19 */
20 public class ConstantThinkTime implements ThinkTime {
21
22 final private static String INTERVAL_PROPERTY = "interval";
23
24 /***
25 * Intervalo, em milissegundos, entre uma requisição e outra.
26 */
27 private long time;
28
29 /***
30 * Construtor sem parâmetros.
31 */
32 public ConstantThinkTime() {
33 }
34
35 /***
36 * Retorna o tempo de espera (<i>think time</i>), em milissegundos,
37 * para o próximo acesso ao site.
38 *
39 * @return o tempo de espera (<i>think time</i>), em milissegundos,
40 * para o próximo acesso ao site.
41 */
42 public long nextThinkTime() {
43 return time;
44 }
45
46 /***
47 * Método que recebe um <code>Properties</code> a partir do qual este objeto
48 * deve ser configurado.
49 *
50 * @param properties uma instância de <code>Properties</code>.
51 * @throws InvalidThinkTimeConfigurationException
52 * se as configurações
53 * passadas não são válidas ou são insuficientes.
54 */
55 public void setConfiguration(Properties properties)
56 throws InvalidThinkTimeConfigurationException {
57
58 String millis = properties.getProperty(INTERVAL_PROPERTY);
59
60 if (millis == null) {
61
62 throw new InvalidThinkTimeConfigurationException(
63 "Não há uma propriedade de nome " + INTERVAL_PROPERTY +
64 " contendo o intervalo entre uma requisição e outra.");
65
66 }
67
68 Exception cause = null;
69 boolean ok = true;
70
71 try {
72 time = Long.parseLong(millis);
73 } catch (NumberFormatException e) {
74
75 ok = false;
76 cause = e;
77
78 }
79
80
81 if (ok == false) {
82
83 InvalidThinkTimeConfigurationException exception =
84 new InvalidThinkTimeConfigurationException(
85 "A propriedade " + INTERVAL_PROPERTY +
86 " não contém um valor válido " +
87 "(inteiro positivo)");
88
89 exception.initCause(cause);
90
91 throw exception;
92
93 }
94
95 }
96
97 }