support/testing/tests/package/test_openjdk: new test

This test is a simple "Hello, World" integration test of the OpenJDK
package.

It compiles the Java app on the host, then runs it on an emulated
AARCH64 target and verifies "Hello, World" is printed.

Signed-off-by: Adam Duskett <Aduskett@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Adam Duskett 2019-03-15 16:52:33 -04:00 committed by Thomas Petazzoni
parent 3641d98ec4
commit df7bf8fb41
9 changed files with 78 additions and 0 deletions

View File

@ -327,6 +327,7 @@ tests.package.test_ipython.TestIPythonPy2: { extends: .runtime_test }
tests.package.test_ipython.TestIPythonPy3: { extends: .runtime_test }
tests.package.test_lua.TestLua: { extends: .runtime_test }
tests.package.test_lua.TestLuajit: { extends: .runtime_test }
tests.package.test_openjdk.TestOpenJdk: { extends: .runtime_test }
tests.package.test_perl.TestPerl: { extends: .runtime_test }
tests.package.test_perl_class_load.TestPerlClassLoad: { extends: .runtime_test }
tests.package.test_perl_dbd_mysql.TestPerlDBDmysql: { extends: .runtime_test }

View File

@ -1501,6 +1501,8 @@ F: package/valijson/
F: package/wpa_supplicant/
F: package/wireless_tools/
F: package/xen/
F: support/testing/tests/package/br2-external/openjdk/
F: support/testing/tests/package/test_openjdk.py
N: Mauro Condarelli <mc5686@mclink.it>
F: package/mc/

View File

@ -0,0 +1 @@
source "$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-hello-world/Config.in"

View File

@ -0,0 +1 @@
name: OPENJDK

View File

@ -0,0 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_OPENJDK_PATH)/package/*/*.mk))

View File

@ -0,0 +1,5 @@
config BR2_PACKAGE_OPENJDK_HELLO_WORLD
bool "openjdk hello world"
depends on BR2_PACKAGE_OPENJDK
help
Simple class for testing openjdk

View File

@ -0,0 +1,7 @@
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, World");
}
}

View File

@ -0,0 +1,18 @@
################################################################################
#
# openjdk hello world
#
################################################################################
OPENJDK_HELLO_WORLD_DEPENDENCIES = openjdk
define OPENJDK_HELLO_WORLD_BUILD_CMDS
$(INSTALL) -D $(OPENJDK_HELLO_WORLD_PKGDIR)/HelloWorld.java $(@D)/HelloWorld.java
$(HOST_DIR)/bin/javac $(@D)/HelloWorld.java
endef
define OPENJDK_HELLO_WORLD_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 755 $(@D)/HelloWorld.class $(TARGET_DIR)/usr/bin/HelloWorld.class
endef
$(eval $(generic-package))

View File

@ -0,0 +1,42 @@
import os
import infra.basetest
class TestOpenJdk(infra.basetest.BRTest):
br2_external = [infra.filepath("tests/package/br2-external/openjdk")]
config = \
"""
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_GZIP=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_OPENJDK=y
BR2_PACKAGE_OPENJDK_HELLO_WORLD=y
"""
def login(self):
img = os.path.join(self.builddir, "images", "rootfs.cpio.gz")
kern = os.path.join(self.builddir, "images", "Image")
self.emulator.boot(arch="aarch64",
kernel=kern,
kernel_cmdline=["console=ttyAMA0"],
options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img])
self.emulator.login()
def test_run(self):
self.login()
cmd = "java -cp /usr/bin HelloWorld"
output, exit_code = self.emulator.run(cmd, 120)
print(output)
self.assertEqual(exit_code, 0)
self.assertEqual(output, ["Hello, World"])