Тест исходного кода Apache-Ignite продолжает выполняться из-за блокировки

#ignite

#ignite

Вопрос:

Я настраиваю исходный код apache-ignite локально и сталкиваюсь с некоторой проблемой при запуске тестов.Тест ReadWriteLockMultiThreadedTest.testReadThenWriteLockAcquire, похоже, глючит, поскольку он продолжает выполняться из-за получения блокировки, которая уже получена. Блокировка записи будет конфликтовать с блокировкой чтения, поскольку она не освобождена к моменту получения блокировки записи из ReentrantReadWriteLock из Java.

Код для теста приведен ниже.

 public void testReadThenWriteLockAcquire() throws Exception {
        ReadWriteLock lock = new ReentrantReadWriteLock();

        lock.readLock().lock();

        lock.writeLock().lock();
    }
  

Может кто-нибудь объяснить, почему добавлен этот тест и как он должен выполняться?

Весь тестовый класс можно просмотреть из. https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/jvmtest/ReadWriteLockMultiThreadedTest.java

Ответ №1:

Я не думаю, что этот тест должен выполняться во время нормальной работы. Рассмотрите возможность всегда запускать Ignite с -DskipTests=true .

Запуск теста Ignite является сложным, поскольку он включает в себя параллельный запуск десятков отдельных наборов тестов.

Комментарии:

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

2. Я думаю, вы могли бы попробовать запустить IgniteBasicTestSuite 🙂 Плюс подходит для любых областей, к которым вы прикасались.

3. Спасибо, это должно помочь, поскольку ReadWriteLockMultiThreadedTest был частью ignitelost и Found-TestSuite. На данный момент я запускал это, используя tryLock() вместо lock() для запуска теста.

4. Привет, Аламар, еще одна быстрая справка, если вы можете проверить. При запуске IgniteBasicTestSuite из модуля core в нашей gitlab я вижу несколько ошибок, как показано ниже, в то время как запуск неудачных тестов из локальной настройки разработчика в IDE выполняется нормально. Ошибка в gitlab: java.lang. ClassNotFoundException: org.apache.ignite.tests.p2p.P2PTestTaskExternalPath1 , который, похоже, является классами из других модулей. Итак, сначала нам нужно собрать все остальные модули?

5. @tarunk Да, я полагаю, вам нужно собрать все extdata модули. Я не уверен, как это обрабатывается в TC.