Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c94f8a8a authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Add native aconfig flag tests

Test: atest RavenwoodBivalentTest-light
Test: atest light RavenwoodBivalentTest_device
Flag: EXEMPT host test change only
Bug: 292141694
Change-Id: I9ce503d79aa709794e3ef17438e5f8e177464fc6
parent d47e010c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -529,6 +529,12 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "com.android.internal.os_flags_c_lib",
    aconfig_declarations: "com.android.internal.os.flags-aconfig",
    host_supported: true,
}

// VirtualDeviceManager
cc_aconfig_library {
    name: "android.companion.virtualdevice.flags-aconfig-cc",
+38 −10
Original line number Diff line number Diff line
@@ -29,17 +29,20 @@ cc_library_shared {
        "libutils",
        "libcutils",
    ],
    static_libs: [
        "libaconfig_storage_read_api_cc",
        "com.android.internal.os_flags_c_lib",
    ],
}

java_defaults {
    name: "ravenwood-bivalent-defaults",
    name: "ravenwood-bivalent-light-defaults",
    static_libs: [
        "androidx.annotation_annotation",
        "androidx.test.ext.junit",
        "androidx.test.rules",

        "junit-params",
        "platform-parametric-runner-lib",
        "platform-compat-test-rules",

        // To make sure it won't cause VerifyError (b/324063814)
@@ -56,6 +59,39 @@ java_defaults {
    ],
}

java_defaults {
    name: "ravenwood-bivalent-defaults",
    defaults: [
        "ravenwood-bivalent-light-defaults",
    ],
    static_libs: [
        // This has a robolectric dependency, which would slow down builds.
        "platform-parametric-runner-lib",
    ],
}

android_ravenwood_test {
    name: "RavenwoodBivalentTest",
    defaults: ["ravenwood-bivalent-defaults"],
    target_sdk_version: "34",
    package_name: "com.android.ravenwoodtest.bivalenttest",
    auto_gen_config: true,
}

// Same as RavenwoodBivalentTest, minus ravenizer/*, to remove
// the "platform-parametric-runner-lib" dependency, for faster rebuilds
android_ravenwood_test {
    name: "RavenwoodBivalentTest-light",
    defaults: ["ravenwood-bivalent-light-defaults"],
    exclude_srcs: [
        "test/**/ravenizer/*.java",
        "test/**/ravenizer/*.kt",
    ],
    target_sdk_version: "34",
    package_name: "com.android.ravenwoodtest.bivalenttest",
    auto_gen_config: true,
}

java_defaults {
    name: "ravenwood-bivalent-device-defaults",
    defaults: ["ravenwood-bivalent-defaults"],
@@ -82,14 +118,6 @@ java_defaults {
    test_config_template: "AndroidTestTemplate.xml",
}

android_ravenwood_test {
    name: "RavenwoodBivalentTest",
    defaults: ["ravenwood-bivalent-defaults"],
    target_sdk_version: "34",
    package_name: "com.android.ravenwoodtest.bivalenttest",
    auto_gen_config: true,
}

android_test {
    name: "RavenwoodBivalentTest_device",
    defaults: ["ravenwood-bivalent-device-defaults"],
+33 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */

#include <nativehelper/JNIHelp.h>
#include <com_android_internal_os.h>
#include <atomic>
#include "jni.h"
#include "utils/Log.h"
@@ -79,6 +80,31 @@ static const JNINativeMethod sMethods_NarTestData[] =
    { "nGetTotalAlloc", "()I", (void*)NarTestData_nGetTotalAlloc },
};

// JNI methods for RavenwoodAconfigNativeFlagsTest
static jboolean getRavenwoodFlagRo1(JNIEnv* env, jclass clazz) {
    return ::com::android::internal::os::ravenwood_flag_ro_1();
}

static jboolean getRavenwoodFlagRo2(JNIEnv* env, jclass clazz) {
    return ::com::android::internal::os::ravenwood_flag_ro_2();
}

static jboolean getRavenwoodFlagRw1(JNIEnv* env, jclass clazz) {
    return ::com::android::internal::os::ravenwood_flag_rw_1();
}

static jboolean getRavenwoodFlagRw2(JNIEnv* env, jclass clazz) {
    return ::com::android::internal::os::ravenwood_flag_rw_2();
}

static const JNINativeMethod sMethods_RavenwoodAconfigNativeFlagsTest[] =
{
    { "getRavenwoodFlagRo1", "()Z", (void*)getRavenwoodFlagRo1 },
    { "getRavenwoodFlagRo2", "()Z", (void*)getRavenwoodFlagRo2 },
    { "getRavenwoodFlagRw1", "()Z", (void*)getRavenwoodFlagRw1 },
    { "getRavenwoodFlagRw2", "()Z", (void*)getRavenwoodFlagRw2 },
};

extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
{
    JNIEnv* env = NULL;
@@ -104,6 +130,13 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    if (res < 0) {
        return res;
    }
    res = jniRegisterNativeMethods(env,
            "com/android/ravenwoodtest/bivalenttest/aconfig/RavenwoodAconfigNativeFlagsTest",
            sMethods_RavenwoodAconfigNativeFlagsTest,
            NELEM(sMethods_RavenwoodAconfigNativeFlagsTest));
    if (res < 0) {
        return res;
    }

    return JNI_VERSION_1_4;
}
+58 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 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.ravenwoodtest.bivalenttest.aconfig;

import static org.junit.Assert.assertEquals;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.internal.os.Flags;
import com.android.ravenwoodtest.bivalenttest.RavenwoodJniTest;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class RavenwoodAconfigNativeFlagsTest {
    static {
        RavenwoodJniTest.initializeJni();
    }

    private static native boolean getRavenwoodFlagRo1();
    private static native boolean getRavenwoodFlagRo2();
    private static native boolean getRavenwoodFlagRw1();
    private static native boolean getRavenwoodFlagRw2();

    @Test
    public void testRavenwoodFlagRo1() {
        assertEquals(Flags.ravenwoodFlagRo1(), getRavenwoodFlagRo1());
    }

    @Test
    public void testRavenwoodFlagRo2() {
        assertEquals(Flags.ravenwoodFlagRo2(), getRavenwoodFlagRo2());
    }

    @Test
    public void testRavenwoodFlagRw1() {
        assertEquals(Flags.ravenwoodFlagRw1(), getRavenwoodFlagRw1());
    }

    @Test
    public void testRavenwoodFlagRw2() {
        assertEquals(Flags.ravenwoodFlagRw2(), getRavenwoodFlagRw2());
    }
}