Commit b33f3bb2 authored by Vladislav Vinogradov's avatar Vladislav Vinogradov

refactor CV_CUDA_TEST_MAIN, use CV_TEST_MAIN for it

use CV_CUDA_TEST_MAIN for opencv_test_core to initialize CUDA
device information
parent 8237418b
...@@ -7,4 +7,14 @@ ...@@ -7,4 +7,14 @@
#include "test_precomp.hpp" #include "test_precomp.hpp"
#ifndef HAVE_CUDA
CV_TEST_MAIN("cv") CV_TEST_MAIN("cv")
#else
#include "opencv2/ts/cuda_test.hpp"
CV_CUDA_TEST_MAIN("cv")
#endif
...@@ -569,10 +569,10 @@ void parseCustomOptions(int argc, char **argv); ...@@ -569,10 +569,10 @@ void parseCustomOptions(int argc, char **argv);
#define CV_TEST_MAIN(resourcesubdir, ...) \ #define CV_TEST_MAIN(resourcesubdir, ...) \
int main(int argc, char **argv) \ int main(int argc, char **argv) \
{ \ { \
__CV_TEST_EXEC_ARGS(__VA_ARGS__) \
cvtest::TS::ptr()->init(resourcesubdir); \ cvtest::TS::ptr()->init(resourcesubdir); \
::testing::InitGoogleTest(&argc, argv); \ ::testing::InitGoogleTest(&argc, argv); \
cvtest::printVersionInfo(); \ cvtest::printVersionInfo(); \
__CV_TEST_EXEC_ARGS(__VA_ARGS__) \
TEST_DUMP_OCL_INFO \ TEST_DUMP_OCL_INFO \
parseCustomOptions(argc, argv); \ parseCustomOptions(argc, argv); \
return RUN_ALL_TESTS(); \ return RUN_ALL_TESTS(); \
......
...@@ -340,6 +340,7 @@ namespace cvtest ...@@ -340,6 +340,7 @@ namespace cvtest
CV_EXPORTS void dumpImage(const std::string& fileName, const cv::Mat& image); CV_EXPORTS void dumpImage(const std::string& fileName, const cv::Mat& image);
CV_EXPORTS void showDiff(cv::InputArray gold, cv::InputArray actual, double eps); CV_EXPORTS void showDiff(cv::InputArray gold, cv::InputArray actual, double eps);
CV_EXPORTS void parseCudaDeviceOptions(int argc, char **argv);
CV_EXPORTS void printCudaInfo(); CV_EXPORTS void printCudaInfo();
} }
...@@ -351,53 +352,7 @@ namespace cv { namespace cuda ...@@ -351,53 +352,7 @@ namespace cv { namespace cuda
#ifdef HAVE_CUDA #ifdef HAVE_CUDA
#define CV_CUDA_TEST_MAIN(resourcesubdir) \ #define CV_CUDA_TEST_MAIN(resourcesubdir) \
int main(int argc, char* argv[]) \ CV_TEST_MAIN(resourcesubdir, cvtest::parseCudaDeviceOptions(argc, argv), cvtest::printCudaInfo())
{ \
try \
{ \
cv::CommandLineParser cmd(argc, argv, \
"{ h help ? | | Print help}" \
"{ i info | | Print information about system and exit }" \
"{ device | -1 | Device on which tests will be executed (-1 means all devices) }" \
); \
if (cmd.has("help")) \
{ \
cmd.printMessage(); \
return 0; \
} \
cvtest::printCudaInfo(); \
if (cmd.has("info")) \
{ \
return 0; \
} \
int device = cmd.get<int>("device"); \
if (device < 0) \
{ \
cvtest::DeviceManager::instance().loadAll(); \
std::cout << "Run tests on all supported devices \n" << std::endl; \
} \
else \
{ \
cvtest::DeviceManager::instance().load(device); \
cv::cuda::DeviceInfo info(device); \
std::cout << "Run tests on device " << device << " [" << info.name() << "] \n" << std::endl; \
} \
cvtest::TS::ptr()->init( resourcesubdir ); \
testing::InitGoogleTest(&argc, argv); \
return RUN_ALL_TESTS(); \
} \
catch (const std::exception& e) \
{ \
std::cerr << e.what() << std::endl; \
return -1; \
} \
catch (...) \
{ \
std::cerr << "Unknown error" << std::endl; \
return -1; \
} \
return 0; \
}
#else // HAVE_CUDA #else // HAVE_CUDA
......
...@@ -190,6 +190,33 @@ namespace cvtest ...@@ -190,6 +190,33 @@ namespace cvtest
} }
} }
void parseCudaDeviceOptions(int argc, char **argv)
{
cv::CommandLineParser cmd(argc, argv,
"{ cuda_device | -1 | CUDA device on which tests will be executed (-1 means all devices) }"
"{ h help | false | Print help info }"
);
if (cmd.has("help"))
{
std::cout << "\nAvailable options besides google test option: \n";
cmd.printMessage();
}
int device = cmd.get<int>("cuda_device");
if (device < 0)
{
cvtest::DeviceManager::instance().loadAll();
std::cout << "Run tests on all supported CUDA devices \n" << std::endl;
}
else
{
cvtest::DeviceManager::instance().load(device);
cv::cuda::DeviceInfo info(device);
std::cout << "Run tests on CUDA device " << device << " [" << info.name() << "] \n" << std::endl;
}
}
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Additional assertion // Additional assertion
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment