diff options
Diffstat (limited to 'tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java')
-rw-r--r-- | tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java b/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java deleted file mode 100644 index f9a2ec0..0000000 --- a/tests/AndroidTests/src/com/android/unit_tests/CheckinProviderTest.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.unit_tests; - -import org.apache.commons.codec.binary.Base64; - -import android.content.ContentResolver; -import android.content.ContentValues; -import android.content.ContentUris; -import android.database.Cursor; -import android.net.Uri; -import android.provider.Checkin; -import android.server.checkin.CheckinProvider; -import android.server.data.BuildData; -import android.server.data.CrashData; -import android.server.data.ThrowableData; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; -import android.test.suitebuilder.annotation.SmallTest; - -import java.io.DataInputStream; -import java.io.ByteArrayInputStream; - -/** Unit test for {@link CheckinProvider}. */ -public class CheckinProviderTest extends AndroidTestCase { - @MediumTest - public void testEventReport() { - long start = System.currentTimeMillis(); - ContentResolver r = getContext().getContentResolver(); - Checkin.logEvent(r, Checkin.Events.Tag.TEST, "Test Value"); - - Cursor c = r.query(Checkin.Events.CONTENT_URI, - null, - Checkin.Events.TAG + "=?", - new String[] { Checkin.Events.Tag.TEST.toString() }, - null); - - long id = -1; - while (c.moveToNext()) { - String tag = c.getString(c.getColumnIndex(Checkin.Events.TAG)); - String value = c.getString(c.getColumnIndex(Checkin.Events.VALUE)); - long date = c.getLong(c.getColumnIndex(Checkin.Events.DATE)); - assertEquals(Checkin.Events.Tag.TEST.toString(), tag); - if ("Test Value".equals(value) && date >= start) { - assertTrue(id < 0); - id = c.getInt(c.getColumnIndex(Checkin.Events._ID)); - } - } - assertTrue(id > 0); - - int rows = r.delete(ContentUris.withAppendedId(Checkin.Events.CONTENT_URI, id), null, null); - assertEquals(1, rows); - c.requery(); - while (c.moveToNext()) { - long date = c.getLong(c.getColumnIndex(Checkin.Events.DATE)); - assertTrue(date < start); // Have deleted the only newer TEST. - } - - c.close(); - } - - @MediumTest - public void testStatsUpdate() { - ContentResolver r = getContext().getContentResolver(); - - // First, delete any existing data associated with the TEST tag. - Uri uri = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 0, 0); - assertNotNull(uri); - assertEquals(1, r.delete(uri, null, null)); - assertFalse(r.query(uri, null, null, null, null).moveToNext()); - - // Now, add a known quantity to the TEST tag. - Uri u2 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 1, 0.5); - assertFalse(uri.equals(u2)); - - Cursor c = r.query(u2, null, null, null, null); - assertTrue(c.moveToNext()); - assertEquals(1, c.getInt(c.getColumnIndex(Checkin.Stats.COUNT))); - assertEquals(0.5, c.getDouble(c.getColumnIndex(Checkin.Stats.SUM))); - assertFalse(c.moveToNext()); // Only one. - - // Add another known quantity to TEST (should sum with the first). - Uri u3 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, 2, 1.0); - assertEquals(u2, u3); - c.requery(); - assertTrue(c.moveToNext()); - assertEquals(3, c.getInt(c.getColumnIndex(Checkin.Stats.COUNT))); - assertEquals(1.5, c.getDouble(c.getColumnIndex(Checkin.Stats.SUM))); - assertFalse(c.moveToNext()); // Only one. - - // Now subtract the values; the whole row should disappear. - Uri u4 = Checkin.updateStats(r, Checkin.Stats.Tag.TEST, -3, -1.5); - assertNull(u4); - c.requery(); - assertFalse(c.moveToNext()); // Row has been deleted. - c.close(); - } - - @MediumTest - public void testCrashReport() throws Exception { - long start = System.currentTimeMillis(); - ContentResolver r = getContext().getContentResolver(); - - // Log a test (fake) crash report. - Checkin.reportCrash(r, new CrashData( - "Test", - "Test Activity", - new BuildData("Test Build", "123", start), - new ThrowableData(new RuntimeException("Test Exception")))); - - - // Crashes aren't indexed; go through them all to find the one we added. - Cursor c = r.query(Checkin.Crashes.CONTENT_URI, null, null, null, null); - - Uri uri = null; - while (c.moveToNext()) { - String coded = c.getString(c.getColumnIndex(Checkin.Crashes.DATA)); - byte[] bytes = Base64.decodeBase64(coded.getBytes()); - CrashData crash = new CrashData( - new DataInputStream(new ByteArrayInputStream(bytes))); - - // Should be exactly one recently added "Test" crash. - if (crash.getId().equals("Test") && crash.getTime() > start) { - assertEquals("Test Activity", crash.getActivity()); - assertEquals("Test Build", crash.getBuildData().getFingerprint()); - assertEquals("Test Exception", - crash.getThrowableData().getMessage()); - - assertNull(uri); - uri = ContentUris.withAppendedId(Checkin.Crashes.CONTENT_URI, c.getInt(c.getColumnIndex(Checkin.Crashes._ID))); - } - } - assertNotNull(uri); - c.close(); - - // Update the "logs" column. - ContentValues values = new ContentValues(); - values.put(Checkin.Crashes.LOGS, "Test Logs"); - assertEquals(1, r.update(uri, values, null, null)); - - c = r.query(uri, null, null, null, null); - assertTrue(c.moveToNext()); - String logs = c.getString(c.getColumnIndex(Checkin.Crashes.LOGS)); - assertEquals("Test Logs", logs); - c.deleteRow(); - c.close(); - - c.requery(); - assertFalse(c.moveToNext()); - c.close(); - } - - @MediumTest - public void testPropertiesRestricted() throws Exception { - ContentResolver r = getContext().getContentResolver(); - - // The test app doesn't have the permission to access properties, - // so any attempt to do so should fail. - try { - r.insert(Checkin.Properties.CONTENT_URI, new ContentValues()); - fail("SecurityException expected"); - } catch (SecurityException e) { - // expected - } - - try { - r.query(Checkin.Properties.CONTENT_URI, null, null, null, null); - fail("SecurityException expected"); - } catch (SecurityException e) { - // expected - } - } -} |