diff options
| author | 2023-01-05 16:54:09 +0000 | |
|---|---|---|
| committer | 2023-01-05 16:54:09 +0000 | |
| commit | bf5f7d5b093b37ee83deb0e34e0632ad31b1574b (patch) | |
| tree | 2909eec524b910aa36de83fbc8123e471038de83 | |
| parent | fd495c957b5e9074110fa2c054d29a5214b37c2f (diff) | |
| parent | 3eb362d8603562d99beac91d313e8f3cf3fd3f7a (diff) | |
Merge "Add test to Binder RecordedTransaction" am: 3eb362d860
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2373169
Change-Id: I276a65de68419718f59dc3b403bc85f08b228c6c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/binder/tests/Android.bp | 1 | ||||
| -rw-r--r-- | libs/binder/tests/binderRecordedTransactionTest.cpp | 53 |
2 files changed, 54 insertions, 0 deletions
diff --git a/libs/binder/tests/Android.bp b/libs/binder/tests/Android.bp index a999d59d35..5db3187320 100644 --- a/libs/binder/tests/Android.bp +++ b/libs/binder/tests/Android.bp @@ -100,6 +100,7 @@ cc_test { "binderBinderUnitTest.cpp", "binderStatusUnitTest.cpp", "binderMemoryHeapBaseUnitTest.cpp", + "binderRecordedTransactionTest.cpp", ], shared_libs: [ "libbinder", diff --git a/libs/binder/tests/binderRecordedTransactionTest.cpp b/libs/binder/tests/binderRecordedTransactionTest.cpp new file mode 100644 index 0000000000..23864e6a7e --- /dev/null +++ b/libs/binder/tests/binderRecordedTransactionTest.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2022 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. + */ + +#include <binder/BinderRecordReplay.h> +#include <gtest/gtest.h> + +using android::Parcel; +using android::status_t; +using android::base::unique_fd; +using android::binder::debug::RecordedTransaction; + +TEST(BinderRecordedTransaction, RoundTripEncoding) { + Parcel d; + d.writeInt32(12); + d.writeInt64(2); + Parcel r; + r.writeInt32(99); + auto transaction = RecordedTransaction::fromDetails(1, 42, d, r, 0); + + auto file = std::tmpfile(); + auto fd = unique_fd(fcntl(fileno(file), F_DUPFD, 1)); + + status_t status = transaction->dumpToFile(fd); + ASSERT_EQ(android::NO_ERROR, status); + + std::rewind(file); + + auto retrievedTransaction = RecordedTransaction::fromFile(fd); + + EXPECT_EQ(retrievedTransaction->getCode(), 1); + EXPECT_EQ(retrievedTransaction->getFlags(), 42); + EXPECT_EQ(retrievedTransaction->getDataSize(), 12); + EXPECT_EQ(retrievedTransaction->getReplySize(), 4); + EXPECT_EQ(retrievedTransaction->getReturnedStatus(), 0); + EXPECT_EQ(retrievedTransaction->getVersion(), 0); + + EXPECT_EQ(retrievedTransaction->getDataParcel().readInt32(), 12); + EXPECT_EQ(retrievedTransaction->getDataParcel().readInt64(), 2); + EXPECT_EQ(retrievedTransaction->getReplyParcel().readInt32(), 99); +} |