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

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

Issue 1935863002: mojo: Fix leveldb unittests by making fs::Directories cloneable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Gyp continues to exist. Created 4 years, 7 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/filesystem/shared_temp_dir.cc ('k') | services/user/user_service.cc » ('j') | 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/bind.h"
5 #include "base/macros.h" 6 #include "base/macros.h"
6 #include "components/filesystem/public/interfaces/directory.mojom.h" 7 #include "components/filesystem/public/interfaces/directory.mojom.h"
7 #include "components/filesystem/public/interfaces/file_system.mojom.h" 8 #include "components/filesystem/public/interfaces/file_system.mojom.h"
8 #include "components/filesystem/public/interfaces/types.mojom.h" 9 #include "components/filesystem/public/interfaces/types.mojom.h"
9 #include "components/leveldb/public/interfaces/leveldb.mojom.h" 10 #include "components/leveldb/public/interfaces/leveldb.mojom.h"
10 #include "mojo/common/common_type_converters.h" 11 #include "mojo/common/common_type_converters.h"
11 #include "mojo/public/cpp/bindings/binding_set.h" 12 #include "mojo/public/cpp/bindings/binding_set.h"
12 #include "mojo/util/capture_util.h" 13 #include "mojo/util/capture_util.h"
13 #include "services/shell/public/cpp/shell_connection.h" 14 #include "services/shell/public/cpp/shell_connection.h"
14 #include "services/shell/public/cpp/shell_test.h" 15 #include "services/shell/public/cpp/shell_test.h"
(...skipping 18 matching lines...) Expand all
33 } 34 }
34 35
35 void TearDown() override { 36 void TearDown() override {
36 leveldb_.reset(); 37 leveldb_.reset();
37 files_.reset(); 38 files_.reset();
38 ShellTest::TearDown(); 39 ShellTest::TearDown();
39 } 40 }
40 41
41 // Note: This has an out parameter rather than returning the |DirectoryPtr|, 42 // Note: This has an out parameter rather than returning the |DirectoryPtr|,
42 // since |ASSERT_...()| doesn't work with return values. 43 // since |ASSERT_...()| doesn't work with return values.
43 void GetUserDataDir(filesystem::DirectoryPtr* directory) { 44 void GetTempDirectory(filesystem::DirectoryPtr* directory) {
44 FileError error = FileError::FAILED; 45 FileError error = FileError::FAILED;
45 files()->OpenPersistentFileSystem(GetProxy(directory), 46 files()->OpenTempDirectory(GetProxy(directory), mojo::Capture(&error));
46 mojo::Capture(&error));
47 ASSERT_TRUE(files().WaitForIncomingResponse()); 47 ASSERT_TRUE(files().WaitForIncomingResponse());
48 ASSERT_EQ(FileError::OK, error); 48 ASSERT_EQ(FileError::OK, error);
49 } 49 }
50 50
51 filesystem::FileSystemPtr& files() { return files_; } 51 filesystem::FileSystemPtr& files() { return files_; }
52 LevelDBServicePtr& leveldb() { return leveldb_; } 52 LevelDBServicePtr& leveldb() { return leveldb_; }
53 53
54 private: 54 private:
55 filesystem::FileSystemPtr files_; 55 filesystem::FileSystemPtr files_;
56 LevelDBServicePtr leveldb_; 56 LevelDBServicePtr leveldb_;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // Reading "key" should be invalid now. 180 // Reading "key" should be invalid now.
181 error = DatabaseError::INVALID_ARGUMENT; 181 error = DatabaseError::INVALID_ARGUMENT;
182 value = nullptr; 182 value = nullptr;
183 database->Get(mojo::Array<uint8_t>::From(std::string("prefix-key2")), 183 database->Get(mojo::Array<uint8_t>::From(std::string("prefix-key2")),
184 Capture(&error, &value)); 184 Capture(&error, &value));
185 ASSERT_TRUE(database.WaitForIncomingResponse()); 185 ASSERT_TRUE(database.WaitForIncomingResponse());
186 EXPECT_EQ(DatabaseError::NOT_FOUND, error); 186 EXPECT_EQ(DatabaseError::NOT_FOUND, error);
187 EXPECT_EQ("", value.To<std::string>()); 187 EXPECT_EQ("", value.To<std::string>());
188 } 188 }
189 189
190 // TODO(crbug.com/602820) Test is flaky. 190 TEST_F(LevelDBServiceTest, Reconnect) {
191 #if defined(OS_LINUX) || defined(OS_WIN)
192 #define MAYBE_Reconnect DISABLED_Reconnect
193 #else
194 #define MAYBE_Reconnect Reconnect
195 #endif
196 TEST_F(LevelDBServiceTest, MAYBE_Reconnect) {
197 DatabaseError error; 191 DatabaseError error;
198 192
193 filesystem::DirectoryPtr temp_directory;
194 GetTempDirectory(&temp_directory);
195
199 { 196 {
200 filesystem::DirectoryPtr directory; 197 filesystem::DirectoryPtr directory;
201 GetUserDataDir(&directory); 198 temp_directory->Clone(GetProxy(&directory));
202 199
203 LevelDBDatabasePtr database; 200 LevelDBDatabasePtr database;
204 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 201 leveldb::OpenOptionsPtr options = leveldb::OpenOptions::New();
205 Capture(&error)); 202 options->error_if_exists = true;
203 options->create_if_missing = true;
204 leveldb()->OpenWithOptions(std::move(options),
205 std::move(directory), "test",
206 GetProxy(&database),
207 Capture(&error));
206 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 208 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
207 EXPECT_EQ(DatabaseError::OK, error); 209 EXPECT_EQ(DatabaseError::OK, error);
208 210
209 // Write a key to the database. 211 // Write a key to the database.
210 error = DatabaseError::INVALID_ARGUMENT; 212 error = DatabaseError::INVALID_ARGUMENT;
211 database->Put(mojo::Array<uint8_t>::From(std::string("key")), 213 database->Put(mojo::Array<uint8_t>::From(std::string("key")),
212 mojo::Array<uint8_t>::From(std::string("value")), 214 mojo::Array<uint8_t>::From(std::string("value")),
213 Capture(&error)); 215 Capture(&error));
214 ASSERT_TRUE(database.WaitForIncomingResponse()); 216 ASSERT_TRUE(database.WaitForIncomingResponse());
215 EXPECT_EQ(DatabaseError::OK, error); 217 EXPECT_EQ(DatabaseError::OK, error);
216 218
217 // The database should go out of scope here. 219 // The database should go out of scope here.
218 } 220 }
219 221
220 { 222 {
221 filesystem::DirectoryPtr directory; 223 filesystem::DirectoryPtr directory;
222 GetUserDataDir(&directory); 224 temp_directory->Clone(GetProxy(&directory));
223 225
224 // Reconnect to the database. 226 // Reconnect to the database.
225 LevelDBDatabasePtr database; 227 LevelDBDatabasePtr database;
226 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 228 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
227 Capture(&error)); 229 Capture(&error));
228 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 230 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
229 EXPECT_EQ(DatabaseError::OK, error); 231 EXPECT_EQ(DatabaseError::OK, error);
230 232
231 // We should still be able to read the key back from the database. 233 // We should still be able to read the key back from the database.
232 error = DatabaseError::INVALID_ARGUMENT; 234 error = DatabaseError::INVALID_ARGUMENT;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 key_values.SetToEmpty(); 492 key_values.SetToEmpty();
491 database->GetPrefixed(mojo::Array<uint8_t>::From(prefix), 493 database->GetPrefixed(mojo::Array<uint8_t>::From(prefix),
492 Capture(&error, &key_values)); 494 Capture(&error, &key_values));
493 ASSERT_TRUE(database.WaitForIncomingResponse()); 495 ASSERT_TRUE(database.WaitForIncomingResponse());
494 EXPECT_EQ(DatabaseError::OK, error); 496 EXPECT_EQ(DatabaseError::OK, error);
495 EXPECT_TRUE(key_values.empty()); 497 EXPECT_TRUE(key_values.empty());
496 } 498 }
497 499
498 } // namespace 500 } // namespace
499 } // namespace leveldb 501 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/filesystem/shared_temp_dir.cc ('k') | services/user/user_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698