namespace cvtest {
void checkIppStatus();
extern bool skipUnstableTests;
+extern int testThreads;
}
#define CV__TEST_INIT \
cv::ipp::setIppStatus(0); \
- cv::theRNG().state = cvtest::param_seed;
+ cv::theRNG().state = cvtest::param_seed; \
+ cv::setNumThreads(cvtest::testThreads);
#define CV__TEST_CLEANUP ::cvtest::checkIppStatus();
#define CV__TEST_BODY_IMPL(name) \
{ \
}
bool skipUnstableTests = false;
+int testThreads = 0;
void parseCustomOptions(int argc, char **argv)
{
const char * const command_line_keys =
"{ ipp test_ipp_check |false |check whether IPP works without failures }"
"{ test_seed |809564 |seed for random numbers generator }"
+ "{ test_threads |-1 |the number of worker threads, if parallel execution is enabled}"
"{ skip_unstable |false |skip unstable tests }"
"{ h help |false |print help info }";
param_seed = parser.get<unsigned int>("test_seed");
+ testThreads = parser.get<int>("test_threads");
+
skipUnstableTests = parser.get<bool>("skip_unstable");
}
static unsigned int param_min_samples;
static unsigned int param_force_samples;
static double param_time_limit;
-static int param_threads;
static bool param_write_sanity;
static bool param_verify_sanity;
#ifdef CV_COLLECT_IMPL_DATA
#ifdef HAVE_IPP
test_ipp_check = !args.get<bool>("perf_ipp_check") ? getenv("OPENCV_IPP_CHECK") != NULL : true;
#endif
- param_threads = args.get<int>("perf_threads");
+ testThreads = args.get<int>("perf_threads");
#ifdef CV_COLLECT_IMPL_DATA
param_collect_impl = args.get<bool>("perf_collect_impl");
#endif
void TestBase::RecordRunParameters()
{
::testing::Test::RecordProperty("cv_implementation", param_impl);
- ::testing::Test::RecordProperty("cv_num_threads", param_threads);
+ ::testing::Test::RecordProperty("cv_num_threads", testThreads);
#ifdef HAVE_CUDA
if (param_impl == "cuda")
{
cv::theRNG().state = param_seed; // this rng should generate same numbers for each run
- if (param_threads >= 0)
- cv::setNumThreads(param_threads);
+ if (testThreads >= 0)
+ cv::setNumThreads(testThreads);
else
cv::setNumThreads(-1);