Мне хотелось бы получить несколько идей о том, как я должен тестировать некоторые объекты, которые могут блокироваться, ожидая другого участника. Конкретная единица, подлежащая проверке, - это канал между участниками. Сами участники являются пробными приспособлениями для целей испытаний.
Было бы неплохо подтвердить, что участники действительно зашли в тупик, когда от них ожидают, но для меня это не очень важно, поскольку то, что происходит после , можно разумно описать как тупик неопределенный.
Более важным было бы убедиться, что определенные взаимодействия от участников делают , а не тупик.
В любом случае, я не совсем уверен, какой должна быть оптимальная стратегия тестирования. Моя текущая идея - запустить тестового прогона для каждого участника, немного поспать, а затем выяснить, вернулись ли дочерние потоки. В случае, если они не вернулись вовремя, предположим, что они заблокированы и безопасно прерывают потоки, и тест завершается неудачно (или успешно, если ожидалась тупиковая ситуация).
Это кажется немного вероятностным, поскольку могут быть разные причины (хотя и маловероятные), что поток может занять больше времени, чем ожидалось. Есть ли другие, хорошие способы решения этой проблемы?
РЕДАКТИРОВАТЬ: Я уверен, что тестирование было бы хорошо, но я не думаю, что мне нужно его иметь. Я имею в виду три уровня проверки достоверности.
- «Фактическое поведение, как оказалось, соответствует ожидаемому поведению», тупик не может возникнуть
- В N тестах тупиковая ситуация "фактическое поведение соответствует ожидаемому поведению" не возникла
- «Фактическое поведение соответствует ожидаемому поведению» N тестов завершено в ожидаемый срок
Первый, конечно, является ценным тестом, который необходимо пройти, но ответ ShiDoiSi говорит о его непрактичности. Второй значительно слабее первого, но все же тяжелый; Как вы можете установить, что сеть процессов фактически заблокирована? Я не уверен, что это легче доказать, чем первое (может быть, намного сложнее)
Последний больше похож на то, что я имею в виду.