Merge "Fix ThreadFeatureCheckerRule on U- devices" into main

This commit is contained in:
Kangping Dong 2024-05-30 04:53:24 +00:00 • committed by Gerrit Code Review
commit 7ab992b3c6
5 changed files with 28 additions and 2 deletions

View file

@ -30,6 +30,8 @@ import android.net.thread.ActiveOperationalDataset;
import android.net.thread.ActiveOperationalDataset.Builder;
import android.net.thread.ActiveOperationalDataset.SecurityPolicy;
import android.net.thread.OperationalDatasetTimestamp;
import android.net.thread.utils.ThreadFeatureCheckerRule;
import android.net.thread.utils.ThreadFeatureCheckerRule.RequiresThreadFeature;
import android.util.SparseArray;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -38,6 +40,7 @@ import androidx.test.filters.SmallTest;
import com.google.common.primitives.Bytes;
import com.google.common.testing.EqualsTester;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -46,6 +49,7 @@ import java.util.Arrays;
/** CTS tests for {@link ActiveOperationalDataset}. */
@SmallTest
@RequiresThreadFeature
@RunWith(AndroidJUnit4.class)
public final class ActiveOperationalDatasetTest {
private static final int TYPE_ACTIVE_TIMESTAMP = 14;
@ -81,6 +85,8 @@ public final class ActiveOperationalDatasetTest {
private static final ActiveOperationalDataset DEFAULT_DATASET =
ActiveOperationalDataset.fromThreadTlvs(VALID_DATASET_TLVS);
@Rule public final ThreadFeatureCheckerRule mThreadRule = new ThreadFeatureCheckerRule();
private static byte[] removeTlv(byte[] dataset, int type) {
ByteArrayOutputStream os = new ByteArrayOutputStream(dataset.length);
int i = 0;

View file

@ -21,12 +21,15 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
import android.net.thread.OperationalDatasetTimestamp;
import android.net.thread.utils.ThreadFeatureCheckerRule;
import android.net.thread.utils.ThreadFeatureCheckerRule.RequiresThreadFeature;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.google.common.testing.EqualsTester;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -34,8 +37,11 @@ import java.time.Instant;
/** Tests for {@link OperationalDatasetTimestamp}. */
@SmallTest
@RequiresThreadFeature
@RunWith(AndroidJUnit4.class)
public final class OperationalDatasetTimestampTest {
@Rule public final ThreadFeatureCheckerRule mThreadRule = new ThreadFeatureCheckerRule();
@Test
public void fromInstant_tooLargeInstant_throwsIllegalArgument() {
assertThrows(

View file

@ -28,6 +28,8 @@ import android.net.thread.ActiveOperationalDataset;
import android.net.thread.ActiveOperationalDataset.SecurityPolicy;
import android.net.thread.OperationalDatasetTimestamp;
import android.net.thread.PendingOperationalDataset;
import android.net.thread.utils.ThreadFeatureCheckerRule;
import android.net.thread.utils.ThreadFeatureCheckerRule.RequiresThreadFeature;
import android.util.SparseArray;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -36,6 +38,7 @@ import androidx.test.filters.SmallTest;
import com.google.common.primitives.Bytes;
import com.google.common.testing.EqualsTester;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -44,8 +47,11 @@ import java.time.Duration;
/** Tests for {@link PendingOperationalDataset}. */
@SmallTest
@RequiresThreadFeature
@RunWith(AndroidJUnit4.class)
public final class PendingOperationalDatasetTest {
@Rule public final ThreadFeatureCheckerRule mThreadRule = new ThreadFeatureCheckerRule();
private static ActiveOperationalDataset createActiveDataset() throws Exception {
SparseArray<byte[]> channelMask = new SparseArray<>(1);
channelMask.put(0, new byte[] {0x00, 0x1f, (byte) 0xff, (byte) 0xe0});

View file

@ -25,17 +25,23 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
import android.net.thread.ThreadNetworkException;
import android.net.thread.utils.ThreadFeatureCheckerRule;
import android.net.thread.utils.ThreadFeatureCheckerRule.RequiresThreadFeature;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
/** CTS tests for {@link ThreadNetworkException}. */
@SmallTest
@RequiresThreadFeature
@RunWith(AndroidJUnit4.class)
public final class ThreadNetworkExceptionTest {
@Rule public final ThreadFeatureCheckerRule mThreadRule = new ThreadFeatureCheckerRule();
@Test
public void constructor_validValues_valuesAreConnectlySet() throws Exception {
ThreadNetworkException errorThreadDisabled =

View file

@ -21,7 +21,6 @@ import static com.android.testutils.DeviceInfoUtils.isKernelVersionAtLeast;
import static org.junit.Assume.assumeTrue;
import android.content.Context;
import android.net.thread.ThreadNetworkManager;
import android.os.SystemProperties;
import android.os.VintfRuntimeInfo;
@ -122,7 +121,10 @@ public final class ThreadFeatureCheckerRule implements TestRule {
/** Returns {@code true} if this device has the Thread feature supported. */
private static boolean hasThreadFeature() {
final Context context = ApplicationProvider.getApplicationContext();
return context.getSystemService(ThreadNetworkManager.class) != null;
// Use service name rather than `ThreadNetworkManager.class` to avoid
// `ClassNotFoundException` on U- devices.
return context.getSystemService("thread_network") != null;
}
/**