diff options
author | Sudheer Shanka <sudheersai@google.com> | 2020-02-29 16:49:27 -0800 |
---|---|---|
committer | Sudheer Shanka <sudheersai@google.com> | 2020-03-02 11:32:11 -0800 |
commit | 96b45378fabca448edfff46b0ff897f649707ffa (patch) | |
tree | 1094559b881bc2c2c4d0c84159bb08db4e660454 /tests/BlobStoreTestUtils/src | |
parent | b629d69db047c40f2b110f2d73ad8ceb1b32ea68 (diff) |
Add more blobstore related CTS tets.
Bug: 150619869
Test: atest --test-mapping apex/blobstore
Change-Id: I73ced7e340dc863a7b5895be23def1a8df87b74e
Diffstat (limited to 'tests/BlobStoreTestUtils/src')
-rw-r--r-- | tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java | 41 | ||||
-rw-r--r-- | tests/BlobStoreTestUtils/src/com/android/utils/blob/Utils.java | 59 |
2 files changed, 66 insertions, 34 deletions
diff --git a/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java b/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java index f96766a1d3ad..504bd1727682 100644 --- a/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java +++ b/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java @@ -15,6 +15,9 @@ */ package com.android.utils.blob; +import static com.android.utils.blob.Utils.BUFFER_SIZE_BYTES; +import static com.android.utils.blob.Utils.copy; + import static com.google.common.truth.Truth.assertThat; import android.app.blob.BlobHandle; @@ -23,22 +26,17 @@ import android.content.Context; import android.os.FileUtils; import android.os.ParcelFileDescriptor; -import java.io.BufferedInputStream; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; import java.io.RandomAccessFile; -import java.nio.file.Files; import java.security.MessageDigest; import java.util.Random; import java.util.concurrent.TimeUnit; public class DummyBlobData { private static final long DEFAULT_SIZE_BYTES = 10 * 1024L * 1024L; - private static final int BUFFER_SIZE_BYTES = 16 * 1024; private final Context mContext; private final Random mRandom; @@ -83,7 +81,7 @@ public class DummyBlobData { } public BlobHandle getBlobHandle() throws Exception { - return BlobHandle.createWithSha256(createSha256Digest(mFile), mLabel, + return BlobHandle.createWithSha256(mFileDigest, mLabel, mExpiryTimeMs, "test_tag"); } @@ -106,11 +104,7 @@ public class DummyBlobData { public void writeToSession(BlobStoreManager.Session session, long offsetBytes, long lengthBytes) throws Exception { try (FileInputStream in = new FileInputStream(mFile)) { - in.getChannel().position(offsetBytes); - try (FileOutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream( - session.openWrite(offsetBytes, lengthBytes))) { - copy(in, out, lengthBytes); - } + Utils.writeToSession(session, in, offsetBytes, lengthBytes); } } @@ -123,16 +117,8 @@ public class DummyBlobData { } } - private void copy(InputStream in, OutputStream out, long lengthBytes) throws Exception { - final byte[] buffer = new byte[BUFFER_SIZE_BYTES]; - long bytesWrittern = 0; - while (bytesWrittern < lengthBytes) { - final int toWrite = (bytesWrittern + buffer.length <= lengthBytes) - ? buffer.length : (int) (lengthBytes - bytesWrittern); - in.read(buffer, 0, toWrite); - out.write(buffer, 0, toWrite); - bytesWrittern += toWrite; - } + public ParcelFileDescriptor openForRead() throws Exception { + return ParcelFileDescriptor.open(mFile, ParcelFileDescriptor.MODE_READ_ONLY); } public void readFromSessionAndVerifyBytes(BlobStoreManager.Session session, @@ -198,19 +184,6 @@ public class DummyBlobData { return digest.digest(); } - private byte[] createSha256Digest(File file) throws Exception { - final MessageDigest digest = MessageDigest.getInstance("SHA-256"); - try (BufferedInputStream in = new BufferedInputStream( - Files.newInputStream(file.toPath()))) { - final byte[] buffer = new byte[BUFFER_SIZE_BYTES]; - int bytesRead; - while ((bytesRead = in.read(buffer)) > 0) { - digest.update(buffer, 0, bytesRead); - } - } - return digest.digest(); - } - private void writeRandomData(RandomAccessFile file, long fileSize) throws Exception { long bytesWritten = 0; diff --git a/tests/BlobStoreTestUtils/src/com/android/utils/blob/Utils.java b/tests/BlobStoreTestUtils/src/com/android/utils/blob/Utils.java new file mode 100644 index 000000000000..c35385cd0429 --- /dev/null +++ b/tests/BlobStoreTestUtils/src/com/android/utils/blob/Utils.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2020 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.utils.blob; + +import android.app.blob.BlobStoreManager; +import android.os.ParcelFileDescriptor; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class Utils { + public static final int BUFFER_SIZE_BYTES = 16 * 1024; + + public static void copy(InputStream in, OutputStream out, long lengthBytes) + throws IOException { + final byte[] buffer = new byte[BUFFER_SIZE_BYTES]; + long bytesWrittern = 0; + while (bytesWrittern < lengthBytes) { + final int toWrite = (bytesWrittern + buffer.length <= lengthBytes) + ? buffer.length : (int) (lengthBytes - bytesWrittern); + in.read(buffer, 0, toWrite); + out.write(buffer, 0, toWrite); + bytesWrittern += toWrite; + } + } + + public static void writeToSession(BlobStoreManager.Session session, ParcelFileDescriptor input, + long lengthBytes) throws IOException { + try (FileInputStream in = new ParcelFileDescriptor.AutoCloseInputStream(input)) { + writeToSession(session, in, 0, lengthBytes); + } + } + + public static void writeToSession(BlobStoreManager.Session session, FileInputStream in, + long offsetBytes, long lengthBytes) throws IOException { + in.getChannel().position(offsetBytes); + try (FileOutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream( + session.openWrite(offsetBytes, lengthBytes))) { + copy(in, out, lengthBytes); + } + } +} |