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

Side by Side Diff: chrome/browser/extensions/activity_log/database_string_table_unittest.cc

Issue 21646004: Compressed activity log database storage (Closed) Base URL: http://git.chromium.org/chromium/src.git@refactor-cleanups
Patch Set: Delete a debugging log message Created 7 years, 4 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
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/files/scoped_temp_dir.h"
6 #include "chrome/browser/extensions/activity_log/database_string_table.h"
7 #include "sql/connection.h"
8 #include "sql/statement.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace extensions {
12
13 class DatabaseStringTableTest : public testing::Test {
14 protected:
15 virtual void SetUp() OVERRIDE {
16 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
17 base::FilePath db_file = temp_dir_.path().AppendASCII("StringTable.db");
18
19 ASSERT_TRUE(db_.Open(db_file));
20 }
21
22 virtual void TearDown() OVERRIDE {
23 db_.Close();
24 }
25
26 base::ScopedTempDir temp_dir_;
27 sql::Connection db_;
28 };
29
30 // Check that initializing the database works.
31 TEST_F(DatabaseStringTableTest, Init) {
32 DatabaseStringTable table("test");
33 table.Initialize(&db_);
34 ASSERT_TRUE(db_.DoesTableExist("test"));
35 ASSERT_TRUE(db_.DoesIndexExist("test_index"));
36 }
37
38 // Insert a new mapping into the table, then verify the table contents.
39 TEST_F(DatabaseStringTableTest, Insert) {
40 DatabaseStringTable table("test");
41 table.Initialize(&db_);
42 int64 id;
43 ASSERT_TRUE(table.StringToInt(&db_, "abc", &id));
44
45 sql::Statement query(
46 db_.GetUniqueStatement("SELECT id FROM test WHERE value = 'abc'"));
47 ASSERT_TRUE(query.Step());
48 int64 raw_id = query.ColumnInt64(0);
49 ASSERT_EQ(id, raw_id);
50 }
51
52 // Check that different strings are mapped to different values, and the same
53 // string is mapped to the same value repeatably.
54 TEST_F(DatabaseStringTableTest, InsertMultiple) {
55 DatabaseStringTable table("test");
56 table.Initialize(&db_);
57
58 int64 id1;
59 int64 id2;
60 ASSERT_TRUE(table.StringToInt(&db_, "string1", &id1));
61 ASSERT_TRUE(table.StringToInt(&db_, "string2", &id2));
62 ASSERT_NE(id1, id2);
63
64 int64 id1a;
65 ASSERT_TRUE(table.StringToInt(&db_, "string1", &id1a));
66 ASSERT_EQ(id1, id1a);
67 }
68
69 // Check that values can be read back from the database even after the
70 // in-memory cache is cleared.
71 TEST_F(DatabaseStringTableTest, CacheCleared) {
72 DatabaseStringTable table("test");
73 table.Initialize(&db_);
74
75 int64 id1;
76 ASSERT_TRUE(table.StringToInt(&db_, "string1", &id1));
77
78 table.ClearCache();
79
80 int64 id2;
81 ASSERT_TRUE(table.StringToInt(&db_, "string1", &id2));
82 ASSERT_EQ(id1, id2);
83 }
84
85 // Check that direct database modifications are picked up after the cache is
86 // cleared.
87 TEST_F(DatabaseStringTableTest, DatabaseModified) {
88 DatabaseStringTable table("test");
89 table.Initialize(&db_);
90
91 int64 id1;
92 ASSERT_TRUE(table.StringToInt(&db_, "modified", &id1));
93
94 ASSERT_TRUE(
95 db_.Execute("UPDATE test SET id = id + 1 WHERE value = 'modified'"));
96
97 int64 id2;
98 ASSERT_TRUE(table.StringToInt(&db_, "modified", &id2));
99 ASSERT_EQ(id1, id2);
100
101 table.ClearCache();
102
103 int64 id3;
104 ASSERT_TRUE(table.StringToInt(&db_, "modified", &id3));
105 ASSERT_EQ(id1 + 1, id3);
106 }
107
108 // Check that looking up an unknown id returns an error.
109 TEST_F(DatabaseStringTableTest, BadLookup) {
110 DatabaseStringTable table("test");
111 table.Initialize(&db_);
112 std::string value;
113 ASSERT_FALSE(table.IntToString(&db_, 1, &value));
114 }
115
116 // Check looking up an inserted value, both cached and not cached.
117 TEST_F(DatabaseStringTableTest, Lookup) {
118 DatabaseStringTable table("test");
119 table.Initialize(&db_);
120 int64 id;
121 ASSERT_TRUE(table.StringToInt(&db_, "abc", &id));
122
123 std::string value;
124 ASSERT_TRUE(table.IntToString(&db_, id, &value));
125 ASSERT_EQ("abc", value);
126
127 table.ClearCache();
128 value = "";
129 ASSERT_TRUE(table.IntToString(&db_, id, &value));
130 ASSERT_EQ("abc", value);
131 }
132
133 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698