mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
131 lines
4.2 KiB
Java
131 lines
4.2 KiB
Java
|
#filter substitution
|
||
|
package @ANDROID_PACKAGE_NAME@.tests;
|
||
|
|
||
|
import @ANDROID_PACKAGE_NAME@.*;
|
||
|
|
||
|
import android.content.ContentResolver;
|
||
|
import android.content.ContentValues;
|
||
|
import android.database.Cursor;
|
||
|
import android.net.Uri;
|
||
|
import android.os.SystemClock;
|
||
|
import android.util.Log;
|
||
|
|
||
|
import java.lang.reflect.Method;
|
||
|
import java.util.UUID;
|
||
|
import java.util.Random;
|
||
|
|
||
|
/*
|
||
|
* This test is meant to exercise the performance of Fennec's
|
||
|
* history and bookmarks content provider.
|
||
|
*/
|
||
|
public class testBrowserProviderPerf extends ContentProviderTest {
|
||
|
private final int NUMBER_OF_URLS = 10000;
|
||
|
private final int NUMBER_OF_KNOWN_URLS = 200;
|
||
|
private final int BATCH_SIZE = 500;
|
||
|
|
||
|
private final String KNOWN_PREFIX = "mymozillatest";
|
||
|
|
||
|
private Method mFilterMethod;
|
||
|
private Random mGenerator;
|
||
|
|
||
|
private Uri mHistoryUri;
|
||
|
private String mHistoryTitleCol;
|
||
|
private String mHistoryUrlCol;
|
||
|
private String mHistoryVisitsCol;
|
||
|
private String mHistoryFaviconCol;
|
||
|
private String mHistoryThumbnailCol;
|
||
|
private String mHistoryLastVisitedCol;
|
||
|
|
||
|
private void loadFilterMethod() throws Exception {
|
||
|
Class browserDBClass = mClassLoader.loadClass("org.mozilla.gecko.db.BrowserDB");
|
||
|
|
||
|
mFilterMethod =
|
||
|
browserDBClass.getDeclaredMethod("filter", ContentResolver.class,
|
||
|
CharSequence.class, int.class);
|
||
|
}
|
||
|
|
||
|
private void loadContractInfo() throws Exception {
|
||
|
mHistoryUri = getContentUri("History");
|
||
|
|
||
|
mHistoryTitleCol = getStringColumn("History", "TITLE");
|
||
|
mHistoryUrlCol = getStringColumn("History", "URL");
|
||
|
mHistoryVisitsCol = getStringColumn("History", "VISITS");
|
||
|
mHistoryLastVisitedCol = getStringColumn("History", "DATE_LAST_VISITED");
|
||
|
mHistoryFaviconCol = getStringColumn("History", "FAVICON");
|
||
|
}
|
||
|
|
||
|
private ContentValues createHistoryEntry(String title, String url, int visits,
|
||
|
long lastVisited, byte[] favicon) throws Exception {
|
||
|
ContentValues historyEntry = new ContentValues();
|
||
|
|
||
|
historyEntry.put(mHistoryTitleCol, title);
|
||
|
historyEntry.put(mHistoryUrlCol, url);
|
||
|
historyEntry.put(mHistoryVisitsCol, visits);
|
||
|
historyEntry.put(mHistoryLastVisitedCol, lastVisited);
|
||
|
historyEntry.put(mHistoryFaviconCol, favicon);
|
||
|
|
||
|
return historyEntry;
|
||
|
}
|
||
|
|
||
|
private ContentValues createRandomHistoryEntry() throws Exception {
|
||
|
return createRandomHistoryEntry("");
|
||
|
}
|
||
|
|
||
|
private ContentValues createRandomHistoryEntry(String knownPrefix) throws Exception {
|
||
|
String randomStr = knownPrefix + UUID.randomUUID().toString();
|
||
|
int visits = mGenerator.nextInt(500);
|
||
|
|
||
|
return createHistoryEntry(randomStr, randomStr, visits,
|
||
|
System.currentTimeMillis(), randomStr.getBytes("UTF8"));
|
||
|
}
|
||
|
|
||
|
private void addTonsOfUrls() throws Exception {
|
||
|
ContentValues[] entries = new ContentValues[BATCH_SIZE];
|
||
|
|
||
|
for (int i = 0; i < NUMBER_OF_URLS / BATCH_SIZE; i++) {
|
||
|
entries = new ContentValues[BATCH_SIZE];
|
||
|
|
||
|
for (int j = 0; j < BATCH_SIZE; j++) {
|
||
|
entries[j] = createRandomHistoryEntry();
|
||
|
}
|
||
|
|
||
|
mProvider.bulkInsert(mHistoryUri, entries);
|
||
|
}
|
||
|
|
||
|
entries = new ContentValues[NUMBER_OF_KNOWN_URLS];
|
||
|
for (int i = 0; i < NUMBER_OF_KNOWN_URLS; i++) {
|
||
|
entries[i] = createRandomHistoryEntry(KNOWN_PREFIX);
|
||
|
}
|
||
|
|
||
|
mProvider.bulkInsert(mHistoryUri, entries);
|
||
|
}
|
||
|
|
||
|
public void setUp() throws Exception {
|
||
|
super.setUp("@ANDROID_PACKAGE_NAME@.db.BrowserProvider", "AUTHORITY");
|
||
|
|
||
|
mGenerator = new Random(19580427);
|
||
|
|
||
|
loadContractInfo();
|
||
|
loadFilterMethod();
|
||
|
}
|
||
|
|
||
|
public void testBrowserProviderPerf() throws Exception {
|
||
|
setTestType("talos");
|
||
|
|
||
|
addTonsOfUrls();
|
||
|
|
||
|
long start = SystemClock.uptimeMillis();
|
||
|
|
||
|
Cursor c = (Cursor) mFilterMethod.invoke(null, mResolver, KNOWN_PREFIX, 100);
|
||
|
c.getCount(); // ensure query is not lazy loaded
|
||
|
|
||
|
long end = SystemClock.uptimeMillis();
|
||
|
|
||
|
mAsserter.dumpLog("__start_report" + Long.toString(end - start) + "__end_report");
|
||
|
}
|
||
|
|
||
|
public void tearDown() throws Exception {
|
||
|
super.tearDown();
|
||
|
}
|
||
|
}
|