-1
(citrus)ftpサーバーにアップロードされたファイルを受け取り、アップロードされたファイルの内容が期待どおりであることを確認しようとしています。FTPにアップロードされたファイルの内容をテストするにはどうすればよいですか?
私はSTOR
メッセージ(下のコード)を受け取ることができましたが、その内容がいくつかのテキストと同等であるかどうかはわかりません(xml、json、およびcsvファイルで作業しています)。
私を助けることができますか?おかげさまで
@Test
public class SampleFtpTest extends TestNGCitrusTestDesigner {
@Autowired
private FtpServer ftpServer;
@CitrusTest
public void testFileContent() {
Condition waitUntilFileIsUploaded = new Condition() {
@Override
public String getName() {
return "Check files on FTP";
}
@Override
public boolean isSatisfied (TestContext testContext){
return new File("target/ftp/user/anonymous").listFiles().length != 0;
}
@Override
public String getSuccessMessage (TestContext testContext){
return "Files found in FTP!";
}
@Override
public String getErrorMessage (TestContext testContext){
return "No file was found in FTP";
}
};
waitFor().condition(waitUntilFileIsUploaded).seconds(1200L).interval(5000L);
// simulate integration uploading a file...
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(20000L);
Runtime.getRuntime().exec("curl -T /tmp/test.txt ftp://localhost:22222 --user anonymous:secret");
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
// don't care about connection related messages
receive(ftpServer);
receive(ftpServer);
receive(ftpServer);
receive(ftpServer);
receive(ftpServer);
// i'd like to assert that the uploaded files content is as expected
receive(ftpServer).header("citrus_ftp_command", FTPCmd.STOR.getCommand());
}
}
をアップロードを何_「ファイルの内容についての主張」_ですか?そしてBTWでは、FTPファイル転送が「完了」したときに確定的に知る方法はありません。あなたができることは、活動の欠如に基づいて推測することだけであり、状況によっては失敗することさえあります。 –
コメントをいただきありがとうございます。私は、FTPファイル転送が完了した時点で確定的に知る方法がないことを知りません。 また、私は何をしようとしているのかを明確にするために質問を編集しました。 – nailujed
はい、それはFTPの残念なことに「機能」です。転送は失敗し、部分的なファイルを残した後、再起動または再開できます。確定性が必要な場合は、rsyncのようなものに切り替える必要があります。rsyncは隠された一時的なファイルに書き出し、完了したときにのみターゲットファイルに名前を変更するように設定できます。 –