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 }