Skip to content

Commit 5b062bf

Browse files
Add average open time test
1 parent 6015cd6 commit 5b062bf

File tree

8 files changed

+172
-146
lines changed

8 files changed

+172
-146
lines changed

net.zetetic.sqlcipher.test.ipr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,9 @@
196196
</item>
197197
</group>
198198
</component>
199+
<component name="ProjectDictionaryState">
200+
<dictionary name="nparker" />
201+
</component>
199202
<component name="ProjectModuleManager">
200203
<modules>
201204
<module fileurl="file://$PROJECT_DIR$/net.zetetic.sqlcipher.test.iml" filepath="$PROJECT_DIR$/net.zetetic.sqlcipher.test.iml" />

net.zetetic.sqlcipher.test.iws

Lines changed: 99 additions & 145 deletions
Large diffs are not rendered by default.

res/layout/test_result_row.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,13 @@
2020
android:singleLine="true"
2121
android:ellipsize="end"
2222
android:layout_toLeftOf="@+id/test_status"/>
23+
<TextView android:id="@+id/test_message"
24+
android:layout_height="wrap_content"
25+
android:layout_width="fill_parent"
26+
android:gravity="left"
27+
android:textSize="14sp"
28+
android:singleLine="true"
29+
android:ellipsize="end"
30+
android:layout_below="@+id/test_name"
31+
android:layout_toLeftOf="@+id/test_status"/>
2332
</RelativeLayout>

src/main/java/net/zetetic/TestResultAdapter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public View getView(int position, View view, ViewGroup parent) {
2424
view = View.inflate(ZeteticApplication.getInstance(), R.layout.test_result_row, null);
2525
holder = new ViewHolder();
2626
holder.testName = (TextView) view.findViewById(R.id.test_name);
27+
holder.testMessage = (TextView) view.findViewById(R.id.test_message);
2728
holder.testStatus = (TextView) view.findViewById(R.id.test_status);
2829
view.setTag(holder);
2930
} else {
@@ -32,13 +33,20 @@ public View getView(int position, View view, ViewGroup parent) {
3233
TestResult result = getItem(position);
3334
holder.testName.setText(result.getName());
3435
holder.testStatus.setText(result.toString());
36+
holder.testMessage.setVisibility(isNullOrEmpty(result.getMessage()) ? View.GONE : View.VISIBLE);
37+
holder.testMessage.setText(result.getMessage());
3538
int displayColor = result.isSuccess() ? Color.GREEN : Color.RED;
3639
holder.testStatus.setTextColor(displayColor);
3740
return view;
3841
}
3942

43+
private boolean isNullOrEmpty(String value){
44+
return value == null || value.length() == 0;
45+
}
46+
4047
static class ViewHolder {
4148
TextView testName;
49+
TextView testMessage;
4250
TextView testStatus;
4351
}
4452
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package net.zetetic.tests;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.ZeteticApplication;
5+
6+
import java.io.File;
7+
import java.util.Date;
8+
9+
public class AverageOpenTimeTest extends SQLCipherTest {
10+
11+
int MAX_ATTEMPTS = 10;
12+
13+
@Override
14+
public boolean execute(SQLiteDatabase database) {
15+
16+
database.close();
17+
boolean status = false;
18+
Float runs = 0.0f;
19+
File databasePath = ZeteticApplication.getInstance().getDatabasePath(ZeteticApplication.DATABASE_NAME);
20+
for (int attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
21+
Date start = new Date();
22+
database = SQLiteDatabase.openOrCreateDatabase(databasePath, ZeteticApplication.DATABASE_PASSWORD, null);
23+
Date end = new Date();
24+
database.close();
25+
runs += (end.getTime() - start.getTime()) / 1000.0f;
26+
}
27+
status = true;
28+
setMessage(String.format("%s attempts, %.3f second average open time", MAX_ATTEMPTS, runs/MAX_ATTEMPTS));
29+
return status;
30+
}
31+
32+
@Override
33+
public String getName() {
34+
return "Average Database Open Time";
35+
}
36+
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public abstract class SQLCipherTest {
1111
public abstract boolean execute(SQLiteDatabase database);
1212
public abstract String getName();
1313
public String TAG = getClass().getSimpleName();
14+
private TestResult result;
1415

1516
private SQLiteDatabase database;
1617

@@ -23,7 +24,7 @@ protected void internalSetUp() {
2324

2425
public TestResult run() {
2526

26-
TestResult result = new TestResult(getName(), false);
27+
result = new TestResult(getName(), false);
2728
try {
2829
internalSetUp();
2930
result.setResult(execute(database));
@@ -34,6 +35,10 @@ public TestResult run() {
3435
return result;
3536
}
3637

38+
protected void setMessage(String message){
39+
result.setMessage(message);
40+
}
41+
3742
private void internalTearDown(){
3843
SQLiteDatabase.releaseMemory();
3944
tearDown(database);

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public class TestResult {
44

55
private String name;
66
private boolean success;
7+
private String message;
78

89
public TestResult(String name, boolean success){
910
this.name = name;
@@ -26,4 +27,13 @@ public boolean isSuccess() {
2627
public String toString() {
2728
return isSuccess() ? "OK" : "FAILED";
2829
}
30+
31+
32+
public void setMessage(String message) {
33+
this.message = message;
34+
}
35+
36+
public String getMessage(){
37+
return this.message;
38+
}
2939
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ private List<SQLCipherTest> getTestsToRun(){
6666
tests.add(new MigrationUserVersion());
6767
tests.add(new ExportToUnencryptedDatabase());
6868
tests.add(new QueryNonEncryptedDatabaseTest());
69+
tests.add(new AverageOpenTimeTest());
6970
return tests;
7071
}
7172
}

0 commit comments

Comments
 (0)