Загрузите файл из SFTP, используя SSHJ, поместите в путь к классам проекта и дайте MSSQLServeContainer загрузить его - PullRequest
0 голосов
/ 23 мая 2018

Я работаю с Docker, чтобы запустить мой модульный тест DAO, который попадает в базу данных SQLServer, которая находится в контейнере Docker.

STEP1: я хочу, чтобы я извлек последнюю версию файла BAK с моего удаленного сервера (коробка Linux вкакой докер был установлен) в мой путь к классу проекта (src / test / resources), чтобы я мог использовать MSSQLServerContainer для его извлечения перед запуском контейнера.

Итак, я делаю SSHJ для извлечения файла, как показано ниже:

final SSHClient ssh = new SSHClient();
establishConnection(ssh);
SFTPClient sftp = ssh.newSFTPClient();

List<RemoteResourceInfo> files = sftp.ls("public");
for (RemoteResourceInfo file : files) {
    String remoteServerFileLocation = file.getPath();
    //This will download the BAK file to target folder
    sftp.get(remoteServerFileLocation, "src/test/resources");
    //sftp.get(remoteServerFileLocation, "target");
}
sftp.close();
ssh.disconnect();

и запускаю контейнер, как показано ниже:

 xMSSQLServerContainer.withClasspathResourceMapping(BACKUP_FILE_NAME, BACKUP_FILE_PATH, BindMode.READ_ONLY).start();

, так что теперь моя проблема в том, чтосбой со следующей ошибкой:

java.lang.IllegalArgumentException: Resource with path CCS_Utility.bak could not be found on any of these classloaders: [sun.misc.Launcher$AppClassLoader@18b4aac2]

похоже, что он не сбрасывает файл в classpath, пока контейнер не запущен.Есть ли способ, которым я могу сбросить файл, как только будет выполнена следующая строка sftp.get (remoteServerFileLocation, "src / test / resources"); .чтобы он был доступен в classpath к моменту запуска контейнера.

до запуска контейнера необходимо поместить файл BAK в папку src / test / resources , чтобы он мог запускатьсяконтейнер и выберите файл из classpath и запустите модульный тест.

...