diff options
| author | 2024-03-20 20:27:18 +0000 | |
|---|---|---|
| committer | 2024-03-20 20:27:18 +0000 | |
| commit | 5dca2aa37eea305675027ef9ca77f3d22d3b4149 (patch) | |
| tree | 85cae912fd74a8eb1a70d9d11e5aea6528b6bcdc | |
| parent | 6bef7bab42971169e49e2839a6f114adfa52dccb (diff) | |
| parent | be7b2af75d322812277b88c37aaf9330248a8d8e (diff) | |
Merge "Initialize ConnectivityBlobStore and ConnectivityBlobStoreTest" into main
3 files changed, 129 insertions, 0 deletions
diff --git a/core/java/com/android/internal/net/ConnectivityBlobStore.java b/core/java/com/android/internal/net/ConnectivityBlobStore.java new file mode 100644 index 000000000000..51997cf13546 --- /dev/null +++ b/core/java/com/android/internal/net/ConnectivityBlobStore.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2024 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.internal.net; + +import android.database.sqlite.SQLiteDatabase; + +import com.android.internal.annotations.VisibleForTesting; + +import java.io.File; + +/** + * Database for storing blobs with a key of name strings. + * @hide + */ +public class ConnectivityBlobStore { + private static final String TAG = ConnectivityBlobStore.class.getSimpleName(); + private static final String TABLENAME = "blob_table"; + private static final String ROOT_DIR = "/data/misc/connectivityblobdb/"; + + private static final String CREATE_TABLE = + "CREATE TABLE IF NOT EXISTS " + TABLENAME + " (" + + "owner INTEGER," + + "name BLOB," + + "blob BLOB," + + "UNIQUE(owner, name));"; + + private final SQLiteDatabase mDb; + + /** + * Construct a ConnectivityBlobStore object. + * + * @param dbName the filename of the database to create/access. + */ + public ConnectivityBlobStore(String dbName) { + this(new File(ROOT_DIR + dbName)); + } + + @VisibleForTesting + public ConnectivityBlobStore(File file) { + final SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder() + .addOpenFlags(SQLiteDatabase.CREATE_IF_NECESSARY) + .addOpenFlags(SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) + .build(); + mDb = SQLiteDatabase.openDatabase(file, params); + mDb.execSQL(CREATE_TABLE); + } +} diff --git a/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java b/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java new file mode 100644 index 000000000000..e361ce3fb490 --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2024 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.internal.net; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import android.content.Context; + +import androidx.test.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class ConnectivityBlobStoreTest { + private static final String DATABASE_FILENAME = "ConnectivityBlobStore.db"; + + private Context mContext; + private File mFile; + + private ConnectivityBlobStore createConnectivityBlobStore() { + return new ConnectivityBlobStore(mFile); + } + + @Before + public void setUp() throws Exception { + mContext = InstrumentationRegistry.getContext(); + mFile = mContext.getDatabasePath(DATABASE_FILENAME); + } + + @After + public void tearDown() throws Exception { + mContext.deleteDatabase(DATABASE_FILENAME); + } + + @Test + public void testFileCreateDelete() { + assertFalse(mFile.exists()); + createConnectivityBlobStore(); + assertTrue(mFile.exists()); + + assertTrue(mContext.deleteDatabase(DATABASE_FILENAME)); + assertFalse(mFile.exists()); + } +} diff --git a/core/tests/coretests/src/com/android/internal/net/OWNERS b/core/tests/coretests/src/com/android/internal/net/OWNERS new file mode 100644 index 000000000000..f51ba475ab63 --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/net/OWNERS @@ -0,0 +1 @@ +include /core/java/com/android/internal/net/OWNERS |