From 77262cea760dd319c1d064615fe1f9354cd552f4 Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Wed, 27 Jan 2021 00:48:41 +0900 Subject: [PATCH] Add an isEmpty convenience method to BpfMap. Test: new unit test Change-Id: Ibec09f328e24111aee4760af2f75ea5a80ba84c3 --- .../com/android/networkstack/tethering/BpfMap.java | 5 +++++ .../android/networkstack/tethering/BpfMapTest.java | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/Tethering/src/com/android/networkstack/tethering/BpfMap.java b/Tethering/src/com/android/networkstack/tethering/BpfMap.java index 78d212c027..89caa8a82d 100644 --- a/Tethering/src/com/android/networkstack/tethering/BpfMap.java +++ b/Tethering/src/com/android/networkstack/tethering/BpfMap.java @@ -134,6 +134,11 @@ public class BpfMap implements AutoCloseable return deleteMapEntry(mMapFd, key.writeToBytes()); } + /** Returns {@code true} if this map contains no elements. */ + public boolean isEmpty() throws ErrnoException { + return getFirstKey() == null; + } + private K getNextKeyInternal(@Nullable K key) throws ErrnoException { final byte[] rawKey = getNextRawKey( key == null ? null : key.writeToBytes()); diff --git a/Tethering/tests/privileged/src/com/android/networkstack/tethering/BpfMapTest.java b/Tethering/tests/privileged/src/com/android/networkstack/tethering/BpfMapTest.java index a0129b8ed5..cceaa8c82e 100644 --- a/Tethering/tests/privileged/src/com/android/networkstack/tethering/BpfMapTest.java +++ b/Tethering/tests/privileged/src/com/android/networkstack/tethering/BpfMapTest.java @@ -91,6 +91,7 @@ public final class BpfMapTest { } }); assertNull(mTestMap.getFirstKey()); + assertTrue(mTestMap.isEmpty()); } private TetherDownstream6Key createTetherDownstream6Key(long iif, String address) @@ -135,6 +136,18 @@ public final class BpfMapTest { } } + @Test + public void testIsEmpty() throws Exception { + assertNull(mTestMap.getFirstKey()); + assertTrue(mTestMap.isEmpty()); + + mTestMap.insertEntry(mTestData.keyAt(0), mTestData.valueAt(0)); + assertFalse(mTestMap.isEmpty()); + + mTestMap.deleteEntry((mTestData.keyAt(0))); + assertTrue(mTestMap.isEmpty()); + } + @Test public void testGetFirstKey() throws Exception { // getFirstKey on an empty map returns null.