simplify bpf tests and check type correctness

We notice that:
  BpfMap.reset(dupFd_with_cloexec(BpfMap.getMap())
is equivalent to
  BpfMap = BpfMap
due to the current implementation of the BpfMap assignment operator.

Except the latter also verifies BpfMap<K,V> template types match.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I99fcf77bc6aa360b6a19e22c2cd58d67a1e62976
This commit is contained in:
Maciej Żenczykowski
2022-05-31 03:15:12 -07:00
parent 875daa69eb
commit 55ab87aa49
2 changed files with 10 additions and 18 deletions

View File

@@ -71,23 +71,19 @@ class BpfHandlerTest : public ::testing::Test {
createMap(BPF_MAP_TYPE_HASH, sizeof(uint32_t), sizeof(uint8_t), TEST_MAP_SIZE, 0));
ASSERT_VALID(mFakeUidPermissionMap);
mBh.mCookieTagMap.reset(dupFd(mFakeCookieTagMap.getMap()));
mBh.mCookieTagMap = mFakeCookieTagMap;
ASSERT_VALID(mBh.mCookieTagMap);
mBh.mStatsMapA.reset(dupFd(mFakeStatsMapA.getMap()));
mBh.mStatsMapA = mFakeStatsMapA;
ASSERT_VALID(mBh.mStatsMapA);
mBh.mConfigurationMap.reset(dupFd(mFakeConfigurationMap.getMap()));
mBh.mConfigurationMap = mFakeConfigurationMap;
ASSERT_VALID(mBh.mConfigurationMap);
// Always write to stats map A by default.
ASSERT_RESULT_OK(mBh.mConfigurationMap.writeValue(CURRENT_STATS_MAP_CONFIGURATION_KEY,
SELECT_MAP_A, BPF_ANY));
mBh.mUidPermissionMap.reset(dupFd(mFakeUidPermissionMap.getMap()));
mBh.mUidPermissionMap = mFakeUidPermissionMap;
ASSERT_VALID(mBh.mUidPermissionMap);
}
int dupFd(const android::base::unique_fd& mapFd) {
return fcntl(mapFd.get(), F_DUPFD_CLOEXEC, 0);
}
int setUpSocketAndTag(int protocol, uint64_t* cookie, uint32_t tag, uid_t uid,
uid_t realUid) {
int sock = socket(protocol, SOCK_STREAM | SOCK_CLOEXEC, 0);