From f6d0d2c115078afa7e2fea9ed8e857570c01a03c Mon Sep 17 00:00:00 2001 From: Connor O'Brien Date: Wed, 10 Jun 2020 15:18:02 -0700 Subject: [PATCH] KernelCpuUidBpfMapReaderTest: test UID removal with absent UIDs The original implementation of KernelCpuUidBpfMapReader.removeUidsInRange did not work unless data was present for the first & last UIDs in the range. Add a test case to verify the fix for this issue & prevent regressions Test: confirm test passes with fix & fails without it Bug: 157887803 Change-Id: Icfabb7298dbfb1a7f1b89dadbe33bae0492922b6 Signed-off-by: Connor O'Brien --- .../internal/os/KernelCpuUidBpfMapReaderTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidBpfMapReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidBpfMapReaderTest.java index 257b388917e49..bda21c61375e9 100644 --- a/core/tests/coretests/src/com/android/internal/os/KernelCpuUidBpfMapReaderTest.java +++ b/core/tests/coretests/src/com/android/internal/os/KernelCpuUidBpfMapReaderTest.java @@ -179,6 +179,21 @@ public class KernelCpuUidBpfMapReaderTest { testOpenAndReadData(changedData); } + @Test + public void testRemoveUidsInRange_firstAndLastAbsent() { + final SparseArray data = getTestSparseArray(200, 50); + data.delete(0); + data.delete(5); + mReader.setData(data); + testOpenAndReadData(data); + SparseArray changedData = new SparseArray<>(); + for (int i = 6; i < 200; i++) { + changedData.put(i, data.get(i)); + } + mReader.removeUidsInRange(0, 5); + testOpenAndReadData(changedData); + } + private void testOpenAndReadData(SparseArray expectedData) { try (BpfMapIterator iter = mReader.open()) { long[] actual;