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

Side by Side Diff: components/leveldb/leveldb_service_unittest.cc

Issue 1825413003: leveldb_service: Attempt to fix deadlock on shutdown. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: typo Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « components/leveldb/leveldb_file_thread.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/macros.h" 5 #include "base/macros.h"
6 #include "components/filesystem/public/interfaces/directory.mojom.h" 6 #include "components/filesystem/public/interfaces/directory.mojom.h"
7 #include "components/filesystem/public/interfaces/file_system.mojom.h" 7 #include "components/filesystem/public/interfaces/file_system.mojom.h"
8 #include "components/filesystem/public/interfaces/types.mojom.h" 8 #include "components/filesystem/public/interfaces/types.mojom.h"
9 #include "components/leveldb/public/interfaces/leveldb.mojom.h" 9 #include "components/leveldb/public/interfaces/leveldb.mojom.h"
10 #include "mojo/common/common_type_converters.h" 10 #include "mojo/common/common_type_converters.h"
(...skipping 14 matching lines...) Expand all
25 ~LevelDBApptest() override {} 25 ~LevelDBApptest() override {}
26 26
27 protected: 27 protected:
28 // Overridden from mojo::test::ApplicationTestBase: 28 // Overridden from mojo::test::ApplicationTestBase:
29 void SetUp() override { 29 void SetUp() override {
30 ShellTest::SetUp(); 30 ShellTest::SetUp();
31 connector()->ConnectToInterface("mojo:filesystem", &files_); 31 connector()->ConnectToInterface("mojo:filesystem", &files_);
32 connector()->ConnectToInterface("mojo:leveldb", &leveldb_); 32 connector()->ConnectToInterface("mojo:leveldb", &leveldb_);
33 } 33 }
34 34
35 void TearDown() override {
36 leveldb_.reset();
37 files_.reset();
38 ShellTest::TearDown();
39 }
40
35 // Note: This has an out parameter rather than returning the |DirectoryPtr|, 41 // Note: This has an out parameter rather than returning the |DirectoryPtr|,
36 // since |ASSERT_...()| doesn't work with return values. 42 // since |ASSERT_...()| doesn't work with return values.
37 void GetUserDataDir(filesystem::DirectoryPtr* directory) { 43 void GetUserDataDir(filesystem::DirectoryPtr* directory) {
38 FileError error = FileError::FAILED; 44 FileError error = FileError::FAILED;
39 files()->OpenPersistentFileSystem(GetProxy(directory), 45 files()->OpenPersistentFileSystem(GetProxy(directory),
40 mojo::Capture(&error)); 46 mojo::Capture(&error));
41 ASSERT_TRUE(files().WaitForIncomingResponse()); 47 ASSERT_TRUE(files().WaitForIncomingResponse());
42 ASSERT_EQ(FileError::OK, error); 48 ASSERT_EQ(FileError::OK, error);
43 } 49 }
44 50
45 filesystem::FileSystemPtr& files() { return files_; } 51 filesystem::FileSystemPtr& files() { return files_; }
46 LevelDBServicePtr& leveldb() { return leveldb_; } 52 LevelDBServicePtr& leveldb() { return leveldb_; }
47 53
48 private: 54 private:
49 filesystem::FileSystemPtr files_; 55 filesystem::FileSystemPtr files_;
50 LevelDBServicePtr leveldb_; 56 LevelDBServicePtr leveldb_;
51 57
52 DISALLOW_COPY_AND_ASSIGN(LevelDBApptest); 58 DISALLOW_COPY_AND_ASSIGN(LevelDBApptest);
53 }; 59 };
54 60
55 #if defined(OS_LINUX) 61 TEST_F(LevelDBApptest, Basic) {
56 // Flaky on Linux: http://crbug.com/594977,
57 #define MAYBE_Basic DISABLED_Basic
58 #else
59 #define MAYBE_Basic Basic
60 #endif
61 TEST_F(LevelDBApptest, MAYBE_Basic) {
62 filesystem::DirectoryPtr directory; 62 filesystem::DirectoryPtr directory;
63 GetUserDataDir(&directory); 63 GetUserDataDir(&directory);
64 64
65 DatabaseError error; 65 DatabaseError error;
66 LevelDBDatabasePtr database; 66 LevelDBDatabasePtr database;
67 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 67 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
68 Capture(&error)); 68 Capture(&error));
69 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 69 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
70 EXPECT_EQ(DatabaseError::OK, error); 70 EXPECT_EQ(DatabaseError::OK, error);
71 71
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 value.SetToEmpty(); 267 value.SetToEmpty();
268 database->GetFromSnapshot( 268 database->GetFromSnapshot(
269 key_value_snapshot, 269 key_value_snapshot,
270 mojo::Array<uint8_t>::From(std::string("key")), 270 mojo::Array<uint8_t>::From(std::string("key")),
271 Capture(&error, &value)); 271 Capture(&error, &value));
272 ASSERT_TRUE(database.WaitForIncomingResponse()); 272 ASSERT_TRUE(database.WaitForIncomingResponse());
273 EXPECT_EQ(DatabaseError::OK, error); 273 EXPECT_EQ(DatabaseError::OK, error);
274 EXPECT_EQ("value", value.To<std::string>()); 274 EXPECT_EQ("value", value.To<std::string>());
275 } 275 }
276 276
277 #if defined(OS_LINUX)
278 // Flaky on Linux: http://crbug.com/594977,
279 #define MAYBE_InvalidArgumentOnInvalidSnapshot DISABLED_InvalidArgumentOnInvalid Snapshot
280 #else
281 #define MAYBE_InvalidArgumentOnInvalidSnapshot InvalidArgumentOnInvalidSnapshot
282 #endif
283 TEST_F(LevelDBApptest, InvalidArgumentOnInvalidSnapshot) { 277 TEST_F(LevelDBApptest, InvalidArgumentOnInvalidSnapshot) {
284 filesystem::DirectoryPtr directory; 278 filesystem::DirectoryPtr directory;
285 GetUserDataDir(&directory); 279 GetUserDataDir(&directory);
286 280
287 LevelDBDatabasePtr database; 281 LevelDBDatabasePtr database;
288 DatabaseError error = DatabaseError::INVALID_ARGUMENT; 282 DatabaseError error = DatabaseError::INVALID_ARGUMENT;
289 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 283 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
290 Capture(&error)); 284 Capture(&error));
291 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 285 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
292 EXPECT_EQ(DatabaseError::OK, error); 286 EXPECT_EQ(DatabaseError::OK, error);
293 287
294 uint64_t invalid_snapshot = 8; 288 uint64_t invalid_snapshot = 8;
295 289
296 error = DatabaseError::OK; 290 error = DatabaseError::OK;
297 mojo::Array<uint8_t> value; 291 mojo::Array<uint8_t> value;
298 database->GetFromSnapshot( 292 database->GetFromSnapshot(
299 invalid_snapshot, 293 invalid_snapshot,
300 mojo::Array<uint8_t>::From(std::string("key")), 294 mojo::Array<uint8_t>::From(std::string("key")),
301 Capture(&error, &value)); 295 Capture(&error, &value));
302 ASSERT_TRUE(database.WaitForIncomingResponse()); 296 ASSERT_TRUE(database.WaitForIncomingResponse());
303 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error); 297 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error);
304 } 298 }
305 299
306 } // namespace 300 } // namespace
307 } // namespace leveldb 301 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/leveldb/leveldb_file_thread.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698