Skip to content

Commit ce1296b

Browse files
Adding a test around getWritableDatabase() and getReadableDatabase() with a
transaction between them.
1 parent bc3e052 commit ce1296b

File tree

9 files changed

+239
-69
lines changed

9 files changed

+239
-69
lines changed
-3.39 KB
Binary file not shown.

libs/sqlcipher.jar

104 Bytes
Binary file not shown.

net.zetetic.sqlcipher.test.iml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,9 @@
3636
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/aidl" isTestSource="false" />
3737
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/r" isTestSource="false" />
3838
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" />
39-
<excludeFolder url="file://$MODULE_DIR$/target/classes" />
4039
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/combined-assets" />
4140
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/combined-resources" />
4241
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/extracted-dependencies" />
43-
<excludeFolder url="file://$MODULE_DIR$/target/output" />
44-
<excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
4542
</content>
4643
<orderEntry type="sourceFolder" forTests="false" />
4744
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.android:android:2.1.2" level="project" />

net.zetetic.sqlcipher.test.iws

Lines changed: 137 additions & 65 deletions
Large diffs are not rendered by default.

src/main/java/net/zetetic/ZeteticApplication.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,13 @@ public void delete1xDatabase() {
6363
File databaseFile = getInstance().getDatabasePath(ONE_X_DATABASE);
6464
databaseFile.delete();
6565
}
66+
67+
public void deleteDatabaseFileAndSiblings(String databaseName){
68+
69+
File databaseFile = ZeteticApplication.getInstance().getDatabasePath(databaseName);
70+
File databasesDirectory = new File(databaseFile.getParent());
71+
for(File file : databasesDirectory.listFiles()){
72+
file.delete();
73+
}
74+
}
6675
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.zetetic.tests;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
5+
public class AutoVacuumOverReadTest extends SQLCipherTest {
6+
@Override
7+
public boolean execute(SQLiteDatabase database) {
8+
9+
database.execSQL("BEGIN EXCLUSIVE");
10+
11+
String createTableMessages = "create table Message (_id integer primary key autoincrement, syncServerId text, syncServerTimeStamp integer, displayName text, timeStamp integer, subject text, flagRead integer, flagLoaded integer, flagFavorite integer, flagAttachment integer, flags integer, clientId integer, messageId text, mailboxKey integer, accountKey integer, fromList text, toList text, ccList text, bccList text, replyToList text, meetingInfo text);";
12+
String createTableMessagesUpdates = "create table Message_Updates (_id integer unique, syncServerId text, syncServerTimeStamp integer, displayName text, timeStamp integer, subject text, flagRead integer, flagLoaded integer, flagFavorite integer, flagAttachment integer, flags integer, clientId integer, messageId text, mailboxKey integer, accountKey integer, fromList text, toList text, ccList text, bccList text, replyToList text, meetingInfo text);";
13+
String createTableMessageDeletes = "create table Message_Deletes (_id integer unique, syncServerId text, syncServerTimeStamp integer, displayName text, timeStamp integer, subject text, flagRead integer, flagLoaded integer, flagFavorite integer, flagAttachment integer, flags integer, clientId integer, messageId text, mailboxKey integer, accountKey integer, fromList text, toList text, ccList text, bccList text, replyToList text, meetingInfo text);";
14+
15+
database.execSQL(createTableMessageDeletes);
16+
database.execSQL(createTableMessagesUpdates);
17+
database.execSQL(createTableMessages);
18+
19+
database.execSQL("COMMIT TRANSACTION");
20+
21+
return true;
22+
}
23+
24+
@Override
25+
public String getName() {
26+
return "Autovacuum Over Read Test";
27+
}
28+
}

src/main/java/net/zetetic/tests/PragmaCipherVersionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
public class PragmaCipherVersionTest extends SQLCipherTest {
77

8-
private final String CURRENT_CIPHER_VERSION = "2.0.5";
8+
private final String CURRENT_CIPHER_VERSION = "2.0.6";
99

1010
@Override
1111
public boolean execute(SQLiteDatabase database) {
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package net.zetetic.tests;
2+
3+
import android.content.Context;
4+
import android.database.Cursor;
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteOpenHelper;
7+
import net.zetetic.ZeteticApplication;
8+
9+
import java.io.File;
10+
11+
public class ReadableWritableAccessTest extends SQLCipherTest {
12+
13+
@Override
14+
public boolean execute(SQLiteDatabase database) {
15+
16+
database.close();
17+
ZeteticApplication.getInstance().deleteDatabaseFileAndSiblings(ZeteticApplication.DATABASE_NAME);
18+
String databasesFolderPath = ZeteticApplication.getInstance()
19+
.getDatabasePath(ZeteticApplication.DATABASE_NAME).getParent();
20+
File databasesFolder = new File(databasesFolderPath);
21+
databasesFolder.delete();
22+
23+
DatabaseHelper databaseHelper = new DatabaseHelper(ZeteticApplication.getInstance());
24+
25+
SQLiteDatabase writableDatabase = databaseHelper.getWritableDatabase(ZeteticApplication.DATABASE_PASSWORD);
26+
writableDatabase.beginTransaction();
27+
SQLiteDatabase readableDatabase = databaseHelper.getReadableDatabase(ZeteticApplication.DATABASE_PASSWORD);
28+
29+
Cursor results = readableDatabase.rawQuery("select count(*) from t1", new String[]{});
30+
results.moveToFirst();
31+
int rowCount = results.getInt(0);
32+
33+
results.close();
34+
writableDatabase.endTransaction();
35+
readableDatabase.close();
36+
writableDatabase.close();
37+
38+
return rowCount == 1;
39+
}
40+
41+
@Override
42+
public String getName() {
43+
return "Readable/Writable Access Test";
44+
}
45+
46+
private class DatabaseHelper extends SQLiteOpenHelper {
47+
48+
public DatabaseHelper(Context context) {
49+
super(context, ZeteticApplication.DATABASE_NAME, null, 1);
50+
}
51+
52+
@Override
53+
public void onCreate(SQLiteDatabase database) {
54+
database.execSQL("create table t1(a,b)");
55+
database.execSQL("insert into t1(a,b) values(?, ?)", new Object[]{"one for the money",
56+
"two for the show"});
57+
}
58+
59+
@Override
60+
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {}
61+
}
62+
}

src/main/java/net/zetetic/tests/TestSuiteRunner.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ private List<SQLCipherTest> getTestsToRun(){
5656
tests.add(new ImportUnencryptedDatabaseTest());
5757
tests.add(new FullTextSearchTest());
5858
tests.add(new ReadableDatabaseTest());
59+
tests.add(new AutoVacuumOverReadTest());
60+
tests.add(new ReadableWritableAccessTest());
5961
return tests;
6062
}
6163
}

0 commit comments

Comments
 (0)