2017-06-16 13 views
0

ファイルとディレクトリの作成、移動、名前変更に反応するディレクトリモニタ用のユニットテストをDockerで実行しようとしています。ここで ビルド時にスクリプトが失敗しますが、Dockerコンテナから動作します

はスクリプトです:
  • redis

    #/bin/bash 
    
    # Launch Redis server 
    redis-server --daemonize yes 
    # Start directory_observer 
    python /test/directory_observer/src/directory_observer.py --config=/test/directory_observer/tests/directory_observer.ini & 
    # Execute test script (operations in the folders) 
    bash /test/directory_observer/tests/Dockerfile_testing/directory_observer_test_cases.sh 
    # Run Python unit test based on the operations executed above 
    python /test/directory_observer/tests/Dockerfile_testing/test_directory_observer.py 
    cd /test/directory_observer/ && nosetests 
    
    があるモニターで気づいたイベントがストックされている

  • directory_observer.pyディレクトリが

  • directory_observer_test_cases.sh

    だけではbashで監視していますいくつかのファイルやディレクトリの作成、名前の変更、移動

  • test_directory_observer.pyちょうどPythonのユニットテストスクリプト(デバッグ目的のために、ここで実行します)

問題はいくつかのテストビルドで任意の明白な理由なしに失敗するということですが、私は正確に同じbashの命令をしようとするとされます実行中のコンテナから、意図したとおりに動作します。

あなたはdirectory_observer_test_cases.shのコードが必要な場合:

#!/bin/bash 

cd /test/monitored1 

# Create, rename and delete file 
touch file1 
mv file1 rename1 

# Same as above, but in a sub-directory 
mkdir sub-monitored 
cd /test/monitored1/sub-monitored 
touch file2 
mv file2 rename2 

cd /test/monitored2 

# Create, rename and delete file to test second monitored dir 
touch file12 
mv file12 rename12 


### NOT MONITORED FROM HERE ### 


# Rename the monitored directory 
cd /test 
mv monitored1 watched1 

# Same as #1, but in the newly renamed directory 
cd /test/watched1 
touch file3 
mv file3 rename3 

# Move the second monitored directory 
cd /test 
mv monitored2 directory_host 

# Same as #1, but in the newly moved directory 
cd /test/directory_host/monitored2 
touch file4 
mv file4 rename4 

# Operations in the non-monitored directory 
cd /test/ingored.t 
touch file5 
mv file5 rename5 

をあなたが尋ねるFOREて、はい私はthis questionを読みましたが、それはそこに私を助けていない(または私は何かが欠けています)。

答えて

0

ディレクトリモニタがバックグラウンドプロセスとして起動されたため、モニタが初期化される前にテストスクリプトが開始されていました。したがって、いくつかのイベントが見逃され、テストが失敗しました。

テストスクリプトを起動する前にsleep 1を追加すると、問題が解決され、すべてがスムーズに実行されます。

関連する問題