Merge changes I6c321260,I85d828a1 into main
* changes: protoutil: EncodedBuffer: Remove usage of PAGE_SIZE 4096 protoutil: Fix EncodedBuffer test
This commit is contained in:
@@ -80,6 +80,10 @@ cc_test {
|
|||||||
"libgmock",
|
"libgmock",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
test_suites: [
|
||||||
|
"general-tests",
|
||||||
|
],
|
||||||
|
|
||||||
proto: {
|
proto: {
|
||||||
type: "full",
|
type: "full",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Copyright (C) 2018 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.
|
|
||||||
-->
|
|
||||||
<configuration description="Config for libprotoutil_test">
|
|
||||||
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
|
|
||||||
<option name="cleanup" value="true" />
|
|
||||||
<option name="push" value="libprotoutil_test->/data/nativetest/libprotoutil_test" />
|
|
||||||
</target_preparer>
|
|
||||||
<option name="test-suite-tag" value="apct" />
|
|
||||||
<test class="com.android.tradefed.testtype.GTest" >
|
|
||||||
<option name="native-test-device-path" value="/data/nativetest" />
|
|
||||||
<option name="module-name" value="libprotoutil_test" />
|
|
||||||
</test>
|
|
||||||
</configuration>
|
|
||||||
12
libs/protoutil/TEST_MAPPING
Normal file
12
libs/protoutil/TEST_MAPPING
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"presubmit": [
|
||||||
|
{
|
||||||
|
"name": "libprotoutil_test"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hwasan-postsubmit": [
|
||||||
|
{
|
||||||
|
"name": "libprotoutil_test"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <android/util/EncodedBuffer.h>
|
#include <android/util/EncodedBuffer.h>
|
||||||
#include <android/util/protobuf.h>
|
#include <android/util/protobuf.h>
|
||||||
@@ -25,7 +26,8 @@
|
|||||||
namespace android {
|
namespace android {
|
||||||
namespace util {
|
namespace util {
|
||||||
|
|
||||||
const size_t BUFFER_SIZE = 8 * 1024; // 8 KB
|
constexpr size_t BUFFER_SIZE = 8 * 1024; // 8 KB
|
||||||
|
const size_t kPageSize = getpagesize();
|
||||||
|
|
||||||
EncodedBuffer::Pointer::Pointer() : Pointer(BUFFER_SIZE)
|
EncodedBuffer::Pointer::Pointer() : Pointer(BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
@@ -92,7 +94,7 @@ EncodedBuffer::EncodedBuffer(size_t chunkSize)
|
|||||||
{
|
{
|
||||||
// Align chunkSize to memory page size
|
// Align chunkSize to memory page size
|
||||||
chunkSize = chunkSize == 0 ? BUFFER_SIZE : chunkSize;
|
chunkSize = chunkSize == 0 ? BUFFER_SIZE : chunkSize;
|
||||||
mChunkSize = (chunkSize / PAGE_SIZE + ((chunkSize % PAGE_SIZE == 0) ? 0 : 1)) * PAGE_SIZE;
|
mChunkSize = (chunkSize + (kPageSize - 1)) & ~(kPageSize - 1);
|
||||||
mWp = Pointer(mChunkSize);
|
mWp = Pointer(mChunkSize);
|
||||||
mEp = Pointer(mChunkSize);
|
mEp = Pointer(mChunkSize);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,16 @@
|
|||||||
#include <gmock/gmock.h>
|
#include <gmock/gmock.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
using namespace android::util;
|
using namespace android::util;
|
||||||
using android::sp;
|
using android::sp;
|
||||||
|
|
||||||
constexpr size_t TEST_CHUNK_SIZE = 16UL;
|
constexpr size_t __TEST_CHUNK_SIZE = 16UL;
|
||||||
constexpr size_t TEST_CHUNK_HALF_SIZE = TEST_CHUNK_SIZE / 2;
|
const size_t kPageSize = getpagesize();
|
||||||
constexpr size_t TEST_CHUNK_3X_SIZE = 3 * TEST_CHUNK_SIZE;
|
const size_t TEST_CHUNK_SIZE = (__TEST_CHUNK_SIZE + (kPageSize - 1)) & ~(kPageSize - 1);
|
||||||
|
const size_t TEST_CHUNK_HALF_SIZE = TEST_CHUNK_SIZE / 2;
|
||||||
|
const size_t TEST_CHUNK_3X_SIZE = 3 * TEST_CHUNK_SIZE;
|
||||||
|
|
||||||
static void expectPointer(EncodedBuffer::Pointer* p, size_t pos) {
|
static void expectPointer(EncodedBuffer::Pointer* p, size_t pos) {
|
||||||
EXPECT_EQ(p->pos(), pos);
|
EXPECT_EQ(p->pos(), pos);
|
||||||
@@ -34,13 +38,13 @@ TEST(EncodedBufferTest, WriteSimple) {
|
|||||||
expectPointer(buffer->wp(), 0);
|
expectPointer(buffer->wp(), 0);
|
||||||
EXPECT_EQ(buffer->currentToWrite(), TEST_CHUNK_SIZE);
|
EXPECT_EQ(buffer->currentToWrite(), TEST_CHUNK_SIZE);
|
||||||
for (size_t i = 0; i < TEST_CHUNK_HALF_SIZE; i++) {
|
for (size_t i = 0; i < TEST_CHUNK_HALF_SIZE; i++) {
|
||||||
buffer->writeRawByte(50 + i);
|
buffer->writeRawByte(static_cast<uint8_t>(50 + i));
|
||||||
}
|
}
|
||||||
EXPECT_EQ(buffer->size(), TEST_CHUNK_HALF_SIZE);
|
EXPECT_EQ(buffer->size(), TEST_CHUNK_HALF_SIZE);
|
||||||
expectPointer(buffer->wp(), TEST_CHUNK_HALF_SIZE);
|
expectPointer(buffer->wp(), TEST_CHUNK_HALF_SIZE);
|
||||||
EXPECT_EQ(buffer->currentToWrite(), TEST_CHUNK_HALF_SIZE);
|
EXPECT_EQ(buffer->currentToWrite(), TEST_CHUNK_HALF_SIZE);
|
||||||
for (size_t i = 0; i < TEST_CHUNK_SIZE; i++) {
|
for (size_t i = 0; i < TEST_CHUNK_SIZE; i++) {
|
||||||
buffer->writeRawByte(80 + i);
|
buffer->writeRawByte(static_cast<uint8_t>(80 + i));
|
||||||
}
|
}
|
||||||
EXPECT_EQ(buffer->size(), TEST_CHUNK_SIZE + TEST_CHUNK_HALF_SIZE);
|
EXPECT_EQ(buffer->size(), TEST_CHUNK_SIZE + TEST_CHUNK_HALF_SIZE);
|
||||||
expectPointer(buffer->wp(), TEST_CHUNK_SIZE + TEST_CHUNK_HALF_SIZE);
|
expectPointer(buffer->wp(), TEST_CHUNK_SIZE + TEST_CHUNK_HALF_SIZE);
|
||||||
@@ -49,10 +53,10 @@ TEST(EncodedBufferTest, WriteSimple) {
|
|||||||
// verifies the buffer's data
|
// verifies the buffer's data
|
||||||
expectPointer(buffer->ep(), 0);
|
expectPointer(buffer->ep(), 0);
|
||||||
for (size_t i = 0; i < TEST_CHUNK_HALF_SIZE; i++) {
|
for (size_t i = 0; i < TEST_CHUNK_HALF_SIZE; i++) {
|
||||||
EXPECT_EQ(buffer->readRawByte(), 50 + i);
|
EXPECT_EQ(buffer->readRawByte(), static_cast<uint8_t>(50 + i));
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < TEST_CHUNK_SIZE; i++) {
|
for (size_t i = 0; i < TEST_CHUNK_SIZE; i++) {
|
||||||
EXPECT_EQ(buffer->readRawByte(), 80 + i);
|
EXPECT_EQ(buffer->readRawByte(), static_cast<uint8_t>(80 + i));
|
||||||
}
|
}
|
||||||
|
|
||||||
// clears the buffer
|
// clears the buffer
|
||||||
|
|||||||
Reference in New Issue
Block a user