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

Commit 5a955bc1 authored by Dan Shi's avatar Dan Shi
Browse files

Convert VtsHalGraphicsMapperV*TargetTest to be parameterized test

Bug: 142397658
Test: atest VtsHalGraphicsMapperV2_0TargetTest \
  VtsHalGraphicsMapperV2_1TargetTest \
  VtsHalGraphicsMapperV3_0TargetTest

Change-Id: I1d4e222f3a04882ae8d74e79201c2751d1d22ea4
parent 45e64ac5
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

#include <mapper-vts/2.0/MapperVts.h>

#include <VtsHalHidlTargetTestBase.h>

namespace android {
namespace hardware {
namespace graphics {
@@ -30,10 +28,10 @@ Gralloc::Gralloc(const std::string& allocatorServiceName, const std::string& map
}

void Gralloc::init(const std::string& allocatorServiceName, const std::string& mapperServiceName) {
    mAllocator = ::testing::VtsHalHidlTargetTestBase::getService<IAllocator>(allocatorServiceName);
    mAllocator = IAllocator::getService(allocatorServiceName);
    ASSERT_NE(nullptr, mAllocator.get()) << "failed to get allocator service";

    mMapper = ::testing::VtsHalHidlTargetTestBase::getService<IMapper>(mapperServiceName);
    mMapper = IMapper::getService(mapperServiceName);
    ASSERT_NE(nullptr, mMapper.get()) << "failed to get mapper service";
    ASSERT_FALSE(mMapper->isRemote()) << "mapper is not in passthrough mode";
}
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@

#include <android/hardware/graphics/allocator/2.0/IAllocator.h>
#include <android/hardware/graphics/mapper/2.0/IMapper.h>
#include <gtest/gtest.h>
#include <utils/StrongPointer.h>

namespace android {
+1 −1
Original line number Diff line number Diff line
@@ -24,5 +24,5 @@ cc_test {
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.0-vts",
    ],
    test_suites: ["general-tests"],
    test_suites: ["general-tests", "vts-core"],
}
+34 −52
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@
#include <thread>
#include <vector>

#include <VtsHalHidlTargetTestBase.h>
#include <android-base/logging.h>
#include <gtest/gtest.h>
#include <hidl/GtestPrinter.h>
#include <hidl/ServiceManagement.h>
#include <mapper-vts/2.0/MapperVts.h>

namespace android {
@@ -35,28 +37,12 @@ namespace {
using android::hardware::graphics::common::V1_0::BufferUsage;
using android::hardware::graphics::common::V1_0::PixelFormat;

// Test environment for graphics.mapper.
class GraphicsMapperHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase {
   public:
    // get the test environment singleton
    static GraphicsMapperHidlEnvironment* Instance() {
        static GraphicsMapperHidlEnvironment* instance = new GraphicsMapperHidlEnvironment;
        return instance;
    }

    virtual void registerTestServices() override {
        registerTestService<IAllocator>();
        registerTestService<IMapper>();
    }
};

class GraphicsMapperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
class GraphicsMapperHidlTest
    : public ::testing::TestWithParam<std::tuple<std::string, std::string>> {
  protected:
    void SetUp() override {
        ASSERT_NO_FATAL_FAILURE(
            mGralloc = std::make_unique<Gralloc>(
                GraphicsMapperHidlEnvironment::Instance()->getServiceName<IAllocator>(),
                GraphicsMapperHidlEnvironment::Instance()->getServiceName<IMapper>()));
        ASSERT_NO_FATAL_FAILURE(mGralloc = std::make_unique<Gralloc>(std::get<0>(GetParam()),
                                                                     std::get<1>(GetParam())));

        mDummyDescriptorInfo.width = 64;
        mDummyDescriptorInfo.height = 64;
@@ -75,14 +61,14 @@ class GraphicsMapperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
/**
 * Test IAllocator::dumpDebugInfo by calling it.
 */
TEST_F(GraphicsMapperHidlTest, AllocatorDumpDebugInfo) {
TEST_P(GraphicsMapperHidlTest, AllocatorDumpDebugInfo) {
    mGralloc->dumpDebugInfo();
}

/**
 * Test IAllocator::allocate with valid buffer descriptors.
 */
TEST_F(GraphicsMapperHidlTest, AllocatorAllocate) {
TEST_P(GraphicsMapperHidlTest, AllocatorAllocate) {
    BufferDescriptor descriptor;
    ASSERT_NO_FATAL_FAILURE(descriptor = mGralloc->createDescriptor(mDummyDescriptorInfo));

@@ -105,7 +91,7 @@ TEST_F(GraphicsMapperHidlTest, AllocatorAllocate) {
/**
 * Test IAllocator::allocate with invalid buffer descriptors.
 */
TEST_F(GraphicsMapperHidlTest, AllocatorAllocateNegative) {
TEST_P(GraphicsMapperHidlTest, AllocatorAllocateNegative) {
    // this assumes any valid descriptor is non-empty
    BufferDescriptor descriptor;
    mGralloc->getAllocator()->allocate(descriptor, 1,
@@ -117,7 +103,7 @@ TEST_F(GraphicsMapperHidlTest, AllocatorAllocateNegative) {
/**
 * Test IAllocator::allocate does not leak.
 */
TEST_F(GraphicsMapperHidlTest, AllocatorAllocateNoLeak) {
TEST_P(GraphicsMapperHidlTest, AllocatorAllocateNoLeak) {
    auto info = mDummyDescriptorInfo;
    info.width = 1024;
    info.height = 1024;
@@ -131,7 +117,7 @@ TEST_F(GraphicsMapperHidlTest, AllocatorAllocateNoLeak) {
/**
 * Test that IAllocator::allocate is thread-safe.
 */
TEST_F(GraphicsMapperHidlTest, AllocatorAllocateThreaded) {
TEST_P(GraphicsMapperHidlTest, AllocatorAllocateThreaded) {
    BufferDescriptor descriptor;
    ASSERT_NO_FATAL_FAILURE(descriptor = mGralloc->createDescriptor(mDummyDescriptorInfo));

@@ -161,14 +147,14 @@ TEST_F(GraphicsMapperHidlTest, AllocatorAllocateThreaded) {
/**
 * Test IMapper::createDescriptor with valid descriptor info.
 */
TEST_F(GraphicsMapperHidlTest, CreateDescriptorBasic) {
TEST_P(GraphicsMapperHidlTest, CreateDescriptorBasic) {
    ASSERT_NO_FATAL_FAILURE(mGralloc->createDescriptor(mDummyDescriptorInfo));
}

/**
 * Test IMapper::createDescriptor with invalid descriptor info.
 */
TEST_F(GraphicsMapperHidlTest, CreateDescriptorNegative) {
TEST_P(GraphicsMapperHidlTest, CreateDescriptorNegative) {
    auto info = mDummyDescriptorInfo;
    info.width = 0;
    mGralloc->getMapper()->createDescriptor(info, [&](const auto& tmpError, const auto&) {
@@ -179,7 +165,7 @@ TEST_F(GraphicsMapperHidlTest, CreateDescriptorNegative) {
/**
 * Test IMapper::importBuffer and IMapper::freeBuffer with allocated buffers.
 */
TEST_F(GraphicsMapperHidlTest, ImportFreeBufferBasic) {
TEST_P(GraphicsMapperHidlTest, ImportFreeBufferBasic) {
    const native_handle_t* bufferHandle;
    ASSERT_NO_FATAL_FAILURE(bufferHandle = mGralloc->allocate(mDummyDescriptorInfo, true));
    ASSERT_NO_FATAL_FAILURE(mGralloc->freeBuffer(bufferHandle));
@@ -188,7 +174,7 @@ TEST_F(GraphicsMapperHidlTest, ImportFreeBufferBasic) {
/**
 * Test IMapper::importBuffer and IMapper::freeBuffer with cloned buffers.
 */
TEST_F(GraphicsMapperHidlTest, ImportFreeBufferClone) {
TEST_P(GraphicsMapperHidlTest, ImportFreeBufferClone) {
    const native_handle_t* clonedBufferHandle;
    ASSERT_NO_FATAL_FAILURE(clonedBufferHandle = mGralloc->allocate(mDummyDescriptorInfo, false));

@@ -206,7 +192,7 @@ TEST_F(GraphicsMapperHidlTest, ImportFreeBufferClone) {
/**
 * Test IMapper::importBuffer and IMapper::freeBuffer cross mapper instances.
 */
TEST_F(GraphicsMapperHidlTest, ImportFreeBufferSingleton) {
TEST_P(GraphicsMapperHidlTest, ImportFreeBufferSingleton) {
    const native_handle_t* rawHandle;
    ASSERT_NO_FATAL_FAILURE(rawHandle = mGralloc->allocate(mDummyDescriptorInfo, false));

@@ -218,10 +204,8 @@ TEST_F(GraphicsMapperHidlTest, ImportFreeBufferSingleton) {

    // free the imported handle with another mapper
    std::unique_ptr<Gralloc> anotherGralloc;
    ASSERT_NO_FATAL_FAILURE(
        anotherGralloc = std::make_unique<Gralloc>(
            GraphicsMapperHidlEnvironment::Instance()->getServiceName<IAllocator>(),
            GraphicsMapperHidlEnvironment::Instance()->getServiceName<IMapper>()));
    ASSERT_NO_FATAL_FAILURE(anotherGralloc = std::make_unique<Gralloc>(std::get<0>(GetParam()),
                                                                       std::get<1>(GetParam())));
    Error error = mGralloc->getMapper()->freeBuffer(importedHandle);
    ASSERT_EQ(Error::NONE, error);

@@ -231,7 +215,7 @@ TEST_F(GraphicsMapperHidlTest, ImportFreeBufferSingleton) {
/**
 * Test IMapper::importBuffer and IMapper::freeBuffer do not leak.
 */
TEST_F(GraphicsMapperHidlTest, ImportFreeBufferNoLeak) {
TEST_P(GraphicsMapperHidlTest, ImportFreeBufferNoLeak) {
    auto info = mDummyDescriptorInfo;
    info.width = 1024;
    info.height = 1024;
@@ -245,7 +229,7 @@ TEST_F(GraphicsMapperHidlTest, ImportFreeBufferNoLeak) {
/**
 * Test IMapper::importBuffer with invalid buffers.
 */
TEST_F(GraphicsMapperHidlTest, ImportBufferNegative) {
TEST_P(GraphicsMapperHidlTest, ImportBufferNegative) {
    native_handle_t* invalidHandle = nullptr;
    mGralloc->getMapper()->importBuffer(invalidHandle, [&](const auto& tmpError, const auto&) {
        EXPECT_EQ(Error::BAD_BUFFER, tmpError)
@@ -263,7 +247,7 @@ TEST_F(GraphicsMapperHidlTest, ImportBufferNegative) {
/**
 * Test IMapper::freeBuffer with invalid buffers.
 */
TEST_F(GraphicsMapperHidlTest, FreeBufferNegative) {
TEST_P(GraphicsMapperHidlTest, FreeBufferNegative) {
    native_handle_t* invalidHandle = nullptr;
    Error error = mGralloc->getMapper()->freeBuffer(invalidHandle);
    EXPECT_EQ(Error::BAD_BUFFER, error) << "freeBuffer with nullptr did not fail with BAD_BUFFER";
@@ -286,7 +270,7 @@ TEST_F(GraphicsMapperHidlTest, FreeBufferNegative) {
/**
 * Test IMapper::lock and IMapper::unlock.
 */
TEST_F(GraphicsMapperHidlTest, LockUnlockBasic) {
TEST_P(GraphicsMapperHidlTest, LockUnlockBasic) {
    const auto& info = mDummyDescriptorInfo;

    const native_handle_t* bufferHandle;
@@ -332,7 +316,7 @@ TEST_F(GraphicsMapperHidlTest, LockUnlockBasic) {
 * Test IMapper::lockYCbCr.  This locks a YV12 buffer, and makes sure we can
 * write to and read from it.
 */
TEST_F(GraphicsMapperHidlTest, LockYCbCrBasic) {
TEST_P(GraphicsMapperHidlTest, LockYCbCrBasic) {
    auto info = mDummyDescriptorInfo;
    info.format = PixelFormat::YV12;

@@ -391,7 +375,7 @@ TEST_F(GraphicsMapperHidlTest, LockYCbCrBasic) {
/**
 * Test IMapper::unlock with invalid buffers.
 */
TEST_F(GraphicsMapperHidlTest, UnlockNegative) {
TEST_P(GraphicsMapperHidlTest, UnlockNegative) {
    native_handle_t* invalidHandle = nullptr;
    mGralloc->getMapper()->unlock(invalidHandle, [&](const auto& tmpError, const auto&) {
        EXPECT_EQ(Error::BAD_BUFFER, tmpError)
@@ -426,6 +410,14 @@ TEST_F(GraphicsMapperHidlTest, UnlockNegative) {
#endif
}

INSTANTIATE_TEST_CASE_P(
        PerInstance, GraphicsMapperHidlTest,
        testing::Combine(
                testing::ValuesIn(
                        android::hardware::getAllHalInstanceNames(IAllocator::descriptor)),
                testing::ValuesIn(android::hardware::getAllHalInstanceNames(IMapper::descriptor))),
        android::hardware::PrintInstanceTupleNameToString<>);

}  // namespace
}  // namespace vts
}  // namespace V2_0
@@ -433,13 +425,3 @@ TEST_F(GraphicsMapperHidlTest, UnlockNegative) {
}  // namespace graphics
}  // namespace hardware
}  // namespace android

int main(int argc, char** argv) {
    using android::hardware::graphics::mapper::V2_0::vts::GraphicsMapperHidlEnvironment;
    ::testing::AddGlobalTestEnvironment(GraphicsMapperHidlEnvironment::Instance());
    ::testing::InitGoogleTest(&argc, argv);
    GraphicsMapperHidlEnvironment::Instance()->init(&argc, argv);
    int status = RUN_ALL_TESTS();
    LOG(INFO) << "Test result = " << status;
    return status;
}
+1 −2
Original line number Diff line number Diff line
@@ -16,14 +16,13 @@

cc_library_static {
    name: "android.hardware.graphics.mapper@2.1-vts",
    defaults: ["hidl_defaults"],
    defaults: ["hidl_defaults", "VtsHalTargetTestDefaults"],
    srcs: ["MapperVts.cpp"],
    cflags: [
        "-O0",
        "-g",
    ],
    static_libs: [
        "VtsHalHidlTargetTestBase",
        "android.hardware.graphics.allocator@2.0",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.0-vts",
Loading