2016-04-01 18 views
1

ファイルを開き、出力をtail -fにしたい。私は、サブプロセスでテストの開始時にファイルを開き、テストを実行してから、テールの先頭から出力を処理したいと考えています。tail Robot Frameworkのログファイル

私はRun Processを使用しようとしましたが、プロセスが終了しないので、スピンするだけです。 Start Processに続けてGet Process Resultを試しましたが、エラーが表示されるGetting results of unfinished processes is not supported.

これは可能ですか?

答えて

2

tail -fは不要です。テストの開始時に、ファイル内のバイト数を取得できます。テストを実行させ、先に計算したバイトオフセットからファイルを読み込みます(またはファイル全体を読み込み、スライスを使用して新しいデータを表示します)

+0

これは私が尋ねた質問に答えるので、ありがとうございます。しかし、私は 'tail -f'ではなく' tail -F'を使うべきでした。ユースケースは、一定のサイズの後に回転する回転ログファイルです。 'tail 'がキャップの近くで開始された場合、ファイルがロールオーバーすると、新しいファイルはかなり大きくなり、読み込みはすべての必要な出力を与えません。 – ewok

0

tail -Fコマンドは終了しませんそれが終了するまで、結果を得ることはできません。 あなたのニーズを達成する2つの方法があります。

まず、それは標準出力です取得する前に尾のプロセスを終了:

${result} =  start Process tail  -F  tailtest alias=tail 
#test case stuff starts here 
#... 
#test case stuff ends here 
terminate process tail 
${result} Get Process Result tail stdout=True 
log ${result} 

あなたがやる「プロセスを開始する」とテスト・セットアップ/ティアダウンで結果を得る&、それを終了することができます。

他のオプションは、出力をファイルにリダイレクトし、このファイルの内容を取得することです:

${result} =  start Process tail  -F  tailtest stdout=tailoutput alias=tail 
#test case stuff starts here 
#... 
#test case stuff ends here 
${result} get file tailoutput 
log ${result} 

あなたはとにかく尾のプロセスを終了する場合にはクリーナー解決策になります。

テール出力が大きい場合は、「出力バッファがいっぱいになり、プログラムがハングアップする可能性がある」という問題を回避した方が良い方法です。

関連する問題