2016-03-12 6 views
9

मैं पिछले कुछ दिनों के उत्तरों की तलाश कर रहा हूं और एक खोजने में असमर्थ हूं। मुझे सबसे नज़दीकी उत्तर मिल सकता है this जो मेरे पास मौजूद प्रश्नों का बिल्कुल जवाब नहीं देता है।ग्रैडल maxParallelForks संपत्ति के साथ समांतर परीक्षण निष्पादन

वैसे, मेरे पास सेलेनियम टेस्ट प्रोजेक्ट है जो ग्रैडल पर आधारित है। हम जेनकिन्स पर परियोजना को 20 समवर्ती धागे में परीक्षण चलाते हैं। मेरे पास अद्वितीय परीक्षण कक्षाओं की कुल संख्या 87 है। इसलिए, मुझे अपेक्षा है कि कम से कम 5 बैचों को निकालने के लिए ग्रेडल की जांच करें। परीक्षण परियोजना ककड़ी जेवीएम का उपयोग करके बनाई गई है, जेनकिंस से सेलेनियम हब तक परीक्षणों का निर्माण और ट्रिगर करता है। मैंने जितना संभव हो सके ग्रिड का उपयोग करके परीक्षणों के समानांतरता को बढ़ाने की कोशिश की। लेकिन, समस्या तब शुरू हुई जब परीक्षणों की संख्या बढ़ने लगी।

जब मैंने जेनकींस से परीक्षण शुरू किया, मैंने पहले शॉट पर देखा कि परीक्षण ने सभी 20 टेस्ट प्रक्रियाओं को निष्पादित किया था और मुझे लगता है कि दूसरा बैच भी उसी प्रक्रिया के साथ शुरू हुआ था। दूसरे बैच के बाद प्रक्रियाएं एकल मोड पर वापस चली गईं और पूरे काम को पूरा करने में 14 घंटे लग गए जो समांतर परीक्षण निष्पादन के उद्देश्य को हरा देता है।

Gradle गुण:

jvmArgs '-Xms128m', '-Xmx1024m', '-XX:MaxPermSize=128m' 
Runtime.runtime.availableProcessors().toString()) as int   
maxParallelForks = PropertyUtils.getProperty('test.parallel', '15') as int 
forkEvery = PropertyUtils.getProperty('test.forkEvery', '0') as int 

CLI:

gradle clean test -Dtest.single=*TestRun --info 

मैं सभी दस्तावेजों मैं संभवतः प्राप्त कर सकते हैं पढ़ा लेकिन इस सवाल का जवाब पाने के लिए विफल रहे हैं। अगर कोई इन सवालों के साथ मेरी मदद कर सकता है तो इसकी बहुत सराहना की जाएगी

1. कैसे ग्राडल परीक्षण धावक को आंतरिक रूप से बैच करता है? उदाहरण के लिए यदि 20 निष्पादक शुरू होते हैं और दूसरों की तुलना में तेजी से निष्पादित 1,2,3 परीक्षण करते हैं, तो क्या तीन निष्पादकों को तीन और परीक्षण कक्षाएं मिलती हैं या पूरे बैच को निष्पादित करने के लिए इंतजार कर रहे हैं?

2. फोर्क कर सकते हैं निष्पादन समानांतर परीक्षण के दौरान कैसे कार्य करता है?

जेनकींस लोग इन

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 6'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 13'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 14'

सफलतापूर्वक प्रक्रिया शुरू की 'ग्रैडल टेस्ट एक्जिक्यूटर 5'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 16'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 8'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 19'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 4 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 2 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 11 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 10 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 18 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 1 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 20 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया' Gradle टेस्ट निर्वाहक 7 '

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 9'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 3'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 15'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 17'

सफलतापूर्वक शुरू कर दिया प्रक्रिया 'Gradle टेस्ट निर्वाहक 12'

Gradle टेस्ट निर्वाहक 13 परीक्षण को क्रियान्वित करने शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 14 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 6 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 5 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 16 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 1 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 8 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 4 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 2 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 10 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 11 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 18 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 1 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 20 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 7 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 3 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 9 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 17 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 15 ने परीक्षण निष्पादित करना शुरू कर दिया।

ग्रैडल टेस्ट एक्जिक्यूटर 12 ने परीक्षण निष्पादित करना शुरू कर दिया।

+0

आप जानते हैं कि 20 ब्राउज़र चल रहे हैं (सेलेनियम मानते हैं) शायद धीमे होने जा रहे हैं कि 1 सही? –

+0

@tim_yates सच है। लेकिन, मैं सेलेनियम ग्रिड और एकाधिक मशीनों का उपयोग करता हूं। क्या आपका आशय यही था? – Saifur

उत्तर

3

forkEvery के डिफ़ॉल्ट है 0

the documentation forkEvery के अनुसार

परीक्षण कक्षाओं की अधिकतम संख्या एक काँटेदार परीक्षण प्रक्रिया में निष्पादित करने के लिए है। इस सीमा तक पहुंचने पर फोर्कड टेस्ट प्रक्रिया को पुनरारंभ किया जाएगा। डिफ़ॉल्ट मान 0 (अधिकतम नहीं) है।

तो कक्षाओं के भीतर परीक्षण नहीं होने वाले वर्गों द्वारा धीरे-धीरे (और शायद जूनिट) कांटा जाएगा। ऐसा लगता है कि 87 परीक्षण वर्गों में से कुछ लंबे समय से चलने वाले परीक्षण या बड़ी संख्या में परीक्षण हैं और वे एक फोर्कड टेस्ट प्रक्रिया में समाप्त होते हैं। मैं फोर्क प्रत्येक को 1 पर सेट करने पर विचार करता हूं। यह सुनिश्चित करेगा कि प्रत्येक टेस्ट क्लास को एक नए फोर्क में भेजा जाएगा। यदि अभी भी कोई समस्या है तो आपको यह पता लगाना होगा कि कौन से टेस्ट क्लास अधिक समय ले रहे हैं। इन वर्गों को परीक्षण के छोटे समूहों में विभाजित करने पर विचार करें ताकि प्रत्येक जेवीएम पर परीक्षण फैल जाए। यदि यह एक परीक्षण है जो हमेशा इसे फिर से डिजाइन करने पर विचार करता है और संभवतः इससे छोटे परीक्षण तैयार करता है।

मुझे विश्वास नहीं है कि ग्रेडल बैचों में परीक्षण चलाता है। चूंकि एक कर्मचारी उपलब्ध हो जाता है, यह शेष परीक्षणों की कतार से एक टेस्ट क्लास लेता है। आपको वास्तव में यह देखना होगा कि जुनीट कैसे काम करता है क्योंकि मुझे यकीन है कि ग्रेडल बस इन कॉन्फ़िगरेशन को जुनीट में पास कर रहा है।

संबंधित मुद्दे