我正在创建一个测试,它将对与 Postgres 数据库对话的应用程序执行一些压力测试。为了使其可复制,我想在每次运行时重新创建数据库。用注释修饰的启动方法org.junit.Before
将删除数据库(如果存在)并从转储文件中恢复它。执行此表单 shell/命令很简单:
psql -f db.out newdb
或类似的东西。由于测试可能在未在托管数据库的同一台机器上运行的 JVM 上执行,我想知道是否可以从 Java 编程调用远程机器上的 shell/batch 脚本。
谢谢
我正在创建一个测试,它将对与 Postgres 数据库对话的应用程序执行一些压力测试。为了使其可复制,我想在每次运行时重新创建数据库。用注释修饰的启动方法org.junit.Before
将删除数据库(如果存在)并从转储文件中恢复它。执行此表单 shell/命令很简单:
psql -f db.out newdb
或类似的东西。由于测试可能在未在托管数据库的同一台机器上运行的 JVM 上执行,我想知道是否可以从 Java 编程调用远程机器上的 shell/batch 脚本。
谢谢
如果您了解机器详细信息(主机名、登录名、密码),我目前唯一能想到的就是使用Java SSH 库登录到该机器并运行该命令。
或者,您可以在本地机器上编写一个脚本,该脚本在给定正确参数的情况下在远程机器上运行该脚本。
无论如何,这是我能想到的最简单的方法!
如果设置 SSH 太复杂,您可以编写一个小型 Java 程序,它侦听套接字上的连接,然后运行脚本。在 Postgres 服务器上安装它并在测试用例中连接到它。
也就是说,我建议在每台开发人员机器上安装 Postgres 的副本。这将使您的测试运行得更快,并且当两个开发人员同时运行测试时,您不会出现虚假错误。此外,您不会因为网络问题而出错,因为有人在服务器上进行维护,因为开发人员 X 已经更改了 DB 架构等。