Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions vee-port/validation/serial/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build/
.gradle/
local.properties
41 changes: 41 additions & 0 deletions vee-port/validation/serial/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Serial Test Suite

This folder contains a ready-to-use project for testing [Serial](https://docs.microej.com/en/latest/VEEPortingGuide/serial.html) implementations on a device.
This Test Suite will typically test the following serial operations: open, close, read, write.

## Specifications

- Tested Foundation Library: `Serial <https://repository.microej.com/modules/ej/api/serial/>`_
- Test Suite Module: `com.microej.pack.serial#serial-testsuite <https://repository.microej.com/modules/com/microej/pack/serial/serial-testsuite/>`_

Set the Test Suite's module version in [build.gradle.kts](build.gradle.kts) to match the version of the pack included in the VEE Port tested.

Please refer to [VEE Port Qualification Test Suite Versioning](https://docs.microej.com/en/latest/VEEPortingGuide/veePortQualification.html#test-suite-versioning)
to determine the Serial Test Suite module version.

## Requirements

- Read VEE Port Test Suites [documentation](../README.md).

## Tests properties

Before running tests, please fill in the following fields in file `validation/microej-testsuite-common.properties` with expected values:

- **microej.java.property.serial.port.rx**: [*MANDATORY*] set port used for rx operations (both tx and rx can get mapped to the same port so as to test serial in loopback mode).
- **microej.java.property.serial.port.tx**: [*MANDATORY*] set port used for tx operations (both tx and rx can get mapped to the same port so as to test serial in loopback mode).
- **microej.java.property.serial.port.baudrate**: [*OPTIONAL*] set baudrate of rx/tx ports (default value: 115200).
- **microej.java.property.serial.port.bitsperchar**: [*OPTIONAL*] set data bits of rx/tx ports (default value: 8).
- **microej.java.property.serial.port.stopbits**: [*OPTIONAL*] set stop bits of rx/tx ports (default value: 1).
- **microej.java.property.serial.port.parity**: [*OPTIONAL*] set parity of rx/tx ports (default value: 0).

## Usage

- Follow the configuration and execution steps described in VEE Port Test Suites [documentation](../README.md).

## Test Suite Source Code Navigation

- See VEE Port Test Suites [documentation](../README.md).

## Troubleshooting

- See Vee Port Test Suites [documentation](../README.md).
52 changes: 52 additions & 0 deletions vee-port/validation/serial/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import com.microej.gradle.plugins.TestMode
import com.microej.gradle.plugins.TestTarget

plugins {
id("com.microej.gradle.testsuite")
}

microej {
architectureUsage = System.getProperty("com.microej.architecture.usage") ?: "eval" // or "prod"
skippedCheckers = "readme,license,changelog"
}

dependencies {
// Define the VEE Port absolute path here if you test a VEE Port already built
// microejVee(files("[vee-port-absolute-path]"))
// Uncomment this line and comment the line above it this testsuite project is a part of the VEE Port project
microejVee(project(veePortProject))
}

testing {
suites {
val test by getting(JvmTestSuite::class) {
microej.useMicroejTestEngine(this, TestTarget.EMB, TestMode.MAIN)

dependencies {
implementation(project())
implementation(libs.ej.junit)
implementation(libs.junit.platform)

implementation(libs.testsuite.serial)
implementation(libs.ej.edc)
implementation(libs.ej.bon)
implementation(libs.ej.serial)
}

targets {
all {
testTask.configure {
filter {
// do not embed inner classes as test classes
excludeTestsMatching("*$*")
excludeTestsMatching("*AbstractTest*")
excludeTestsMatching("*AllTestClasses")

includeTestsMatching("*SingleTest_*")
}
}
}
}
}
}
}
85 changes: 85 additions & 0 deletions vee-port/validation/serial/config.properties.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Properties
#
# Copyright 2025 MicroEJ Corp. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be found with this software.

###############################################################################
# Testsuite Configuration Options
#
# Usage:
# Uncomment and set options marked '[required]'.
# Other options are set with a value that shall not be changed by default.
#
# Each option can be declared outside this file as a system property (in the
# gradle.properties with the `systemProp.` prefix for example).
# This can be useful to avoid to share absolute file-system locations in this file.
# In this case, it overrides the option defined in this file if any.
# Moreover, options related to local setup (absolute file-system locations, trace ip & port)
# can be extracted to the file 'local.properties' which is ignored for source control.
#
# This file respects the Java properties file convention: the OS path
# must use the UNIX path convention (path separator is '/'). The WINDOWS
# paths must have been converted manually replacing '\' by '/' or by '\\'.
###############################################################################

###############################################################################
# BSP Connection [required]
# Uncomment one and only one option block depending on how the target VEE Port is connected to BSP.
# See https://docs.microej.com/en/latest/VEEPortingGuide/platformCreation.html
###############################################################################

# No BSP Connection
#microej.testsuite.properties.deploy.dir.microejapp=[absolute_path]
#microej.testsuite.properties.deploy.dir.microejlib=[absolute_path]
#microej.testsuite.properties.deploy.dir.microejinc=[absolute_path]
#microej.testsuite.properties.deploy.dir.microejscript=[absolute_path]

# Partial BSP Connection
#microej.testsuite.properties.deploy.bsp.root.dir=[absolute_path]
#microej.testsuite.properties.deploy.bsp.microejscript=true

# Full BSP Connection
#microej.testsuite.properties.deploy.bsp.microejscript=true

###############################################################################
# Trace Redirection (System.out)
###############################################################################

# Uncomment and define these 2 properties when trace is redirected by 'Serial to Socket Transmitter' tool
#microej.testsuite.properties.testsuite.trace.ip=localhost
#microej.testsuite.properties.testsuite.trace.port=5555
# Otherwise uncomment this property if the trace is redirected by 'run.bat' or 'run.sh' script.
#microej.testsuite.properties.launch.test.trace.file=true

# VEE Port specific option to redirect trace on dedicated UART
#microej.testsuite.properties.debug.traces.uart=SET

#######################################################################
# Advanced Options
# These options shall not be changed by default.
###############################################################################

# The deploy tool to run after the build of the microejapp.o (defaults to 'Platform Configuration Additions')
microej.testsuite.properties.microejtool.deploy.name=deployToolBSPRun

# Set the verbose or not. Possible values: `true` or `false`
# When this option is set to `true`, the harness will output the execution trace.
microej.testsuite.verbose=true

# The testsuite timeout (in seconds)
microej.testsuite.timeout=600

# The number of times we'll retry a test if it fails
microej.testsuite.retry.count=1

# Retry a test unless this pattern is shown
microej.testsuite.retry.unless=MicroEJ START

# A jvm args to pass to the testsuite harness
microej.testsuite.jvmArgs=-Xmx768m

# A jvm args to pass to launch scripts forked vm
microej.testsuite.properties.launch.properties.jvm=-Xmx2048M

# The foundation jars used for the code coverage, useful only if the target.vm.name = S3
microej.testsuite.cc.jars.name.regex=serial-(.*)\.jar
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Testsuite Application Options
#
# Copyright 2025 MicroEJ Corp. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be found with this software.

# Java memory settings
core.memory.immortal.memory=RAM
core.memory.immortal.size=1024
core.memory.javaheap.memory=RAM
core.memory.javaheap.size=65536
core.memory.javaheapsum.size=65536
core.memory.thread.block.size=512
core.memory.thread.max.size=10
core.memory.threads.memory=RAM
core.memory.threads.pool.memory=RAM
core.memory.threads.pool.size=16
core.memory.threads.size=4

# [MANDATORY] set port used for rx operations (both tx and rx can get mapped to the same port so as to test serial in loopback mode).
microej.java.property.serial.port.rx=COM0

# [MANDATORY] set port used for tx operations (both tx and rx can get mapped to the same port so as to test serial in loopback mode).
microej.java.property.serial.port.tx=COM0

# [OPTIONAL] set baudrate of rx/tx ports (default value: 115200).
microej.java.property.serial.port.baudrate=115200

# [OPTIONAL] set data bits of rx/tx ports (default value: 8).
microej.java.property.serial.port.bitsperchar=8

# [OPTIONAL] set stop bits of rx/tx ports (default value: 1).
microej.java.property.serial.port.stopbits=1

# [OPTIONAL] set parity of rx/tx ports (default value: 0).
microej.java.property.serial.port.parity=0