7

मैं वर्तमान में वेब-सेवाओं की एक श्रृंखला पर काम कर रहा हूं जिसे हमें किनेसिस के साथ एकीकृत करने की आवश्यकता है - कार्यान्वयन किया गया है, हालांकि हमारे पास एकीकरण परीक्षण की एक श्रृंखला है (हमारी वेब-सेवाएं सभी का उपयोग कर रहे हैं स्प्रिंग बूट ताकि हम सर्वर के स्थानीय उदाहरण को शुरू करने के लिए हमारे टेस्ट क्लास पर @WebIntegrationTest एनोटेशन का उपयोग करें और फिर हमारे संसाधनों को टेस्टरेस्ट टेम्पलेट के साथ कॉल करें) जो वर्तमान में असली किनेसिस से कनेक्ट करने में विफल रहे हैं और विफल रहे हैं।अमेज़ॅन किनेसिस + इंटीग्रेशन टेस्ट

हालांकि सामान्य इकाई परीक्षणों में किनेसिस लाइब्रेरी के भीतर विधियों को कॉल करने में कोई समस्या नहीं है, हम वास्तव में एकीकरण परीक्षण में ऐसा नहीं कर सकते क्योंकि पूरे एप्लिकेशन स्टैक को वसंत के साथ तारित किया जाता है। कुछ अन्य चीजों के लिए (जैसे ओएथ 2 और हमारी अन्य वेब-सेवाओं पर कॉल) हम वास्तविक अंतराल को मजाक करने के लिए वायरमॉक का उपयोग करने में सक्षम हैं - जो मैं वास्तव में करना चाहता हूं वह इस संगीत में वायरमॉक का उपयोग करने के लिए है अमेज़ॅनकिनेसिस क्लाइंट को कॉल करें लेकिन मुझे यह कैसे करना है इस बारे में कोई सलाह नहीं मिल रही है।

वैकल्पिक रूप से मैंने देखा है कि कुछ एडब्ल्यूएस घटकों में तीसरे पक्ष द्वारा लिखित परीक्षा पुस्तकालय हैं जो आपको इसके स्थानीय संस्करण को चलाने की अनुमति देते हैं (उदा .: DynamoDbLocal) लेकिन Kinesis के लिए ऐसा समाधान नहीं मिल रहा है।

क्या कोई मुझे किनेसिस के साथ एकीकरण परीक्षण चलाने के बारे में कुछ सलाह देने में सक्षम है?

+0

मैं WebIntegrationTests से अपरिचित हूं, लेकिन, क्या आप: अपने परीक्षण से पहले एक शेड के साथ एक गैर-उत्पादन परीक्षण स्ट्रीम बनाएं, परीक्षण चलाएं और इसे बंद कर दें? या अपने डाल/प्राप्त कॉल पर aws api के चारों ओर एक पतला रैपर बनाएं जो कतार के माध्यम से वस्तुओं को फनल ​​कर सकता है? –

+0

मैं भी इस "समस्या" में भाग गया। एक और उपयोग केस जो मुझे चाहिए वह यह है कि प्रत्येक डेवलपर स्थानीय पर्यावरण से एकीकरण परीक्षण चलाने में सक्षम होना चाहिए। मैं हर देव के लिए धाराएं बनाना नहीं चाहता हूं। – Mantas

+0

2017 और अभी भी आसपास के कोई भी उपकरण नहीं दिख रहा है। – prayagupd

उत्तर

1

मैं एक ही मुद्दे में भाग गया और केवल नकली कार्यान्वयन मैंने पाया अब तक एक NodeJS एक था: https://github.com/mhart/kinesalite यह काम कर देता है - मैं इसके खिलाफ मेरी जावा Kinesis ग्राहक चलाने में कामयाब रहे, बस पर endpoint स्थापित करने के लिए किया था kinesis.properties:

kinesisEndpoint=http://localhost:4567 

नकारात्मक पक्ष यह है कि यह तुच्छ निर्माण समय परीक्षण के दौरान इसका इस्तेमाल करने की नहीं है - की जरूरत के लिए एक रास्ता निकालने की परीक्षण से पहले नकली Kinesis शुरू करने के लिए (एक Maven प्लगइन या कुछ और का प्रयोग करके), didn अभी तक यह नहीं मिला ..

3

समाधान देने के लिए पहले से ही बहुत देर हो सकती है लेकिन मैं wh मेरी टीम ने स्थानीय रूप से एडब्ल्यूएस संसाधनों को दोहराने के लिए किया है क्योंकि हम बहुत सारे Kinesis, DynamoDb, S3 और CloudWatch का उपयोग करते हैं।

हमने लोकलस्टैक ->https://github.com/localstack/localstack के आसपास रैपर बनाए हैं जो हमें docker-compose का उपयोग करके डॉकर कंटेनर के रूप में आवश्यक सेवाओं के स्थानीय उदाहरणों को स्पिन करने की अनुमति देते हैं।

version: '2' 
services: 
    localstack: 
    image: "localstack/localstack" 
    environment: 
     - SERVICES=kinesis,dynamodb,cloudwatch 
    ports: 
     - "4568" 
     - "4569" 
     - "4582" 
एकीकरण-परीक्षण के लिए सेटअप चरण के दौरान

फिर, हमारे आवरण आग अप docker-compose up और स्थानीय बुनियादी ढांचे के खिलाफ परीक्षण चलाता है:

हमारे लिए एक ठेठ docker-compose.yml फ़ाइल की तरह दिखता है। बाद में आंसू के दौरान, रैपर कंटेनर को मारता है।

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