| 605 | |
| 606 | |
| 607 | class JavaTests(AbstractTests): |
| 608 | |
| 609 | def __init__(self, maven: str, tcp_port: int, serial_port: str | None = None, **kwargs: dict[str, Any]) -> None: |
| 610 | super().__init__(**kwargs) |
| 611 | |
| 612 | self.maven = Path(shutil.which("mvn")) if maven == "mvn" else Path(maven) |
| 613 | self.tcp_port = tcp_port |
| 614 | self.serial_port = serial_port |
| 615 | self.java_test_dir = self.test_dir.joinpath("java_impl_tests/src/test/java/io/github/embeddedrpc/erpc/tests/") |
| 616 | self.java_result_dir = self.test_dir.joinpath("java_impl_tests/target/surefire-reports") |
| 617 | |
| 618 | def init_tests(self) -> bool: |
| 619 | return run([self.maven, "generate-test-sources"], cwd=self.test_dir.joinpath("java_impl_tests")).returncode == 0 |
| 620 | |
| 621 | def test_case_client_exist(self, test_case: str) -> bool: |
| 622 | return self.java_test_dir.joinpath("client").joinpath(f"{to_pascal_case(test_case)}.java").exists() |
| 623 | |
| 624 | def test_case_server_exist(self, test_case: str) -> bool: |
| 625 | return self.java_test_dir.joinpath("server").joinpath(f"{to_pascal_case(test_case)}Server.java").exists() |
| 626 | |
| 627 | def get_result_file(self) -> Path: |
| 628 | original_file = self.java_result_dir.joinpath( |
| 629 | f"TEST-io.github.embeddedrpc.erpc.tests.client.{to_pascal_case(self.test_case)}.xml") |
| 630 | new_file = self.result_dir.joinpath(f"{self.test_suit_name}_{self.test_case}.xml") |
| 631 | if original_file.exists(): |
| 632 | shutil.move(original_file, new_file) |
| 633 | else: |
| 634 | self.create_failed_test_suite_xml(self.test_case, new_file) |
| 635 | |
| 636 | return new_file |
| 637 | |
| 638 | def client(self) -> None: |
| 639 | mvn_command = [ |
| 640 | self.maven, "test", |
| 641 | f"-Dtest={to_pascal_case(self.test_case)}", |
| 642 | "-Dclient", |
| 643 | *self.client_extra_parameters |
| 644 | ] |
| 645 | |
| 646 | if self.transport == "tcp": |
| 647 | mvn_command.append(f"-Dport={str(self.tcp_port)}") |
| 648 | elif self.transport == "serial" and self.serial_port: |
| 649 | mvn_command.append(f"-Dserial={self.serial_port}") |
| 650 | else: |
| 651 | raise ValueError |
| 652 | |
| 653 | self.client_process = Popen( |
| 654 | mvn_command, |
| 655 | cwd=self.test_dir.joinpath('java_impl_tests') |
| 656 | ) |
| 657 | |
| 658 | def wait_client(self, timeout: int = 5) -> bool: |
| 659 | return super().wait_client(10) |
| 660 | |
| 661 | def server(self) -> None: |
| 662 | mvn_command = [ |
| 663 | self.maven, "test", |
| 664 | f"-Dtest={to_pascal_case(self.test_case)}Server", |