Chromium Code Reviews| Index: sql/connection_unittest.cc |
| diff --git a/sql/connection_unittest.cc b/sql/connection_unittest.cc |
| index d933a6dab6e6d7cb9a3aca7c88a5d6e26f17daba..8f16a51b78feb95cb5e359c1e9970699ec47a985 100644 |
| --- a/sql/connection_unittest.cc |
| +++ b/sql/connection_unittest.cc |
| @@ -136,7 +136,6 @@ class ScopedCommitHook { |
| }; |
| } // namespace test |
| -} // namespace sql |
|
Scott Hess - ex-Googler
2015/10/19 22:23:41
Slight namespace rearrangement to allow test-frien
|
| namespace { |
| @@ -210,6 +209,29 @@ class ScopedUmaskSetter { |
| }; |
| #endif |
| +// SQLite function to adjust mock time by |argv[0]| milliseconds. |
|
Scott Hess - ex-Googler
2015/10/19 22:23:41
Moved here with no changes to keep it in an anonym
|
| +void sqlite_adjust_millis(sql::test::ScopedMockTimeSource* time_mock, |
| + sqlite3_context* context, |
| + int argc, sqlite3_value** argv) { |
| + int64 milliseconds = argc > 0 ? sqlite3_value_int64(argv[0]) : 1000; |
| + time_mock->adjust(base::TimeDelta::FromMilliseconds(milliseconds)); |
| + sqlite3_result_int64(context, milliseconds); |
| +} |
| + |
| +// Adjust mock time by |milliseconds| on commit. |
| +int adjust_commit_hook(sql::test::ScopedMockTimeSource* time_mock, |
| + int64 milliseconds) { |
| + time_mock->adjust(base::TimeDelta::FromMilliseconds(milliseconds)); |
| + return SQLITE_OK; |
| +} |
| + |
| +const char kCommitTime[] = "Sqlite.CommitTime.Test"; |
| +const char kAutoCommitTime[] = "Sqlite.AutoCommitTime.Test"; |
| +const char kUpdateTime[] = "Sqlite.UpdateTime.Test"; |
| +const char kQueryTime[] = "Sqlite.QueryTime.Test"; |
| + |
| +} // namespace |
| + |
| class SQLConnectionTest : public sql::SQLTestBase { |
| public: |
| void SetUp() override { |
| @@ -1147,27 +1169,6 @@ TEST_F(SQLConnectionTest, EventsStatement) { |
| } |
| } |
| -// SQLite function to adjust mock time by |argv[0]| milliseconds. |
| -void sqlite_adjust_millis(sql::test::ScopedMockTimeSource* time_mock, |
| - sqlite3_context* context, |
| - int argc, sqlite3_value** argv) { |
| - int64 milliseconds = argc > 0 ? sqlite3_value_int64(argv[0]) : 1000; |
| - time_mock->adjust(base::TimeDelta::FromMilliseconds(milliseconds)); |
| - sqlite3_result_int64(context, milliseconds); |
| -} |
| - |
| -// Adjust mock time by |milliseconds| on commit. |
| -int adjust_commit_hook(sql::test::ScopedMockTimeSource* time_mock, |
| - int64 milliseconds) { |
| - time_mock->adjust(base::TimeDelta::FromMilliseconds(milliseconds)); |
| - return SQLITE_OK; |
| -} |
| - |
| -const char kCommitTime[] = "Sqlite.CommitTime.Test"; |
| -const char kAutoCommitTime[] = "Sqlite.AutoCommitTime.Test"; |
| -const char kUpdateTime[] = "Sqlite.UpdateTime.Test"; |
| -const char kQueryTime[] = "Sqlite.QueryTime.Test"; |
| - |
| // Read-only query allocates time to QueryTime, but not others. |
| TEST_F(SQLConnectionTest, TimeQuery) { |
| // Re-open with histogram tag. Use an in-memory database to minimize variance |
| @@ -1387,4 +1388,38 @@ TEST_F(SQLConnectionTest, OnMemoryDump) { |
| EXPECT_GE(pmd.allocator_dumps().size(), 1u); |
| } |
| -} // namespace |
| +TEST_F(SQLConnectionTest, RegisterIntentToUpload) { |
| + base::FilePath breadcrumb_path( |
| + db_path().DirName().Append(FILE_PATH_LITERAL("sqlite-diag"))); |
| + |
| + // No stale diagnostic store. |
| + ASSERT_TRUE(!base::PathExists(breadcrumb_path)); |
| + |
| + // The histogram tag is required to enable diagnostic features. |
| + EXPECT_FALSE(db().RegisterIntentToUpload()); |
| + EXPECT_TRUE(!base::PathExists(breadcrumb_path)); |
| + |
| + db().Close(); |
| + db().set_histogram_tag("Test"); |
| + ASSERT_TRUE(db().Open(db_path())); |
| + |
| + // Should signal upload only once. |
| + EXPECT_TRUE(db().RegisterIntentToUpload()); |
| + EXPECT_TRUE(base::PathExists(breadcrumb_path)); |
| + EXPECT_FALSE(db().RegisterIntentToUpload()); |
| + |
| + // Changing the histogram tag should allow new upload to succeed. |
| + db().Close(); |
| + db().set_histogram_tag("NewTest"); |
| + ASSERT_TRUE(db().Open(db_path())); |
| + EXPECT_TRUE(db().RegisterIntentToUpload()); |
| + EXPECT_FALSE(db().RegisterIntentToUpload()); |
| + |
| + // Old tag is still prevented. |
| + db().Close(); |
| + db().set_histogram_tag("Test"); |
| + ASSERT_TRUE(db().Open(db_path())); |
| + EXPECT_FALSE(db().RegisterIntentToUpload()); |
| +} |
| + |
| +} // namespace sql |