2012-10-02 55 views
5

Tôi đang cố gắng chạy thử nghiệm trong Jenkins cho gói Python sử dụng PyQt4 và thử nghiệm tạo cửa sổ. Kể từ khi tôi đang chạy các bài kiểm tra trong Jenkins, tôi cần phải chuyển hướng đầu ra đồ họa, vì vậy tôi đang sử dụng xvfb-chạy. Hầu hết thời gian, công trình này, nhưng một khoảng thời gian ngắn, các thử nghiệm ngẫu nhiên sẽ thất bại với:Chạy py.test với xvfb-chạy

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process 

Nếu tôi tái chạy thử nghiệm, nó hoạt động tốt hầu hết thời gian (vì vậy nó chỉ là một -off vấn đề).

Có ai gặp phải sự cố này trước đây không? Bạn có ý tưởng nào để giải quyết sự ổn định của thử nghiệm không?

+3

Tôi nghĩ rằng đó là dòng trong kịch bản 'Xvfb-run' nơi nó sẽ cố gắng để phát hiện nếu có một ví dụ chạy, vì vậy nếu các' công tắc -a' đã được đưa ra, có thể thử lại với một khác nhau số máy chủ. Hãy thử chạy với '-a' chuyển đổi (hoặc' --auto-servernum') để xem nếu điều đó làm cho bất kỳ sự khác biệt. –

Trả lời

1

Nếu bản sao xvfb của bạn chạy là same as mine, tôi có thể xác nhận rằng tôi cũng đã thấy điều này.

Trong trường hợp của tôi, quá trình nhắm mục tiêu khiến Xvfb gặp sự cố. Điều này có nghĩa rằng các kịch bản wrapper chính nó không thành công ở dòng 171 khi rách xuống không còn chạy Xvfb. Để làm việc xung quanh nó, tôi bọc kill $XVFBPID trong một khối set +e/set -e. Nó cũng giúp nếu bạn chỉ định --error-file= để xvfb-run lưu đầu ra lỗi không đồng bộ tiêu chuẩn từ Xvfb trong khi quá trình đích của bạn đang chạy, vì vậy bạn có thể lấy nguyên nhân cơ bản cố định.

làm việc xung quanh:

# Kill Xvfb now that the command has exited. 
# Ignore failure of kill since we want to be forgiving of Xvfb itself crashing 
set +e 
kill $XVFBPID 
set -e 
+0

Điều này thật đáng buồn đã không làm việc cho tôi. Cảm ơn mặc dù. – Sam

1

Nó làm việc thông qua quá trình tìm Xvfb và giết nó.

ps auwx | grep "Xvfb" | grep -v grep 
Các vấn đề liên quan