From af3da9d1bedef7db10618bcda0663c93d67def84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Mon, 24 Jul 2023 11:10:00 +0200 Subject: [PATCH] aconfig: restructure integration tests Consolidate integration tests under tests/. Rename build targets to follow the same pattern. The important aconfig build targets are: - aconfig : the aconfig binary - aconfig.test : the aconfig unit tests - aconfig.test.java : the Java integration tests - aconfig.test.cpp : the C++ integration tests - aconfig.test.rust : the Rust integration tests (not implemented yet) Note: the Rust integration tests are blocked until the build system has added support for aconfig Rust libraries. Note: the flags used in the integration are not set correctly. A follow-up CL will fix this. Bug: 283911467 Test: atest aconfig.test.java aconfig.test.cpp Change-Id: Idb8dad4c38a49231c2e89228775bacf065ee1f57 --- tools/aconfig/Android.bp | 29 +++++++++++-- tools/aconfig/test_cc/Android.bp | 17 -------- tools/aconfig/test_cc/aconfig_hello_world.cpp | 22 ---------- tools/aconfig/tests/AconfigTest.java | 9 ++++ tools/aconfig/tests/aconfig_test.cpp | 43 +++++++++++++++++++ 5 files changed, 78 insertions(+), 42 deletions(-) delete mode 100644 tools/aconfig/test_cc/Android.bp delete mode 100644 tools/aconfig/test_cc/aconfig_hello_world.cpp create mode 100644 tools/aconfig/tests/aconfig_test.cpp diff --git a/tools/aconfig/Android.bp b/tools/aconfig/Android.bp index c3499078bf..a4ea7f4552 100644 --- a/tools/aconfig/Android.bp +++ b/tools/aconfig/Android.bp @@ -67,7 +67,7 @@ rust_test_host { ], } -// integration tests: java +// integration tests: general aconfig_declarations { name: "aconfig.test.flags", @@ -91,8 +91,10 @@ aconfig_value_set { ], } +// integration tests: java + java_aconfig_library { - name: "aconfig_test_java", + name: "aconfig_test_java_library", aconfig_declarations: "aconfig.test.flags", } @@ -104,9 +106,30 @@ android_test { manifest: "tests/AndroidManifest.xml", certificate: "platform", static_libs: [ + "aconfig_test_java_library", "androidx.test.rules", "testng", - "aconfig_test_java", ], test_suites: ["device-tests"], } + +// integration tests: C++ + +cc_aconfig_library { + name: "aconfig_test_cpp_library", + aconfig_declarations: "aconfig.test.flags", +} + +cc_test { + name: "aconfig.test.cpp", + srcs: [ + "tests/aconfig_test.cpp", + ], + static_libs: [ + "aconfig_test_cpp_library", + "libgmock", + ], + shared_libs: [ + "server_configurable_flags", + ], +} diff --git a/tools/aconfig/test_cc/Android.bp b/tools/aconfig/test_cc/Android.bp deleted file mode 100644 index b067559345..0000000000 --- a/tools/aconfig/test_cc/Android.bp +++ /dev/null @@ -1,17 +0,0 @@ -cc_aconfig_library { - name: "aconfig_test_cc_library", - aconfig_declarations: "aconfig.test.flags", -} - -cc_binary { - name: "aconfig_hello_world_cc", - srcs: [ - "aconfig_hello_world.cpp", - ], - static_libs: [ - "aconfig_test_cc_library", - ], - shared_libs: [ - "server_configurable_flags", - ], -} diff --git a/tools/aconfig/test_cc/aconfig_hello_world.cpp b/tools/aconfig/test_cc/aconfig_hello_world.cpp deleted file mode 100644 index b6840a3d08..0000000000 --- a/tools/aconfig/test_cc/aconfig_hello_world.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/* - * 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. - */ - -#include -#include "com_android_aconfig_test.h" - -int main() { - printf("hello flag %d\n", com_android_aconfig_test_disabled_rw()); -} diff --git a/tools/aconfig/tests/AconfigTest.java b/tools/aconfig/tests/AconfigTest.java index 778a4c6860..6681f320c1 100644 --- a/tools/aconfig/tests/AconfigTest.java +++ b/tools/aconfig/tests/AconfigTest.java @@ -1,7 +1,12 @@ +import static com.android.aconfig.test.Flags.FLAG_DISABLED_RO; +import static com.android.aconfig.test.Flags.FLAG_DISABLED_RW; +import static com.android.aconfig.test.Flags.FLAG_ENABLED_RO; +import static com.android.aconfig.test.Flags.FLAG_ENABLED_RW; import static com.android.aconfig.test.Flags.disabledRo; import static com.android.aconfig.test.Flags.disabledRw; import static com.android.aconfig.test.Flags.enabledRo; import static com.android.aconfig.test.Flags.enabledRw; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -13,11 +18,13 @@ import org.junit.runners.JUnit4; public final class AconfigTest { @Test public void testDisabledReadOnlyFlag() { + assertEquals("com.android.aconfig.test.disabled_ro", FLAG_DISABLED_RO); assertFalse(disabledRo()); } @Test public void testEnabledReadOnlyFlag() { + assertEquals("com.android.aconfig.test.disabled_rw", FLAG_DISABLED_RW); // TODO: change to assertTrue(enabledRo()) when the build supports reading tests/*.values // (currently all flags are assigned the default READ_ONLY + DISABLED) assertFalse(enabledRo()); @@ -25,11 +32,13 @@ public final class AconfigTest { @Test public void testDisabledReadWriteFlag() { + assertEquals("com.android.aconfig.test.enabled_ro", FLAG_ENABLED_RO); assertFalse(disabledRw()); } @Test public void testEnabledReadWriteFlag() { + assertEquals("com.android.aconfig.test.enabled_rw", FLAG_ENABLED_RW); // TODO: change to assertTrue(enabledRw()) when the build supports reading tests/*.values // (currently all flags are assigned the default READ_ONLY + DISABLED) assertFalse(enabledRw()); diff --git a/tools/aconfig/tests/aconfig_test.cpp b/tools/aconfig/tests/aconfig_test.cpp new file mode 100644 index 0000000000..10de347918 --- /dev/null +++ b/tools/aconfig/tests/aconfig_test.cpp @@ -0,0 +1,43 @@ +/* + * 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. + */ + +#include "com_android_aconfig_test.h" +#include "gtest/gtest.h" + +TEST(AconfigTest, TestDisabledReadOnlyFlag) { + ASSERT_FALSE(com_android_aconfig_test_disabled_ro()); +} + +TEST(AconfigTest, TestEnabledReadOnlyFlag) { + // TODO: change to assertTrue(enabledRo()) when the build supports reading tests/*.values + // (currently all flags are assigned the default READ_ONLY + DISABLED) + ASSERT_FALSE(com_android_aconfig_test_enabled_ro()); +} + +TEST(AconfigTest, TestDisabledReadWriteFlag) { + ASSERT_FALSE(com_android_aconfig_test_disabled_rw()); +} + +TEST(AconfigTest, TestEnabledReadWriteFlag) { + // TODO: change to assertTrue(enabledRo()) when the build supports reading tests/*.values + // (currently all flags are assigned the default READ_ONLY + DISABLED) + ASSERT_FALSE(com_android_aconfig_test_enabled_rw()); +} + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}