# Java implementation testing directory # This directory contains acceptance tests for Java implementation. Current implementation supports these tests: - test_arrays - test_binary - test_builtin - test_const - test_enums - test_lists - test_struct and communicate via TPC or serial port. ## Prerequisites - [Java 21 SDK](https://jdk.java.net/21/) - [Maven 3.9.5](https://maven.apache.org/download.cgi) To check that all the prerequisites are correctly installed, run `mvn -v`. You should get something like this: ``` Apache Maven 3.9.5 (***) Maven home: c:\Program Files\Maven\apache-maven-3.9.5 Java version: 21, vendor: Oracle Corporation, runtime: c:\Program Files\Java\jdk-21 Default locale: en_US, platform encoding: UTF-8 OS name: "***", version: "***", arch: "***", family: "***" ``` - If `mvn -v` fails, check that you have added maven to the `PATH` variable. - If you do not see the correct Java version, check that you have set the `JAVA_HOME` and `PATH` variables correctly. ## Test folder structure * **client/** - client side tests * **server/** - server side tests * **servers/** - TCP and UART server for testing purpose * **services/** - server side functions implementation ## Generating shim code To generate Java shim code for tests run: ```sh ruby ..\..\internal\scripts\generate_erpc_java.rb [erpcgen_path] [erpc_path] ``` ### Example ```sh ruby ..\..\internal\scripts\generate_erpc_java.rb "erpcgen\VisualStudio_v14\Debug\" "C:\mcu-multicore\erpc" ``` ## Running tests To execute Java tests from commandline use Maven `test` lifecycle. Selecting specific test case is done with parameter `-Dtest=TestName`. It is also possible to change transport configuration with parameters specified below. `TestName` is derived as PascalCase from base test name specified in IDL file. Example: `test_arrays -> TestArrays` Server tests names are create by adding `Server` to `TestName`. Example: `test_arrays -> TestArraysServer` ### Client To run client test, execute `mvn test -Dtest=TestName` ### Server To run server test, execute `mvn test -Dtest=TestNameServer -Dserver` ### Parameters - `-Dtest=TEST_NAME` - Name of the test (Pascal case) - `-Dclient` (**Default**) or `-Dserver` - `-Dhost=HOST_NAME ` (default: localhost) - Set host name - `-Dport=PORT` (default: 40) - Set port - `-Dserial=COM_PORT` (default: COM6) - Enable serial communication - `-Dbaudrate=BAUDRATE` (default: 115200) - Set serial link baudrate ```shell mvn test -Dtest=TestArrays # Client test casemvn mvn test -Dtest=TestArrays -Dserial=COM6 -Dbaudrate=115200 # Specified serial transport mvn test -Dtest=TestArraysServer -Dserver # Server test case mvn test -Dtest=TestArraysServer -Dserver -Dport=12345 # Server test case with custom port ``` ## Test folder structure - **client/** - Client tests - **server/** - Server tests - **services/** - Services for server tests - **Connection.java** - Helper class for transport creation - **TestingClient.java** - Base class for client tests - **TestingServer.java** - This class represent ERPC server for testing purpose. SimpleServer instance is stored as static, so it is possible to stop the server and close connection with static function `stop()` without access to the instance of the class. This is used in `CommonService.java` to stop currently running server.