Имитация задержки в Java - PullRequest
4 голосов
/ 01 июля 2010

Я занимаюсь разработкой простой тестовой среды на Java, которая должна имитировать развертывание weblogic путем ответа на вызовы JMS.Одним из параметров конфигурации теста является задержка для имитации задержки.Мне было интересно, есть ли у кого-нибудь хорошие идеи о том, как это сделать.Я собирался создать TimerTask, чтобы справиться с этим, есть ли лучший способ?Спасибо.

Ответы [ 4 ]

3 голосов
/ 01 июля 2010

Создать объект, который издевается над сервером.Когда он «получает» ваши входные данные, он создает новый поток для «обработки соединения», как это делает реальный сервер.Этот порожденный поток может использовать Thread.sleep () в своем сердце, чтобы имитировать задержку отправки и получения, а также позволяет имитировать некоторые свойства состояния сервера, которые могут быть полезны во время тестирования.

3 голосов
/ 01 июля 2010

Вы можете создать ScheduledExecutorService для выполнения того, что вы будете делать после задержки.

private final ScheduledExecutorService executor =
    Executors.newSingleThreadScheduledExecutor();


// is main loop, waits between 10 - 30 ms.  
executor.schedule(new Runnable() { public void run() {
   // my delayed task
}}, 10 + new Random().nextInt(20), TimeUnit.MILLI_SECOND); 

РЕДАКТИРОВАТЬ: Вы можете использовать Параллельный Backport для JDK 1.4. Это работает для JDK 1.2 до JDK 6

2 голосов
/ 01 июля 2010

Как насчет

Thread.sleep(10 + new Random().nextInt(20)); // waits between 10 - 30 ms.

т.е. в коде, который отвечает на вызов JMS, вы просто используете это для имитации случайной задержки.

0 голосов
/ 01 июля 2010

Вы можете запланировать задания, используя Кварц , это решает задачу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...