Fix parallel test execution for tools, testsupport and metrics tests.
BUG=2600
TESTED=Passing tests using:
python third_party/gtest-parallel/gtest-parallel -w 10 -r 20 out/Release/test_support_unittests
python third_party/gtest-parallel/gtest-parallel -w 10 -r 20 out/Release/tools_unittests
python third_party/gtest-parallel/gtest-parallel -w 10 -r 20 out/Release/video_engine_tests
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/31479004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7322 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/test/testsupport/fileutils_unittest.cc b/webrtc/test/testsupport/fileutils_unittest.cc
index 4cd4513..114f108 100644
--- a/webrtc/test/testsupport/fileutils_unittest.cc
+++ b/webrtc/test/testsupport/fileutils_unittest.cc
@@ -29,8 +29,6 @@
static const std::string kTestName = "fileutils_unittest";
static const std::string kExtension = "tmp";
-typedef std::list<std::string> FileList;
-
namespace webrtc {
// Test fixture to restore the working directory between each test, since some
@@ -44,38 +42,6 @@
// Runs before the first test
static void SetUpTestCase() {
original_working_dir_ = webrtc::test::WorkingDir();
- std::string resources_path = original_working_dir_ + kPathDelimiter +
- kResourcesDir + kPathDelimiter;
- webrtc::test::CreateDir(resources_path);
-
- files_.push_back(resources_path + kTestName + "." + kExtension);
- files_.push_back(resources_path + kTestName + "_32." + kExtension);
- files_.push_back(resources_path + kTestName + "_64." + kExtension);
- files_.push_back(resources_path + kTestName + "_linux." + kExtension);
- files_.push_back(resources_path + kTestName + "_mac." + kExtension);
- files_.push_back(resources_path + kTestName + "_win." + kExtension);
- files_.push_back(resources_path + kTestName + "_linux_32." + kExtension);
- files_.push_back(resources_path + kTestName + "_mac_32." + kExtension);
- files_.push_back(resources_path + kTestName + "_win_32." + kExtension);
- files_.push_back(resources_path + kTestName + "_linux_64." + kExtension);
- files_.push_back(resources_path + kTestName + "_mac_64." + kExtension);
- files_.push_back(resources_path + kTestName + "_win_64." + kExtension);
-
- // Now that the resources dir exists, write some empty test files into it.
- for (FileList::iterator file_it = files_.begin();
- file_it != files_.end(); ++file_it) {
- FILE* file = fopen(file_it->c_str(), "wb");
- ASSERT_TRUE(file != NULL) << "Failed to write file: " << file_it->c_str();
- ASSERT_GT(fprintf(file, "%s", "Dummy data"), 0);
- fclose(file);
- }
- }
- static void TearDownTestCase() {
- // Clean up all resource files written
- for (FileList::iterator file_it = files_.begin();
- file_it != files_.end(); ++file_it) {
- remove(file_it->c_str());
- }
}
void SetUp() {
ASSERT_EQ(chdir(original_working_dir_.c_str()), 0);
@@ -83,13 +49,10 @@
void TearDown() {
ASSERT_EQ(chdir(original_working_dir_.c_str()), 0);
}
- protected:
- static FileList files_;
private:
static std::string original_working_dir_;
};
-FileList FileUtilsTest::files_;
std::string FileUtilsTest::original_working_dir_ = "";
// Tests that the project root path is returned for the default working
@@ -159,7 +122,16 @@
}
TEST_F(FileUtilsTest, GetFileSizeExistingFile) {
- ASSERT_GT(webrtc::test::GetFileSize(files_.front()), 0u);
+ // Create a file with some dummy data in.
+ std::string temp_filename = webrtc::test::TempFilename(
+ webrtc::test::OutputPath(), "fileutils_unittest");
+ FILE* file = fopen(temp_filename.c_str(), "wb");
+ ASSERT_TRUE(file != NULL) << "Failed to open file: " << temp_filename;
+ ASSERT_GT(fprintf(file, "%s", "Dummy data"), 0) <<
+ "Failed to write to file: " << temp_filename;
+ fclose(file);
+ ASSERT_GT(webrtc::test::GetFileSize(std::string(temp_filename.c_str())), 0u);
+ remove(temp_filename.c_str());
}
TEST_F(FileUtilsTest, GetFileSizeNonExistingFile) {
diff --git a/webrtc/test/testsupport/frame_reader_unittest.cc b/webrtc/test/testsupport/frame_reader_unittest.cc
index c70db5b..25ea913 100644
--- a/webrtc/test/testsupport/frame_reader_unittest.cc
+++ b/webrtc/test/testsupport/frame_reader_unittest.cc
@@ -16,7 +16,6 @@
namespace webrtc {
namespace test {
-const std::string kInputFilename = "temp_inputfile.tmp";
const std::string kInputFileContents = "baz";
// Setting the kFrameLength value to a value much larger than the
// file to test causes the ReadFrame test to fail on Windows.
@@ -27,27 +26,27 @@
FrameReaderTest() {}
virtual ~FrameReaderTest() {}
void SetUp() {
- // Cleanup any previous dummy input file.
- remove(kInputFilename.c_str());
-
// Create a dummy input file.
- FILE* dummy = fopen(kInputFilename.c_str(), "wb");
+ temp_filename_ = webrtc::test::TempFilename(webrtc::test::OutputPath(),
+ "frame_reader_unittest");
+ FILE* dummy = fopen(temp_filename_.c_str(), "wb");
fprintf(dummy, "%s", kInputFileContents.c_str());
fclose(dummy);
- frame_reader_ = new FrameReaderImpl(kInputFilename, kFrameLength);
+ frame_reader_ = new FrameReaderImpl(temp_filename_, kFrameLength);
ASSERT_TRUE(frame_reader_->Init());
}
void TearDown() {
delete frame_reader_;
// Cleanup the dummy input file.
- remove(kInputFilename.c_str());
+ remove(temp_filename_.c_str());
}
FrameReader* frame_reader_;
+ std::string temp_filename_;
};
TEST_F(FrameReaderTest, InitSuccess) {
- FrameReaderImpl frame_reader(kInputFilename, kFrameLength);
+ FrameReaderImpl frame_reader(temp_filename_, kFrameLength);
ASSERT_TRUE(frame_reader.Init());
ASSERT_EQ(kFrameLength, frame_reader.FrameLength());
ASSERT_EQ(0, frame_reader.NumberOfFrames());
@@ -64,7 +63,7 @@
TEST_F(FrameReaderTest, ReadFrameUninitialized) {
uint8_t buffer[3];
- FrameReaderImpl file_reader(kInputFilename, kFrameLength);
+ FrameReaderImpl file_reader(temp_filename_, kFrameLength);
ASSERT_FALSE(file_reader.ReadFrame(buffer));
}
diff --git a/webrtc/test/testsupport/frame_writer_unittest.cc b/webrtc/test/testsupport/frame_writer_unittest.cc
index 3e32fef..da1e268 100644
--- a/webrtc/test/testsupport/frame_writer_unittest.cc
+++ b/webrtc/test/testsupport/frame_writer_unittest.cc
@@ -16,7 +16,6 @@
namespace webrtc {
namespace test {
-const std::string kOutputFilename = "temp_outputfile.tmp";
const size_t kFrameLength = 1000;
class FrameWriterTest: public testing::Test {
@@ -24,21 +23,22 @@
FrameWriterTest() {}
virtual ~FrameWriterTest() {}
void SetUp() {
- // Cleanup any previous output file.
- remove(kOutputFilename.c_str());
- frame_writer_ = new FrameWriterImpl(kOutputFilename, kFrameLength);
+ temp_filename_ = webrtc::test::TempFilename(webrtc::test::OutputPath(),
+ "frame_writer_unittest");
+ frame_writer_ = new FrameWriterImpl(temp_filename_, kFrameLength);
ASSERT_TRUE(frame_writer_->Init());
}
void TearDown() {
delete frame_writer_;
// Cleanup the temporary file.
- remove(kOutputFilename.c_str());
+ remove(temp_filename_.c_str());
}
FrameWriter* frame_writer_;
+ std::string temp_filename_;
};
TEST_F(FrameWriterTest, InitSuccess) {
- FrameWriterImpl frame_writer(kOutputFilename, kFrameLength);
+ FrameWriterImpl frame_writer(temp_filename_, kFrameLength);
ASSERT_TRUE(frame_writer.Init());
ASSERT_EQ(kFrameLength, frame_writer.FrameLength());
}
@@ -50,12 +50,12 @@
ASSERT_TRUE(result); // success
// Close the file and verify the size.
frame_writer_->Close();
- ASSERT_EQ(kFrameLength, GetFileSize(kOutputFilename));
+ ASSERT_EQ(kFrameLength, GetFileSize(temp_filename_));
}
TEST_F(FrameWriterTest, WriteFrameUninitialized) {
uint8_t buffer[3];
- FrameWriterImpl frame_writer(kOutputFilename, kFrameLength);
+ FrameWriterImpl frame_writer(temp_filename_, kFrameLength);
ASSERT_FALSE(frame_writer.WriteFrame(buffer));
}
diff --git a/webrtc/test/testsupport/metrics/video_metrics_unittest.cc b/webrtc/test/testsupport/metrics/video_metrics_unittest.cc
index ba59b2f..0958dcf 100644
--- a/webrtc/test/testsupport/metrics/video_metrics_unittest.cc
+++ b/webrtc/test/testsupport/metrics/video_metrics_unittest.cc
@@ -15,7 +15,6 @@
namespace webrtc {
-static const char* kNonExistingFileName = "video_metrics_unittest_non_existing";
static const int kWidth = 352;
static const int kHeight = 288;
@@ -28,13 +27,17 @@
class VideoMetricsTest: public testing::Test {
protected:
VideoMetricsTest() {
- empty_file_ = webrtc::test::OutputPath() +
- "video_metrics_unittest_empty_file.tmp";
video_file_ = webrtc::test::ResourcePath("foreman_cif_short", "yuv");
}
virtual ~VideoMetricsTest() {}
void SetUp() {
+ non_existing_file_ = webrtc::test::OutputPath() +
+ "video_metrics_unittest_non_existing";
+ remove(non_existing_file_.c_str()); // To be sure it doesn't exist.
+
// Create an empty file:
+ empty_file_ = webrtc::test::TempFilename(
+ webrtc::test::OutputPath(), "video_metrics_unittest_empty_file");
FILE* dummy = fopen(empty_file_.c_str(), "wb");
fclose(dummy);
}
@@ -43,6 +46,7 @@
}
webrtc::test::QualityMetricsResult psnr_result_;
webrtc::test::QualityMetricsResult ssim_result_;
+ std::string non_existing_file_;
std::string empty_file_;
std::string video_file_;
};
@@ -71,40 +75,42 @@
// Tests that the right return code is given when the reference file is missing.
TEST_F(VideoMetricsTest, MissingReferenceFilePSNR) {
EXPECT_EQ(kMissingReferenceFileReturnCode,
- I420PSNRFromFiles(kNonExistingFileName, video_file_.c_str(),
- kWidth, kHeight, &ssim_result_));
+ I420PSNRFromFiles(non_existing_file_.c_str(),
+ video_file_.c_str(), kWidth, kHeight,
+ &ssim_result_));
}
TEST_F(VideoMetricsTest, MissingReferenceFileSSIM) {
EXPECT_EQ(kMissingReferenceFileReturnCode,
- I420SSIMFromFiles(kNonExistingFileName, video_file_.c_str(),
- kWidth, kHeight, &ssim_result_));
+ I420SSIMFromFiles(non_existing_file_.c_str(),
+ video_file_.c_str(), kWidth, kHeight,
+ &ssim_result_));
}
TEST_F(VideoMetricsTest, MissingReferenceFileBothMetrics) {
EXPECT_EQ(kMissingReferenceFileReturnCode,
- I420MetricsFromFiles(kNonExistingFileName, video_file_.c_str(),
- kWidth, kHeight,
+ I420MetricsFromFiles(non_existing_file_.c_str(),
+ video_file_.c_str(), kWidth, kHeight,
&psnr_result_, &ssim_result_));
}
// Tests that the right return code is given when the test file is missing.
TEST_F(VideoMetricsTest, MissingTestFilePSNR) {
EXPECT_EQ(kMissingTestFileReturnCode,
- I420PSNRFromFiles(video_file_.c_str(), kNonExistingFileName,
+ I420PSNRFromFiles(video_file_.c_str(), non_existing_file_.c_str(),
kWidth, kHeight, &ssim_result_));
}
TEST_F(VideoMetricsTest, MissingTestFileSSIM) {
EXPECT_EQ(kMissingTestFileReturnCode,
- I420SSIMFromFiles(video_file_.c_str(), kNonExistingFileName,
+ I420SSIMFromFiles(video_file_.c_str(), non_existing_file_.c_str(),
kWidth, kHeight, &ssim_result_));
}
TEST_F(VideoMetricsTest, MissingTestFileBothMetrics) {
EXPECT_EQ(kMissingTestFileReturnCode,
- I420MetricsFromFiles(video_file_.c_str(), kNonExistingFileName,
- kWidth, kHeight,
+ I420MetricsFromFiles(video_file_.c_str(),
+ non_existing_file_.c_str(), kWidth, kHeight,
&psnr_result_, &ssim_result_));
}
diff --git a/webrtc/tools/frame_editing/frame_editing_unittest.cc b/webrtc/tools/frame_editing/frame_editing_unittest.cc
index bdcc2f2..69468e1 100644
--- a/webrtc/tools/frame_editing/frame_editing_unittest.cc
+++ b/webrtc/tools/frame_editing/frame_editing_unittest.cc
@@ -30,7 +30,8 @@
protected:
virtual void SetUp() {
reference_video_ = ResourcePath("foreman_cif", "yuv");
- test_video_ = OutputPath() + "testvideo.yuv";
+ test_video_ = webrtc::test::TempFilename(webrtc::test::OutputPath(),
+ "frame_editing_unittest.yuv");
original_fid_ = fopen(reference_video_.c_str(), "rb");
ASSERT_TRUE(original_fid_ != NULL);
@@ -50,6 +51,7 @@
virtual void TearDown() {
fclose(original_fid_);
fclose(edited_fid_);
+ remove(test_video_.c_str());
}
// Compares the frames in both streams to the end of one of the streams.
void CompareToTheEnd(FILE* test_video_fid, FILE* ref_video_fid,