स्टेज दो कंटेनर
ये कंटेनर बिल्ड यूज़र कॉन्फ़िग (जॉब) इनपुट के आधार पर गतिशील रूप से शुरू होते हैं, जो पर्पलटीम CLI को दिया जाता है, विशेष रूप से आपके द्वारा परिभाषित testSessions की संख्या।
निम्नलिखित कॉन्फ़िगरेशन प्रासंगिक हैं यदि आप पर्पलटीम बैक-एंड को local वातावरण में चलाने का इरादा रखते हैं। cloud में यह सब आपके लिए किया जाता है।
इस रिपॉजिटरी को क्लोन करें।
हम परीक्षण के लिए सीधे app-slave निर्देशिका में एक .env फ़ाइल का उपयोग करते हैं।
ZAP_API_KEY
सुनिश्चित करें कि आपने ZAP_API_KEY पर्यावरण चर को एक मान निर्दिष्ट किया है।
ZAP_API_KEY जो कुछ भी आप चुनें, हो सकता है, बस यह सुनिश्चित करें कि इसे app-slave के लिए परिभाषित करने के अलावा, आप इसे app-scanner प्रोजेक्ट कॉन्फ़िगरेशन में भी जोड़ें। app-scanner प्रोजेक्ट को चरण दो कंटेनर में चल रहे Zap से प्रमाणित करने के लिए Zap API Key कॉन्फ़िगर करने की आवश्यकता होती है। app-scanner प्रोजेक्ट के लिए, इसे निम्नलिखित में सेट करने की आवश्यकता है:
{ "slave": { "apiKey": <zap-api-key-here> } }
HOST_ZAP_LOG4J_PROPERTIES_PATH और ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET
यदि/जब आपको Zap डीबग लॉग की आवश्यकता होती है, तो आपको LOG4J डीबग कॉन्फ़िगरेशन के लिए पर्यावरण चर भी जोड़ने होंगे।
.env फ़ाइल
यदि आप .env फ़ाइल का उपयोग करना चुनते हैं, तो इन सभी पर्यावरण चरों को जोड़ना निम्नलिखित जैसा दिखेगा:
ZAP_API_KEY=<zap-api-key-here>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<absolute-path-to/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties
बशर्ते आपने ऊपर चर्चा किए गए पर्यावरण चर स्थापित कर लिए हों:
local वातावरण में चलने वाले app-slave (Zap) कंटेनरों के लिए डीबग लॉगिंग चालू करने के लिए, volumes सरणी और source कुंजी वाले तत्व को अन-कमेंट करें जिसमें पर्यावरण चर HOST_ZAP_LOG4J_PROPERTIES_PATH है।
लॉग को वास्तव में देखने के लिए विवरण नीचे दिए गए हैं।
आप अपने परीक्षण चलने के दौरान Zap के साथ बातचीत कर सकते हैं (Zap UI से क्वेरी कर सकते हैं)। हमने अतीत में app-scanner को डीबग करते समय Zap की स्थिति की जाँच करने के लिए इसे उपयोगी पाया है।
docker stats
docker container ls
यह docker-compose.yml में परिभाषित अनुसार 8080-8091 के बीच कोई भी पोर्ट हो सकता है।
zap:8080/*
http://zap:8080/ पर ब्राउज़ करें।zap प्रक्रिया के माध्यम से उत्तर दिए जाएंगे।local वातावरण में चलने वाले Selenium कंटेनरों के लिए डीबग लॉगिंग चालू करने के लिए, environment सरणी और chrome और/या firefox के लिए SE_OPTS=-debug तत्व को अन-कमेंट करें।
लॉग को वास्तव में देखने के लिए विवरण नीचे दिए गए हैं।
निम्नलिखित बताता है कि इस प्रोजेक्ट से चलने वाले किसी भी Selenium कंटेनर के अंदर ब्राउज़र देखने के लिए आपको क्या करने की आवश्यकता होगी।
-debug इमेज से बदलें। -debug इमेज पर टिप्पणी की जा सकती है, इसलिए सामान्य इमेज को कमेंट आउट करें और अंत में -debug जोड़कर इमेज को अन-कमेंट करें।5900 पोर्ट रेंज को अन-कमेंट करके कंटेनर के अंदर VNC सर्वर तक पहुँच सकते हैं। बाहरी पोर्ट के रूप में एक रेंज निर्दिष्ट करके (उदा.: 5900-5901) आप एक साथ एक से अधिक कंटेनर में VNC कर सकेंगे, उदाहरण में हमने एक साथ दो सत्र खोलने की अनुमति दी है। यदि आपको दो से अधिक में VNC करने की आवश्यकता है, तो बस बाहरी पोर्ट रेंज को चौड़ा करें।आपको कंटेनर के अंदर VNC सर्वर से कनेक्शन खोलने के लिए एक VNC क्लाइंट की आवश्यकता होगी। Linux Mint पर Remmina Remote Desktop Client का उपयोग करने में हमें सफलता मिली है। सॉफ़्टवेयर मैनेजर के माध्यम से Remmina-plugin-vnc इंस्टॉल करें।
अपना Remmina Remote Desktop Client चलाएँ।
नई प्रविष्टियाँ बनाएँ। यदि आप एक साथ कुछ Selenium कंटेनरों में VNC करने का इरादा रखते हैं, तो आप प्रत्येक को निम्नलिखित की तरह सेट कर सकते हैं:
| कुंजी | मान |
|---|---|
| नाम | seleniumstandalone_chrome_1 |
| प्रोटोकॉल | VNC - वर्चुअल नेटवर्क कंप्यूटिंग |
| बेसिक टैब में | |
| सर्वर | 127.0.0.1:5900 |
| पासवर्ड | गुप्त |
| रंग गहराई | ट्रू कलर (24 बिट) # हमारे लिए केवल यही काम करता है |
| गुणवत्ता | निम्न (सबसे तेज़) |
| कुंजी | मान |
|---|---|
| नाम | seleniumstandalone_chrome_2 |
| प्रोटोकॉल | VNC - वर्चुअल नेटवर्क कंप्यूटिंग |
| बेसिक टैब में | |
| सर्वर | 127.0.0.1:5901 |
| पासवर्ड | गुप्त |
| रंग गहराई | ट्रू कलर (24 बिट) # हमारे लिए केवल यही काम करता है |
| गुणवत्ता | निम्न (सबसे तेज़) |
SeleniumHQ github पर अधिक विवरण।
एक बार Selenium कंटेनर चलने के बाद (एक टर्मिनल में docker stats चलाना इसे देखने के लिए सुविधाजनक है), आप docker container ls से पुष्टि कर सकते हैं कि कौन सा Selenium कंटेनर किस बाहरी पोर्ट का उपयोग कर रहा है, क्योंकि Docker को पता नहीं है कि आपने अपने VNC क्लाइंट प्रविष्टियों में से किसके लिए कौन से पोर्ट निर्दिष्ट किए हैं, इसलिए किसी दिए गए VNC क्लाइंट प्रविष्टि का नाम आवश्यक रूप से समान नाम वाले Selenium कंटेनर से मेल नहीं खा सकता है। इस कारण से, docker container ls के साथ पोर्ट मैपिंग की पुष्टि करना एक अच्छा विचार है।
जब आपके पास कई Test Session हों, तो यह सहसंबंधित करने के लिए कि कौन सा Selenium कंटेनर किस Test Session के लिए उपयोग किया जा रहा है, आपको चल रहे app-scanner लॉग की समीक्षा करने की आवश्यकता हो सकती है। आपको यह भी सुनिश्चित करने की आवश्यकता हो सकती है कि app-scanner को निम्नलिखित लॉग संदेशों में से कुछ या अधिक देखने के लिए लॉग स्तर debug पर कॉन्फ़िगर किया गया है:
[app.parallel] cucCli process with PID "28" has been spawned for test session with Id "lowPrivUser"
[app.parallel] cucCli process with PID "34" has been spawned for test session with Id "adminUser"
[pid-28,world] seleniumContainerName is: seleniumstandalone_chrome_1
[pid-34,world] seleniumContainerName is: seleniumstandalone_chrome_2