Сделать надежный веб-сервис ненадежным, но контролируемым образом? - PullRequest
3 голосов
/ 14 июля 2010

У меня есть клиент веб-службы на основе Java 6, использующий стандартный подход на основе аннотаций Java 6 (то есть, нет Axis или другой сторонней библиотеки веб-служб), который работает очень хорошо. Так же как и веб-служба, которую я вызываю, это хорошо, но теперь мне нужно написать код обработки ошибок, и я должен быть в состоянии сделать существующую веб-службу ненадежной контролируемым образом.

Существует много фальшивых фреймворков, и они могут быть полезны, но мне сейчас не нужно иметь возможность макетировать сервис с предварительно записанными ответами или чем-то еще, просто ввести ненадежность, вызывающую сбой библиотеки веб-сервиса, чтобы я мог уладить ситуацию изящно. Вероятно, это будет прокси-сервер, работающий локально.

Я работаю с Eclipse Java EE 3.6, но Netbeans, IntelliJ и JDeveloper также являются опциями.

Как лучше всего это сделать?

Ответы [ 4 ]

4 голосов
/ 14 июля 2010

Tcpmon, http://ws.apache.org/commons/tcpmon/index.html можно настроить для работы в качестве прокси и даже для имитации медленных соединений. Это дало бы вам возможность смоделировать как «извините, не здесь», так и «да, мы здесь, но время истекло».

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

Так как вы не раскрыли достаточно подробностей вашей настройки, может быть, вы получите исключение здесь и будет достаточно?

Серьезно, для подобных интеграционных тестов я бы предложил запустить некоторое подмножество реального контейнера веб-службы.

Исходя из логики сервиса, он может вести себя ненадежно из-за:

  • внешняя система, которую она использует, работает неправильно - попробуйте смоделировать внешнюю систему и выбросить ошибки - разные типы - из нее
  • проблема с доступом к базе данных - попробуйте смоделировать слой DAO и выбросить исключение оттуда
  • общая проблема с аппаратным обеспечением - зависит :) попытайтесь подчеркнуть свой код так, как считаете нужным
0 голосов
/ 14 июля 2010

Я думаю, что вместо того, чтобы вводить ненадежность в работающий экземпляр приложения веб-службы, вам лучше смоделировать условия ошибок в своих модульных / интеграционных тестах и ​​утверждать, что ваш верхний уровень службы реагирует так, как вам хотелось .

Например:

  1. Как точка входа службы отвечает на запрос, если уровень данных сообщает, что он не может связаться с бэкэндом (если уровень данных выдает исключения или, тем не менее, указывает на сбой)
  2. Как ведет себя точка входа в службу, если другие обязательные компоненты выдают «недоступные» подобные исключения?
  3. Есть ли у вас логика тайм-аута, т. Е. Служба возвращает ошибку, если обработка запроса занимает более X секунд? Если это так, то это можно смоделировать и в пробном тесте.
0 голосов
/ 14 июля 2010

Любая введенная нестабильность может привести к тому, что эксплуатационные возможности нестабильности будут упущены.Старайтесь охватить все потенциальные векторы ошибок в своем коде, а не пытаться смягчить их для конкретных деталей.

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