Мне нужно написать стресс-тест для моего сервисного уровня.Я начал делать это с Unitils, JUnit4 и JUnitPerf, но безуспешно.Вот почему я решил попробовать TestNG, но у меня проблемы с закрытием сеанса и транзакциями при попытке запустить тест в многопоточном режиме.
Я использую следующий стек фреймворка: Spring, Hibernate, TestNG, Unitils
Мне нужен нетранзакционный многопоточный тест.Тест будет вызывать методы уровня обслуживания.Каждый звонок запускает новую транзакцию.Итак, есть несколько потоков, которые одновременно запускают несколько транзакций.
Итак, тест должен выглядеть примерно так:
public class ServiceStressTest extends UnitilsTestNG
@SpringBeanByType
private MyService myService;
@DataSet
@Test
public void createTestData() {
}
@Test(invocationCount = 100, threadPoolSize = 50, dependsOnMethods = "createTestData")
public void test1() throws Exception {
myService.method1(); // Starts new transaction and commit it.
myService.method2(); // Starts new transaction and commit it.
}
}
И сервис выглядит следующим образом:
...
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
...
@Transactional
@Service
public class MyServiceImpl implements MyService {
public void method1(){
sessionFactory.getCurrentSession().save(smth); (update/delete)
}
public void method2(){
sessionFactory.getCurrentSession().save(smth); (update/delete)
}
}
Если я установлю threadPoolSize на 1, все будет отлично.Но всякий раз, когда я изменяю его на многопоточный, я получаю исключение, которое говорит, что сессия была закрыта.