2016-04-14 52 views
1

我是Gatling和Scala的新手。如何使用Gatling 2.2.0調用/測試Java SOAP Web服務?我已經搜索谷歌和加特林的文件,但找不到任何鏈接對於如何使用Gatling調用SOAP Web服務2.2.0

代碼 VAL httpProtocol = HTTP .baseURL( 「http://PUNITP83267L:8081/WebServiceProject/services/MyService」) VAL headers_0 =地圖( 「接受編碼」 - >「壓縮,「deflate」, 「Content-Type」 - >「text/xml; charset = UTF-8」, 「SOAPAction」 - >「」, 「Content-Length」 - >「275」, 「Host」 >「PUNITP83267L:8081」, 「Connection」 - >「alive」, 「accept-language」 - >「en-US,en; q = 0.8」, 「user-agent」 - >「Mozilla/5.0 Windows NT 6.1; Win64; x64)AppleWebKit/537.36(KHTML,li柯壁虎)的Chrome/Safari瀏覽器49.0.2623.112/537.36" )

val scn = scenario("SOAPRecordedSimulation") 
     .exec(http("simple Soap Request") 
     .post("<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><greetMeResponse xmlns=\"http://ws.star.fs.infosys.com\"><greetMeReturn>Hello uMESH</greetMeReturn></greetMeResponse></soapenv:Body></soapenv:Envelope>\"\r\n") 
     .headers(headers_0)) 
    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 
} 
+0

是否有任何SOAP服務調用記錄器?使用SOAP UI? – UmeshPathak

回答

1

我不知道是否有記錄可用。但是,你可以更改您的腳本如下:

class testSOAP extends Simulation { 

val httpProtocol = http 
      .baseURL("http://PUNITP83267L:8081/WebServiceProject/services/") 

    val header = Map(
    "accept-encoding" -> "gzip, deflate", 
    "Content-Type" -> "text/xml;charset=UTF-8", 
    "SOAPAction" -> "", "Content-Length" -> "275", 
    "Host" -> "PUNITP83267L:8081", 
    "Connection" -> "alive", 
    "accept-language" -> "en-US,en;q=0.8", 
    "user-agent" -> "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36") 

    val scn = scenario("SOAPRecordedSimulation") 
      .exec(http("simple Soap Request") 
      .post("MyService") 
      .headers(header) 
      .body(StringBody("""<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body><greetMeResponse xmlns=\"http://ws.star.fs.infosys.com\"><greetMeReturn>Hello uMESH</greetMeReturn></greetMeResponse></soapenv:Body></soapenv:Envelope>\"\r\n"""))) 
     setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 
} 
+0

非常感謝黃金。文檔中提到了哪些地方?由於這是Java Web服務,因此我們在post中添加了MyService,並且URL被更改(從baseURL中刪除了MyService)。如果它是一個.NET Web服務呢?或者服務URL以?WSDL – UmeshPathak

+0

結尾我已經將MyService從基本URL中分離出來,就像編碼標準一樣。它與java或.NET無關。你也可以說'.post(「http:// PUNITP83267L:8081/WebServiceProject/services/MyService」)'並且去掉httpProtocol。 –

0

我認爲SAOP代碼必須在一個文件中,基本URL不包含URL上下文。它只是基本的URL(localhost:7001)。將url上下文放在post函數中。

下面是代碼:

package my.package 

import scala.concurrent.duration._ 

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 
import io.gatling.jdbc.Predef._ 

class MyClass extends Simulation { 

    val httpProtocol = http 
    .baseURL("http://127.0.0.1:7001") 
    .inferHtmlResources() 
    .acceptEncodingHeader("gzip,deflate") 
    .contentTypeHeader("text/xml;charset=UTF-8") 
    .userAgentHeader("Apache-HttpClient/4.1.1 (java 1.5)") 

    val headers_0 = Map("SOAPAction" -> """""""") 

    val uri1 = "http://127.0.0.1:7001/my-project/my-service" 

    val scn = scenario("ScenarioName") 
    .exec(http("request_0") 
     .post("/my-project/my-service") 
     .headers(headers_0) 
     .body(RawFileBody("MyService_0000_request.txt"))) 

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 
} 

「MyService_0000_request.txt」是機構文件夾一個文件,包含SOAP請求主體。