summaryrefslogtreecommitdiff
path: root/common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java')
-rw-r--r--common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java163
1 files changed, 0 insertions, 163 deletions
diff --git a/common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java b/common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java
deleted file mode 100644
index a66dacd9..00000000
--- a/common/tests/unit/src/com/android/net/module/util/BpfDumpTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-
-package com.android.net.module.util;
-
-import static android.system.OsConstants.EPERM;
-import static android.system.OsConstants.R_OK;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-
-import android.system.ErrnoException;
-import android.system.Os;
-import android.util.Pair;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.testutils.TestBpfMap;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoSession;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class BpfDumpTest {
- private static final int TEST_KEY = 123;
- private static final String TEST_KEY_BASE64 = "ewAAAA==";
- private static final int TEST_VAL = 456;
- private static final String TEST_VAL_BASE64 = "yAEAAA==";
- private static final String BASE64_DELIMITER = ",";
- private static final String TEST_KEY_VAL_BASE64 =
- TEST_KEY_BASE64 + BASE64_DELIMITER + TEST_VAL_BASE64;
- private static final String INVALID_BASE64_STRING = "Map is null";
-
- @Test
- public void testToBase64EncodedString() {
- final Struct.S32 key = new Struct.S32(TEST_KEY);
- final Struct.S32 value = new Struct.S32(TEST_VAL);
-
- // Verified in python:
- // import base64
- // print(base64.b64encode(b'\x7b\x00\x00\x00')) # key: ewAAAA== (TEST_KEY_BASE64)
- // print(base64.b64encode(b'\xc8\x01\x00\x00')) # value: yAEAAA== (TEST_VAL_BASE64)
- assertEquals("7B000000", HexDump.toHexString(key.writeToBytes()));
- assertEquals("C8010000", HexDump.toHexString(value.writeToBytes()));
- assertEquals(TEST_KEY_VAL_BASE64, BpfDump.toBase64EncodedString(key, value));
- }
-
- @Test
- public void testFromBase64EncodedString() {
- Pair<Struct.S32, Struct.S32> decodedKeyValue = BpfDump.fromBase64EncodedString(
- Struct.S32.class, Struct.S32.class, TEST_KEY_VAL_BASE64);
- assertEquals(TEST_KEY, decodedKeyValue.first.val);
- assertEquals(TEST_VAL, decodedKeyValue.second.val);
- }
-
- private void assertThrowsIllegalArgumentException(final String testStr) {
- assertThrows(IllegalArgumentException.class,
- () -> BpfDump.fromBase64EncodedString(Struct.S32.class, Struct.S32.class, testStr));
- }
-
- @Test
- public void testFromBase64EncodedStringInvalidString() {
- assertThrowsIllegalArgumentException(INVALID_BASE64_STRING);
- assertThrowsIllegalArgumentException(TEST_KEY_BASE64);
- assertThrowsIllegalArgumentException(
- TEST_KEY_BASE64 + BASE64_DELIMITER + INVALID_BASE64_STRING);
- assertThrowsIllegalArgumentException(
- INVALID_BASE64_STRING + BASE64_DELIMITER + TEST_VAL_BASE64);
- assertThrowsIllegalArgumentException(
- INVALID_BASE64_STRING + BASE64_DELIMITER + INVALID_BASE64_STRING);
- assertThrowsIllegalArgumentException(
- TEST_KEY_VAL_BASE64 + BASE64_DELIMITER + TEST_KEY_BASE64);
- }
-
- private String getDumpMap(final IBpfMap<Struct.S32, Struct.S32> map) {
- final StringWriter sw = new StringWriter();
- BpfDump.dumpMap(map, new PrintWriter(sw), "mapName", "header",
- (key, val) -> "key=" + key.val + ", val=" + val.val);
- return sw.toString();
- }
-
- @Test
- public void testDumpMap() throws Exception {
- final IBpfMap<Struct.S32, Struct.S32> map =
- new TestBpfMap<>(Struct.S32.class, Struct.S32.class);
- map.updateEntry(new Struct.S32(123), new Struct.S32(456));
-
- final String dump = getDumpMap(map);
- assertEquals(dump, "mapName:\n"
- + " header\n"
- + " key=123, val=456\n");
- }
-
- @Test
- public void testDumpMapMultipleEntries() throws Exception {
- final IBpfMap<Struct.S32, Struct.S32> map =
- new TestBpfMap<>(Struct.S32.class, Struct.S32.class);
- map.updateEntry(new Struct.S32(123), new Struct.S32(456));
- map.updateEntry(new Struct.S32(789), new Struct.S32(123));
-
- final String dump = getDumpMap(map);
- assertTrue(dump.contains("mapName:"));
- assertTrue(dump.contains("header"));
- assertTrue(dump.contains("key=123, val=456"));
- assertTrue(dump.contains("key=789, val=123"));
- }
-
- private String getDumpMapStatus(final IBpfMap<Struct.S32, Struct.S32> map) {
- final StringWriter sw = new StringWriter();
- BpfDump.dumpMapStatus(map, new PrintWriter(sw), "mapName", "mapPath");
- return sw.toString();
- }
-
- @Test
- public void testGetMapStatus() {
- final IBpfMap<Struct.S32, Struct.S32> map =
- new TestBpfMap<>(Struct.S32.class, Struct.S32.class);
- assertEquals("mapName: OK\n", getDumpMapStatus(map));
- }
-
- @Test
- public void testGetMapStatusNull() {
- final MockitoSession session = mockitoSession()
- .spyStatic(Os.class)
- .startMocking();
- try {
- // Os.access succeeds
- doReturn(true).when(() -> Os.access("mapPath", R_OK));
- assertEquals("mapName: NULL(map is pinned to mapPath)\n", getDumpMapStatus(null));
-
- // Os.access throws EPERM
- doThrow(new ErrnoException("", EPERM)).when(() -> Os.access("mapPath", R_OK));
- assertEquals("mapName: NULL(map is not pinned to mapPath: Operation not permitted)\n",
- getDumpMapStatus(null));
- } finally {
- session.finishMocking();
- }
- }
-}