View Javadoc

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  }