2016-03-07 6 views
10

मुझे हर बार एक यादृच्छिक सकारात्मक पूर्णांक बनाने की आवश्यकता है और इसे गैटलिंग में जेसन बॉडी को भेजना है।गैटलिंग में जेसन बॉडी में यादृच्छिक मूल्य कैसे जोड़ें?

मैं एक यादृच्छिक सकारात्मक ineger बनाने के लिए नीचे दिए गए कोड का प्रयोग किया:

val r = new scala.util.Random; 
val OrderRef = r.nextInt(Integer.MAX_VALUE); 

लेकिन, मैं कैसे json शरीर में बेतरतीब ढंग से उत्पन्न मूल्य फ़ीड कर सकते हैं?

मैंने कोशिश की:

.exec(http("OrderCreation") 
.post("/abc/orders") 
.body(StringBody("""{ "orderReference": "${OrderRef}"}""").asJson) 

लेकिन, इस काम करने के लिए प्रतीत नहीं होता। कृपया कोई सुराग

धन्यवाद!

def orderRef() = Random.nextInt(Integer.MAX_VALUE) 

साइड टिप्पणी: स्काला प्रथा के अनुसार: नाम CamelCase,(), जबकि यह नए मूल्यों को उत्पन्न करता है

उत्तर

20

सब जो आप हर बार यादृच्छिक संख्या उत्पन्न करना चाहते हैं सबसे पहले, इस प्रकार OrderRef एक विधि, की तरह हो गया है अंत में ; के बिना।

तैयार विधि का उपयोग करने के लिए आप गैटलिंग ईएल स्ट्रिंग का उपयोग नहीं कर सकते हैं। सिंटेक्स बहुत सीमित है और मूल रूप से "${OrderRef}" गैटलिंग सत्र में OrderRef नाम के साथ चर के लिए खोज करता है।

.exec(
    http("OrderCreation") 
    .post("/abc/orders") 
    .body(StringBody(session => s"""{ "orderReference": "${orderRef()}" }""")).asJSON 
) 

यहाँ आप गुमनाम समारोह गैटलिंग Session ले रहे हैं और शरीर के रूप में String लौटने पैदा कर रहे:

सही तरीके के रूप में अभिव्यक्ति समारोह उपयोग करने के लिए है। स्ट्रिंग मानक स्कैला स्ट्रिंग इंटरपोलेशन तंत्र के माध्यम से रचित है और तैयार फ़ंक्शन orderRef() से पहले उपयोग करता है।

.body(StringBody(session => "{ \"orderReference\": " + orderRef() +" }")).asJSON 

जो बहुत प्राथमिकता नहीं दी जाती शैली जब स्काला का उपयोग कर:

बेशक आप के रूप में स्काला स्ट्रिंग प्रक्षेप को छोड़ सकते हैं।

गैटलिंग दस्तावेज़ों पर Request Body पर और विवरण देखें और Galting EL syntax पर और पढ़ें। स्थिति है अलग, पहले हम फीडर परिभाषित करते हैं, तो हम यह सत्र के लिए देते हैं और फिर गैटलिंग ईएल के माध्यम से अनुरोध शरीर में अपने मूल्य का उपयोग

// Define an infinite feeder which calculates random numbers 
val orderRefs = Iterator.continually(
    // Random number will be accessible in session under variable "OrderRef" 
    Map("OrderRef" -> Random.nextInt(Integer.MAX_VALUE)) 
) 

val scn = scenario("RandomJsonBody") 
    .feed(orderRefs) // attaching feeder to session 
    .exec(
    http("OrderCreation") 
    .post("/abc/orders") 
    // Accessing variable "OrderRef" from session 
    .body(StringBody("""{ "orderReference": "${OrderRef}" }""")).asJSON 
) 

यहाँ:

एक वैकल्पिक तरीका एक फीडर को परिभाषित करने के लिए है स्ट्रिंग। यह काम करता है जबकि प्रत्येक आभासी उपयोगकर्ता के लिए सत्र से जुड़ा होने से पहले फीडर मूल्य गैटर द्वारा फीडर से लिया जाता है। फीडर here के बारे में और देखें।

अनुशंसा: यदि आप परिदृश्य सरल है, तो पहले समाधान से शुरू करें। अगर यह फीडर के बारे में अधिक जटिल सोच लेता है।

आनंद लें

+0

आपको बहुत बहुत धन्यवाद ...आपने मुझे बहुत समय बचाया :) –

+0

आपका स्वागत है :) – Teliatko

+1

ऐसा करने का पहला "सही" तरीका मेरे लिए काम नहीं करता था। वैकल्पिक तरीके से काम किया। धन्यवाद। –

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