Skip to content

Commit d172f25

Browse files
Adding a looping test over the database, also running tests as async tasks so their progress can be published as they complete.
1 parent 3d5577f commit d172f25

File tree

6 files changed

+186
-104
lines changed

6 files changed

+186
-104
lines changed

net.zetetic.sqlcipher.test.iws

Lines changed: 108 additions & 89 deletions
Large diffs are not rendered by default.

src/main/java/net/zetetic/TestSuiteActivity.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import android.util.Log;
66
import android.view.View;
77
import android.widget.TextView;
8+
import net.zetetic.tests.ResultNotifier;
89
import net.zetetic.tests.TestResult;
910
import net.zetetic.tests.TestSuiteRunner;
1011

11-
import java.util.List;
12-
13-
public class TestSuiteActivity extends Activity {
12+
public class TestSuiteActivity extends Activity implements ResultNotifier {
1413

1514
private static String TAG = "net.zetetic.sqlcipher.test";
15+
TextView resultsView;
1616

1717
@Override
1818
public void onCreate(Bundle savedInstanceState) {
@@ -23,15 +23,14 @@ public void onCreate(Bundle savedInstanceState) {
2323

2424
public void onButtonClick(View view) {
2525

26+
resultsView = (TextView) findViewById(R.id.test_suite_results);
2627
ZeteticApplication.getInstance().setCurrentActivity(this);
27-
TestSuiteRunner runner = new TestSuiteRunner();
28-
List<TestResult> results = runner.runSuite();
28+
TestSuiteRunner runner = new TestSuiteRunner(this);
29+
runner.runSuite();
30+
}
2931

30-
TextView resultsView = (TextView) findViewById(R.id.test_suite_results);
31-
StringBuilder buffer = new StringBuilder();
32-
for(TestResult result : results){
33-
buffer.append(result.toString() + "\n");
34-
}
35-
resultsView.setText(buffer.toString());
32+
@Override
33+
public void send(TestResult result) {
34+
resultsView.append(result.toString());
3635
}
3736
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
import info.guardianproject.database.sqlcipher.SQLiteDatabase;
5+
6+
public class LoopingQueryTest extends SQLCipherTest {
7+
8+
@Override
9+
public boolean execute(SQLiteDatabase database) {
10+
int counter = 0;
11+
int iterations = 1000;
12+
database.execSQL("create table t1(a);");
13+
database.execSQL("insert into t1(a) values (?)", new Object[]{"foo"});
14+
StringBuilder buffer = new StringBuilder();
15+
while(counter < iterations){
16+
Cursor cursor = database.rawQuery("select * from t1", null);
17+
if(cursor != null){
18+
cursor.moveToFirst();
19+
buffer.append(cursor.getString(0));
20+
cursor.close();
21+
}
22+
counter++;
23+
}
24+
return buffer.toString().length() > 0;
25+
}
26+
27+
@Override
28+
public String getName() {
29+
return "Looping Query Test";
30+
}
31+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.zetetic.tests;
2+
3+
public interface ResultNotifier {
4+
void send(TestResult result);
5+
}

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,25 @@
88

99
public class TestSuiteRunner {
1010

11-
public List<TestResult> runSuite(){
11+
private ResultNotifier notifier;
12+
13+
public TestSuiteRunner(ResultNotifier notifier) {
14+
this.notifier = notifier;
15+
}
16+
17+
public void runSuite(){
1218

1319
SQLiteDatabase.loadLibs(ZeteticApplication.getInstance());
14-
List<TestResult> results = new ArrayList<TestResult>();
1520
for(SQLCipherTest test : getTestsToRun()){
16-
results.add(test.run());
21+
new TestTask(notifier).execute(test);
1722
}
18-
return results;
1923
}
2024

2125
private List<SQLCipherTest> getTestsToRun(){
2226
List<SQLCipherTest> tests = new ArrayList<SQLCipherTest>();
2327
tests.add(new NullQueryResultTest());
2428
tests.add(new CrossProcessCursorQueryTest());
29+
tests.add(new LoopingQueryTest());
2530
return tests;
2631
}
2732
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.zetetic.tests;
2+
3+
import android.os.AsyncTask;
4+
5+
public class TestTask extends AsyncTask<SQLCipherTest, Void, TestResult> {
6+
7+
private ResultNotifier notifier;
8+
9+
public TestTask(ResultNotifier notifier){
10+
this.notifier = notifier;
11+
}
12+
13+
@Override
14+
protected TestResult doInBackground(SQLCipherTest... sqlCipherTests) {
15+
SQLCipherTest test = sqlCipherTests[0];
16+
return test.run();
17+
}
18+
19+
@Override
20+
protected void onPostExecute(TestResult testResult) {
21+
notifier.send(testResult);
22+
}
23+
}

0 commit comments

Comments
 (0)