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 |