summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2023-10-17 18:23:31 +0000
committer Steven Moreland <smoreland@google.com> 2023-10-17 18:24:06 +0000
commit0884c553986c4ea13ef4e449c900bb1ca13160b6 (patch)
treeadc58c75271bcbe4360ad84a7cd00cf786ceb52f
parentecf372879bdbb2a6fef8f738fba3846e44fe0e7e (diff)
binderRpcTest: conditional experimental protocol
Previously this test failed in REL mode and required a change. This was done so that we made sure to freeze it for release. Now that we have TARGET_RELEASE, we need to make this conditional. Bug: 305786304 Test: binderRpcTest on '-next' configuration Change-Id: I726c71399c7e469698abc630a006ce089dc4bca8
-rw-r--r--libs/binder/RpcState.cpp3
-rw-r--r--libs/binder/tests/binderRpcTestCommon.h13
-rw-r--r--libs/binder/tests/binderRpcUniversalTests.cpp3
3 files changed, 16 insertions, 3 deletions
diff --git a/libs/binder/RpcState.cpp b/libs/binder/RpcState.cpp
index bac2808b26..f9e833b126 100644
--- a/libs/binder/RpcState.cpp
+++ b/libs/binder/RpcState.cpp
@@ -409,10 +409,11 @@ bool RpcState::validateProtocolVersion(uint32_t version) {
char codename[PROPERTY_VALUE_MAX];
property_get("ro.build.version.codename", codename, "");
if (!strcmp(codename, "REL")) {
- ALOGE("Cannot use experimental RPC binder protocol on a release branch.");
+ ALOGE("Cannot use experimental RPC binder protocol in a release configuration.");
return false;
}
#else
+ // TODO(b/305983144)
// don't restrict on other platforms, though experimental should
// only really be used for testing, we don't have a good way to see
// what is shipping outside of Android
diff --git a/libs/binder/tests/binderRpcTestCommon.h b/libs/binder/tests/binderRpcTestCommon.h
index c1364dd9a0..eceff35e3e 100644
--- a/libs/binder/tests/binderRpcTestCommon.h
+++ b/libs/binder/tests/binderRpcTestCommon.h
@@ -70,12 +70,23 @@ static inline std::vector<RpcSecurity> RpcSecurityValues() {
return {RpcSecurity::RAW, RpcSecurity::TLS};
}
+static inline bool hasExperimentalRpc() {
+#ifdef __ANDROID__
+ return base::GetProperty("ro.build.version.codename", "") != "REL";
+#else
+ // TODO(b/305983144): restrict on other platforms
+ return true;
+#endif
+}
+
static inline std::vector<uint32_t> testVersions() {
std::vector<uint32_t> versions;
for (size_t i = 0; i < RPC_WIRE_PROTOCOL_VERSION_NEXT; i++) {
versions.push_back(i);
}
- versions.push_back(RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL);
+ if (hasExperimentalRpc()) {
+ versions.push_back(RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL);
+ }
return versions;
}
diff --git a/libs/binder/tests/binderRpcUniversalTests.cpp b/libs/binder/tests/binderRpcUniversalTests.cpp
index e43508ee79..885bb45d82 100644
--- a/libs/binder/tests/binderRpcUniversalTests.cpp
+++ b/libs/binder/tests/binderRpcUniversalTests.cpp
@@ -50,7 +50,8 @@ TEST(BinderRpc, CannotUseNextWireVersion) {
TEST(BinderRpc, CanUseExperimentalWireVersion) {
auto session = RpcSession::make();
- EXPECT_TRUE(session->setProtocolVersion(RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL));
+ EXPECT_EQ(hasExperimentalRpc(),
+ session->setProtocolVersion(RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL));
}
TEST_P(BinderRpc, Ping) {