Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Unified Diff: chrome/browser/chromeos/file_system_provider/queue_unittest.cc

Issue 845083005: [fsp] Simplify aborting logic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a comment. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/file_system_provider/queue_unittest.cc
diff --git a/chrome/browser/chromeos/file_system_provider/queue_unittest.cc b/chrome/browser/chromeos/file_system_provider/queue_unittest.cc
index 9cda477697b7d5a40e3330c94664d0e4ee15dd27..a79242dc203f1560dabd30bfae5c96b314a0aa5a 100644
--- a/chrome/browser/chromeos/file_system_provider/queue_unittest.cc
+++ b/chrome/browser/chromeos/file_system_provider/queue_unittest.cc
@@ -15,22 +15,24 @@ namespace chromeos {
namespace file_system_provider {
namespace {
-void OnAbort(int* abort_counter,
- const storage::AsyncFileUtil::StatusCallback& callback) {
- (*abort_counter)++;
- callback.Run(base::File::FILE_ERROR_FAILED);
+void OnAbort(int* abort_counter) {
+ ++(*abort_counter);
}
AbortCallback OnRun(int* run_counter, int* abort_counter) {
- (*run_counter)++;
+ ++(*run_counter);
return base::Bind(&OnAbort, abort_counter);
}
-void OnAbortCallback(std::vector<base::File::Error>* log,
- base::File::Error result) {
- log->push_back(result);
+#if !defined(NDEBUG) && defined(GTEST_HAS_DEATH_TEST)
+
+AbortCallback OnRunNonAbortable(int* run_counter, int* abort_counter) {
+ ++(*run_counter);
+ return AbortCallback();
}
+#endif
+
} // namespace
class FileSystemProviderQueueTest : public testing::Test {
@@ -59,8 +61,8 @@ TEST_F(FileSystemProviderQueueTest, Enqueue_OneAtOnce) {
const size_t second_token = queue.NewToken();
int second_counter = 0;
int second_abort_counter = 0;
- const AbortCallback abort_callback = queue.Enqueue(
- second_token, base::Bind(&OnRun, &second_counter, &second_abort_counter));
+ queue.Enqueue(second_token,
+ base::Bind(&OnRun, &second_counter, &second_abort_counter));
base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, first_counter);
@@ -100,15 +102,13 @@ TEST_F(FileSystemProviderQueueTest, Enqueue_OneAtOnce) {
EXPECT_EQ(0, third_abort_counter);
// After aborting the second task, the third should run.
- std::vector<base::File::Error> abort_callback_log;
- abort_callback.Run(base::Bind(&OnAbortCallback, &abort_callback_log));
+ queue.Abort(second_token);
+ queue.Remove(second_token);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, first_counter);
EXPECT_EQ(0, first_abort_counter);
EXPECT_EQ(1, second_counter);
EXPECT_EQ(1, second_abort_counter);
- ASSERT_EQ(1u, abort_callback_log.size());
- EXPECT_EQ(base::File::FILE_ERROR_FAILED, abort_callback_log[0]);
EXPECT_EQ(1, third_counter);
EXPECT_EQ(0, third_abort_counter);
}
@@ -185,7 +185,7 @@ TEST_F(FileSystemProviderQueueTest, InvalidUsage_CompleteNotStarted) {
EXPECT_DEATH(queue.Remove(first_token), "");
}
-TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveNotCompleted) {
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveNotCompletedNorAborted) {
Queue queue(1);
const size_t first_token = queue.NewToken();
int first_counter = 0;
@@ -204,61 +204,97 @@ TEST_F(FileSystemProviderQueueTest, InvalidUsage_CompleteAfterAborting) {
const size_t first_token = queue.NewToken();
int first_counter = 0;
int first_abort_counter = 0;
- AbortCallback first_abort_callback = queue.Enqueue(
- first_token, base::Bind(&OnRun, &first_counter, &first_abort_counter));
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
base::RunLoop().RunUntilIdle();
// Run, then abort.
std::vector<base::File::Error> first_abort_callback_log;
- first_abort_callback.Run(
- base::Bind(&OnAbortCallback, &first_abort_callback_log));
+ queue.Abort(first_token);
EXPECT_DEATH(queue.Complete(first_token), "");
}
-TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveAfterAborting) {
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_AbortAfterCompleting) {
Queue queue(1);
const size_t first_token = queue.NewToken();
int first_counter = 0;
int first_abort_counter = 0;
- AbortCallback first_abort_callback = queue.Enqueue(
- first_token, base::Bind(&OnRun, &first_counter, &first_abort_counter));
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
base::RunLoop().RunUntilIdle();
- // Abort after executing.
- std::vector<base::File::Error> first_abort_callback_log;
- first_abort_callback.Run(
- base::Bind(&OnAbortCallback, &first_abort_callback_log));
+ queue.Complete(first_token);
+ EXPECT_DEATH(queue.Abort(first_token), "");
+}
+
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_CompleteTwice) {
+ Queue queue(1);
+ const size_t first_token = queue.NewToken();
+ int first_counter = 0;
+ int first_abort_counter = 0;
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
base::RunLoop().RunUntilIdle();
- // Remove before completing.
- EXPECT_DEATH(queue.Remove(first_token), "");
+ queue.Complete(first_token);
+ EXPECT_DEATH(queue.Complete(first_token), "");
}
-TEST_F(FileSystemProviderQueueTest, InvalidUsage_CompleteTwice) {
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_AbortTwice) {
+ Queue queue(1);
+ const size_t first_token = queue.NewToken();
+ int first_counter = 0;
+ int first_abort_counter = 0;
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
+
+ base::RunLoop().RunUntilIdle();
+
+ queue.Abort(first_token);
+ EXPECT_DEATH(queue.Abort(first_token), "");
+}
+
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveTwice) {
Queue queue(1);
const size_t first_token = queue.NewToken();
int first_counter = 0;
int first_abort_counter = 0;
- AbortCallback first_abort_callback = queue.Enqueue(
- first_token, base::Bind(&OnRun, &first_counter, &first_abort_counter));
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
base::RunLoop().RunUntilIdle();
queue.Complete(first_token);
+ queue.Remove(first_token);
EXPECT_DEATH(queue.Complete(first_token), "");
}
-TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveTwice) {
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_AbortAfterRemoving) {
Queue queue(1);
const size_t first_token = queue.NewToken();
int first_counter = 0;
int first_abort_counter = 0;
- AbortCallback first_abort_callback = queue.Enqueue(
- first_token, base::Bind(&OnRun, &first_counter, &first_abort_counter));
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
+
+ base::RunLoop().RunUntilIdle();
+
+ queue.Complete(first_token);
+ queue.Remove(first_token);
+ EXPECT_DEATH(queue.Abort(first_token), "");
+}
+
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_CompleteAfterRemoving) {
+ Queue queue(1);
+ const size_t first_token = queue.NewToken();
+ int first_counter = 0;
+ int first_abort_counter = 0;
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
base::RunLoop().RunUntilIdle();
@@ -267,6 +303,19 @@ TEST_F(FileSystemProviderQueueTest, InvalidUsage_RemoveTwice) {
EXPECT_DEATH(queue.Complete(first_token), "");
}
+TEST_F(FileSystemProviderQueueTest, InvalidUsage_AbortNonAbortable) {
+ Queue queue(1);
+ const size_t first_token = queue.NewToken();
+ int first_counter = 0;
+ int first_abort_counter = 0;
+ queue.Enqueue(first_token, base::Bind(&OnRunNonAbortable, &first_counter,
+ &first_abort_counter));
+
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_DEATH(queue.Abort(first_token), "");
+}
+
#endif
TEST_F(FileSystemProviderQueueTest, Enqueue_Abort) {
@@ -274,14 +323,14 @@ TEST_F(FileSystemProviderQueueTest, Enqueue_Abort) {
const size_t first_token = queue.NewToken();
int first_counter = 0;
int first_abort_counter = 0;
- const AbortCallback first_abort_callback = queue.Enqueue(
- first_token, base::Bind(&OnRun, &first_counter, &first_abort_counter));
+ queue.Enqueue(first_token,
+ base::Bind(&OnRun, &first_counter, &first_abort_counter));
const size_t second_token = queue.NewToken();
int second_counter = 0;
int second_abort_counter = 0;
- const AbortCallback second_abort_callback = queue.Enqueue(
- second_token, base::Bind(&OnRun, &second_counter, &second_abort_counter));
+ queue.Enqueue(second_token,
+ base::Bind(&OnRun, &second_counter, &second_abort_counter));
base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, first_counter);
@@ -290,34 +339,19 @@ TEST_F(FileSystemProviderQueueTest, Enqueue_Abort) {
EXPECT_EQ(0, second_abort_counter);
// Abort the first task while it's being executed.
- std::vector<base::File::Error> first_abort_callback_log;
- first_abort_callback.Run(
- base::Bind(&OnAbortCallback, &first_abort_callback_log));
+ queue.Abort(first_token);
+ queue.Remove(first_token);
// Abort the second task, before it's started.
EXPECT_EQ(0, second_counter);
- std::vector<base::File::Error> second_abort_callback_log;
- second_abort_callback.Run(
- base::Bind(&OnAbortCallback, &second_abort_callback_log));
+ queue.Abort(second_token);
+ queue.Remove(second_token);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(1, first_counter);
EXPECT_EQ(1, first_abort_counter);
- ASSERT_EQ(1u, first_abort_callback_log.size());
- EXPECT_EQ(base::File::FILE_ERROR_FAILED, first_abort_callback_log[0]);
EXPECT_EQ(0, second_counter);
EXPECT_EQ(0, second_abort_counter);
- ASSERT_EQ(1u, second_abort_callback_log.size());
- EXPECT_EQ(base::File::FILE_OK, second_abort_callback_log[0]);
-
- // Aborting again, should result in the FILE_ERROR_INVALID_MODIFICATION error
- // code.
- second_abort_callback.Run(
- base::Bind(&OnAbortCallback, &second_abort_callback_log));
-
- ASSERT_EQ(2u, second_abort_callback_log.size());
- EXPECT_EQ(base::File::FILE_ERROR_INVALID_OPERATION,
- second_abort_callback_log[1]);
}
} // namespace file_system_provider

Powered by Google App Engine
This is Rietveld 408576698