Как определить, какой тест висит? - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть тест, который зависает ... когда я пытаюсь запустить тесты из Maven, он всегда заканчивается ManagedLedgerTest, например:

[INFO] Running org.apache.bookkeeper.client.PulsarMockReadHandle
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s - in org.apache.bookkeeper.client.PulsarMockReadHandle
[INFO] Running org.apache.zookeeper.MockZooKeeper
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.063 s - in org.apache.zookeeper.MockZooKeeper
[INFO] Tests run: 73, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 23.832 s - in org.apache.bookkeeper.mledger.impl.ManagedLedgerTest

Несколько часов спустя, журнал по-прежнему выглядит так же. Когда я запускаю тесты в ManagedLedgerTest, они все проходят. Итак, похоже, что есть тест после ManagedLedgerTest, на котором он висит. Когда я отправляю sh код на наш сервер сборки, мы видим точно такое же поведение. Я попытался запустить тесты из Maven с повышенной степенью детализации, добавив параметр -X, например: mvn install -DfailIfNoTests=false '-Dtest=!KafkaProducerSimpleConsumerTest,!PrimitiveSchemaTest,!BlobStoreManagedLedgerOffloaderTest' -pl '!pulsar-broker,!pulsar-proxy,!pulsar-brokeruth-sasl,!pulsar-io/kafka-connect-adaptor,!tests/pulsar-storm-test' -X

Однако я не получаю никакой дополнительной информации о том, что зависает. (Выходные данные выше идентичны, если указано -X.)

Как определить, какой тест зависает?

1 Ответ

1 голос
/ 08 февраля 2020
  1. Способ: Запустите тесты с удаленной отладкой, посмотрите на surefire-документацию, как это сделать.

Когда тест зависает, подключите отладчик (intellij, netbeans, eclipse, ...) и посмотрите на трассировку стека.

Путь: Создайте стековый дамп (используйте jstack) java -vm, который выполняет тест. Один из этих стеков должен показать ваш тест на зависание.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...