2012-10-02 12 views
5

के साथ py.test चल रहा है मैं एक पायथन पैकेज के लिए जेनकिंस में परीक्षण चलाने की कोशिश कर रहा हूं जो PyQt4 का उपयोग करता है, और परीक्षण विंडोज़ बनाते हैं। चूंकि मैं जेनकींस में परीक्षण चला रहा हूं, इसलिए मुझे ग्राफिकल आउटपुट को पुनर्निर्देशित करने की आवश्यकता है, इसलिए मैं xvfb-run का उपयोग कर रहा हूं। अधिकांश समय, यह काम करता है, लेकिन समय का एक अंश, परीक्षण बेतरतीब ढंग से साथ विफल हो जाएगा:xvfb-run

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

मैं परीक्षण फिर से चलाते हैं, तो यह ठीक समय के सबसे अधिक काम करता है (इसलिए यह सिर्फ एक एक है -ऑफ समस्या)।

क्या किसी को इस मुद्दे का सामना करना पड़ा है? क्या आपके पास परीक्षण की स्थिरता में सुधार के लिए कामकाज के लिए कोई विचार है?

+3

मुझे लगता है कि 'xvfb-run' लिपि में लाइन जहां यह अगर वहाँ एक और उदाहरण चल रहा है का पता लगाने की कोशिश करता है, इसलिए यदि' -a' स्विच दिया गया था, एक अलग के साथ पुन: प्रयास कर सकते हैं सर्वर नंबर यह देखने के लिए कि क्या इससे कोई फर्क पड़ता है, '-a' स्विच (या '--auto-servernum') के साथ चलने का प्रयास करें। –

उत्तर

1

यदि आपकी xvfb-run की प्रति same as mine है, तो मैं पुष्टि कर सकता हूं कि मैंने इसे भी देखा है।

मेरे मामले में, लक्ष्य प्रक्रिया ने Xvfb को क्रैश करने का कारण बना दिया। इसका मतलब यह है कि रैपर स्क्रिप्ट स्वयं 171 लाइन पर विफल हो जाती है जब Xvfb नहीं चलती है। इसके आसपास काम करने के लिए मैंने kill $XVFBPID को set +e/set -e ब्लॉक में लपेट लिया। यदि आप --error-file= निर्दिष्ट करते हैं तो यह भी मदद करता है ताकि xvfb-run Xvfb से एसिंक्रोनस मानक त्रुटि आउटपुट सहेजता है जबकि आपकी लक्ष्य प्रक्रिया चल रही है, इसलिए आप अंतर्निहित कारण को ठीक कर सकते हैं।

चारों ओर कार्य:

# 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

यह दुखद रूप से मेरे लिए काम नहीं किया। हालांकि धन्यवाद। – Sam

1

यह Xvfb प्रक्रिया खोजने के लिए और इसे मारने के माध्यम से काम करते हैं।

ps auwx | grep "Xvfb" | grep -v grep