Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b2011aab authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge "binder tests respect libbinder bitness" into rvc-dev am: 49b69b86 am: 5eba7ae9

Change-Id: I15ebb7a3551e7accc2d0d41f92aba4c2278604b4
parents c4bf9929 5eba7ae9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -27,7 +27,9 @@ cc_test {
    defaults: ["binder_test_defaults"],
    srcs: ["binderDriverInterfaceTest.cpp"],
    compile_multilib: "32",
    multilib: { lib32: { suffix: "" } },
    cflags: ["-DBINDER_IPC_32BIT=1"],
    test_suites: ["vts"],
}

cc_test {
@@ -52,7 +54,10 @@ cc_test {
        "libutils",
    ],
    compile_multilib: "32",
    multilib: { lib32: { suffix: "" } },
    cflags: ["-DBINDER_IPC_32BIT=1"],
    test_suites: ["vts"],
    require_root: true,
}

cc_test {
+52 −0
Original line number Diff line number Diff line
/*
 * 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.
 */

#pragma once

#include <stdlib.h>
#include <iostream>

#ifdef BINDER_IPC_32BIT
static constexpr bool kBuild32Abi = true;
#else
static constexpr bool kBuild32Abi = false;
#endif

// TODO: remove when CONFIG_ANDROID_BINDER_IPC_32BIT is no longer supported
static inline bool ReadKernelConfigIs32BitAbi() {
    // failure case implies we run with standard ABI
    return 0 == system("zcat /proc/config.gz | grep -E \"^CONFIG_ANDROID_BINDER_IPC_32BIT=y$\"");
}

static inline void ExitIfWrongAbi() {
    bool runtime32Abi = ReadKernelConfigIs32BitAbi();

    if (kBuild32Abi != runtime32Abi) {
        std::cout << "[==========] Running 1 test from 1 test suite." << std::endl;
        std::cout << "[----------] Global test environment set-up." << std::endl;
        std::cout << "[----------] 1 tests from BinderLibTest" << std::endl;
        std::cout << "[ RUN      ] BinderTest.AbortForWrongAbi" << std::endl;
        std::cout << "[ INFO     ] test build abi 32: " << kBuild32Abi << " runtime abi 32: " << runtime32Abi << " so, skipping tests " << std::endl;
        std::cout << "[       OK ] BinderTest.AbortForWrongAbi (0 ms) " << std::endl;
        std::cout << "[----------] 1 tests from BinderTest (0 ms total)" << std::endl;
        std::cout << "" << std::endl;
        std::cout << "[----------] Global test environment tear-down" << std::endl;
        std::cout << "[==========] 1 test from 1 test suite ran. (0 ms total)" << std::endl;
        std::cout << "[  PASSED  ] 1 tests." << std::endl;
        exit(0);
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@
#include <sys/mman.h>
#include <poll.h>

#include "binderAbiHelper.h"

#define BINDER_DEV_NAME "/dev/binder"

testing::Environment* binder_env;
@@ -361,6 +363,7 @@ TEST_F(BinderDriverInterfaceTest, RequestDeathNotification) {
}

int main(int argc, char **argv) {
    ExitIfWrongAbi();
    ::testing::InitGoogleTest(&argc, argv);

    binder_env = AddGlobalTestEnvironment(new BinderDriverInterfaceTestEnv());
+4 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@
#include <sys/epoll.h>
#include <sys/prctl.h>

#include "binderAbiHelper.h"

#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])

using namespace android;
@@ -1451,6 +1453,8 @@ int run_server(int index, int readypipefd, bool usePoll)
}

int main(int argc, char **argv) {
    ExitIfWrongAbi();

    if (argc == 4 && !strcmp(argv[1], "--servername")) {
        binderservername = argv[2];
    } else {