Merge "aconfig: add Java integration tests" am: 1120cb8aa4

Original change: https://android-review.googlesource.com/c/platform/build/+/2607427

Change-Id: I8f1a4d78fdcc297f719e10b9364bb16d266727fc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Zhi Dou 2023-06-09 14:21:44 +00:00 committed by Automerger Merge Worker
commit e6bcd369a9
8 changed files with 114 additions and 7 deletions

View file

@ -2,6 +2,8 @@ package {
default_applicable_licenses: ["Android-Apache-2.0"],
}
// host binary: aconfig
rust_protobuf_host {
name: "libaconfig_protos",
protos: ["protos/aconfig.proto"],
@ -39,3 +41,42 @@ rust_test_host {
"libitertools",
],
}
// integration tests: java
device_config_definitions {
name: "aconfig.test.flags",
namespace: "com.android.aconfig.test",
srcs: ["tests/test.aconfig"],
}
device_config_values {
name: "aconfig.test.flag.values",
namespace: "com.android.aconfig.test",
srcs: [
"tests/first.values",
"tests/second.values",
],
}
device_config_value_set {
name: "aconfig.test.flag.value_set",
values: [
"aconfig.test.flag.values",
],
}
android_test {
name: "aconfig.test.java",
srcs: [
"tests/**/*.java",
":aconfig.test.flags{.srcjar}",
],
manifest: "tests/AndroidManifest.xml",
certificate: "platform",
static_libs: [
"androidx.test.rules",
"testng",
],
test_suites: ["device-tests"],
}

View file

@ -59,7 +59,7 @@ fn create_class_element(package: &str, item: &Item) -> ClassElement {
let device_config_flag = codegen::create_device_config_ident(package, &item.name)
.expect("values checked at cache creation time");
ClassElement {
method_name: item.name.clone(),
method_name: item.name.replace('-', "_"),
readwrite: item.permission == Permission::ReadWrite,
default_value: if item.state == FlagState::Enabled {
"true".to_string()

View file

@ -24,17 +24,17 @@ pub mod test_utils {
crate::commands::create_cache(
"com.android.aconfig.test",
vec![Input {
source: Source::File("testdata/test.aconfig".to_string()),
reader: Box::new(include_bytes!("../testdata/test.aconfig").as_slice()),
source: Source::File("tests/test.aconfig".to_string()),
reader: Box::new(include_bytes!("../tests/test.aconfig").as_slice()),
}],
vec![
Input {
source: Source::File("testdata/first.values".to_string()),
reader: Box::new(include_bytes!("../testdata/first.values").as_slice()),
source: Source::File("tests/first.values".to_string()),
reader: Box::new(include_bytes!("../tests/first.values").as_slice()),
},
Input {
source: Source::File("testdata/test.aconfig".to_string()),
reader: Box::new(include_bytes!("../testdata/second.values").as_slice()),
source: Source::File("tests/test.aconfig".to_string()),
reader: Box::new(include_bytes!("../tests/second.values").as_slice()),
},
],
)

View file

@ -0,0 +1,37 @@
import static com.android.aconfig.test.Flags.disabled_ro;
import static com.android.aconfig.test.Flags.disabled_rw;
import static com.android.aconfig.test.Flags.enabled_ro;
import static com.android.aconfig.test.Flags.enabled_rw;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public final class AconfigTest {
@Test
public void testDisabledReadOnlyFlag() {
assertFalse(disabled_ro());
}
@Test
public void testEnabledReadOnlyFlag() {
// TODO: change to assertTrue(enabled_ro()) when the build supports reading tests/*.values
// (currently all flags are assigned the default READ_ONLY + DISABLED)
assertFalse(enabled_ro());
}
@Test
public void testDisabledReadWriteFlag() {
assertFalse(disabled_rw());
}
@Test
public void testEnabledReadWriteFlag() {
// TODO: change to assertTrue(enabled_rw()) when the build supports reading tests/*.values
// (currently all flags are assigned the default READ_ONLY + DISABLED)
assertFalse(enabled_rw());
}
}

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2023 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.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="aconfig.test.java">
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<application>
<uses-library android:name="android.test.runner"/>
</application>
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="aconfig.test.java"
android:label="aconfig integration tests (java)" />
</manifest>