Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a new test that uses AndroidJUnit4. And related gradle changes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
40f79eca30e59f72ad680a982a493c8b |
User & Date: | dan 2017-05-02 19:54:22.777 |
Context
2017-05-03
| ||
18:18 | Restore standard behaviours of (a) activating a connection pool in wal mode and (b) switching into wal mode automatically if the flag is set even if SQLITE_HAS_CODEC is defined (they were previously disabled in this case). Strip any URI parameters from the database name before it is included in any log messages. Always build with SQLITE_USE_URI=1 defined. (check-in: e8a9b149f7 user: dan tags: trunk) | |
2017-05-02
| ||
19:54 | Add a new test that uses AndroidJUnit4. And related gradle changes. (check-in: 40f79eca30 user: dan tags: trunk) | |
2017-05-01
| ||
15:14 | Define HAVE_USLEEP to avoid 1 second delays when sleep() is called (check-in: efde9e0e44 user: pjw tags: trunk) | |
Changes
Changes to gradle.properties.
︙ | ︙ | |||
13 14 15 16 17 18 19 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true | < | 13 14 15 16 17 18 19 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true |
Changes to sqlite3/build.gradle.
1 2 3 4 5 6 | apply plugin: 'com.android.library' android { compileSdkVersion 25 buildToolsVersion "25.0.2" | < < | < < < < | | | | | < > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | apply plugin: 'com.android.library' android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false debuggable true jniDebuggable true ndk { // Building with NDK_DEBUG=1 for mips crashes the compiler in ndk 14. abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips64' // 'mips' } } } //sourceSets.main.jni.srcDirs = [] //disable automatic ndk-build call externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile 'com.android.support:support-annotations:24.0.0' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' testCompile 'junit:junit:4.12' } |
Added sqlite3/src/androidTest/java/org/sqlite/database/SeeTest1.java.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | package org.sqlite.database; import android.content.Context; import android.database.Cursor; import android.os.AsyncTask; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.sqlite.database.sqlite.SQLiteDatabase; import org.sqlite.database.sqlite.SQLiteOpenHelper; import java.io.File; import static org.junit.Assert.*; class MyHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "mydb.db"; public MyHelper(Context ctx){ super(ctx, ctx.getDatabasePath(DATABASE_NAME).getAbsolutePath(), null, 1); } public void onConfigure(SQLiteDatabase db){ db.execSQL("PRAGMA key = 'secret'"); db.enableWriteAheadLogging(); final Cursor pragmaCursor = db.rawQuery("PRAGMA journal_mode = WAL", null); pragmaCursor.moveToFirst(); pragmaCursor.close(); } public void onCreate(SQLiteDatabase db){ db.execSQL("CREATE TABLE t1(x)"); } public void onUpgrade(SQLiteDatabase db, int iOld, int iNew){ } } /** * Created by dan on 5/3/17. */ @RunWith(AndroidJUnit4.class) public class SeeTest1 { private Context mContext; @Before public void setup() throws Exception { System.loadLibrary("sqliteX"); mContext = InstrumentationRegistry.getTargetContext(); // delete any existing database File databaseFile = mContext.getDatabasePath(MyHelper.DATABASE_NAME); databaseFile.mkdirs(); if (databaseFile.exists()) { databaseFile.delete(); } } @Test public void testAndroidDefaultWalMode() throws Exception { // create database final MyHelper helper = new MyHelper(mContext); helper.getWritableDatabase(); // verify that WAL journal mode is set final Cursor pragmaCursor = helper.getWritableDatabase().rawQuery("PRAGMA journal_mode", null); pragmaCursor.moveToFirst(); Assert.assertEquals(pragmaCursor.getString(pragmaCursor.getColumnIndex("journal_mode")), "wal"); pragmaCursor.close(); // start long running transaction AsyncTask.execute(new Runnable() { @Override public void run() { helper.getWritableDatabase().beginTransactionNonExclusive(); // simulate long insert try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } helper.getWritableDatabase().setTransactionSuccessful(); helper.getWritableDatabase().endTransaction(); } }); // wait a short time until the long transaction starts Thread.sleep(300); long startTime = System.currentTimeMillis(); //try to read something from the database while the slow transaction is running helper.getWritableDatabase().execSQL("SELECT * FROM t1"); //verify that the operation didn't wait until the 3000ms long operation finished if (System.currentTimeMillis() - startTime > 3000) { throw new Exception("WAL mode isn't working corectly - read operation was blocked"); } } } |