Migrtaion Gatling V2 => V3

Hello

Just migrate to V3 and get some problems to run my test SOAP SSL.

Currently my test are running correctly with V2 with exactly the same config :

Gatling.conf

eyStore {
  type = "pkcs12"      # Type of SSLContext's TrustManagers store
  file = "certificat/xxxxxxxxxxxxxxxx.p12"      # Location of SSLContext's TrustManagers store
  password = "password"  # Password for SSLContext's TrustManagers store
  #algorithm = "" # Algorithm used SSLContext's KeyManagers store

}

In V3 i add but also try without

s%% Cached client session: [Session-15, xxxxxxxxxxxxxxx_128_CBC_SHA256]
10:36:02.691 [DEBUG] i.g.h.c.i.HttpAppHandler - Write request WritableRequest{request=DefaultFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: PooledUnsafeDirectByteBuf(ridx: 0, widx: 1153, cap: 3459))
POST /ws/xxxxxxxxxxxxxxxx_V1-0 HTTP/1.1
SOAPAction: http://www.xxxxxx.fr/psc/0124/v1/xxxxxxxxxxxxxxxx
accept: */*
host: ws-xxxxxxxxxxxxxxxx
content-type: text/xml;charset=UTF-8
content-length: 1153, content=null}
gatling-http-1-15, WRITE: TLSv1.2 Application Data, length = 1377
10:36:02.696 [DEBUG] i.n.h.s.SslHandler - [id: 0x9668b9e0, L:/172.18.0.27:46282 - R:ws-xxxxxxxxxxxxxxxx/192.196.37.79:443] HANDSHAKEN: xxxxxxxxxxxxxxx_128_CBC_SHA256
10:36:02.702 [DEBUG] i.g.h.c.i.HttpAppHandler - Read msg='DefaultHttpResponse(decodeResult: success, version: HTTP/1.1)
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset="utf-8"
Content-Length: 304
Connection: close'
10:36:02.703 [DEBUG] i.g.h.c.i.HttpAppHandler - Read msg='DefaultLastHttpContent(data: PooledSlicedByteBuf(ridx: 0, widx: 304, cap: 304/304, unwrapped: PooledUnsafeDirectByteBuf(ridx: 304, widx: 304, cap: 373)), decoderResult: success)'
gatling-http-1-15, called closeOutbound()
gatling-http-1-15, closeOutboundInternal()
gatling-http-1-15, SEND TLSv1.2 ALERT:  warning, description = close_notify
gatling-http-1-15, WRITE: TLSv1.2 Alert, length = 64
10:36:02.706 [INFO ] i.g.h.e.r.DefaultStatsProcessor - Request 'Psc0124xxxxxxxxxxxxxxxx SOAP DMZ' failed for user 15: status.find.in(200,201,202,203,204,205,206,207,208,209,304), found 500
10:36:02.707 [DEBUG] i.g.h.e.r.DefaultStatsProcessor - 
> Request:
> Psc0124xxxxxxxxxxxxxxxx SOAP DMZ: KO status.find.in(200,201,202,203,204,205,206,207,208,209,304), found 500
> =========================
> Session:
> Session(Psc0124xxxxxxxxxxxxxxxx-DMZ-SOAP scenario,15,1583573758677,Map(gatling.http.ssl.sslContexts -> SslContexts(io.netty.handler.ssl.JdkSslContext@7bafb1c8,None), gatling.http.cache.dns -> io.gatling.http.cache.DnsCacheSupport$$anon$1@782589e, ebddab1e-0340-4f09-bd33-04fcc2e0390a -> 0),0,KO,List(ExitOnCompleteLoopBlock(ebddab1e-0340-4f09-bd33-04fcc2e0390a)),io.gatling.core.protocol.ProtocolComponentsRegistry$$Lambda$417/1086323658@59add2b7)
> =========================
> HTTP request:
> POST https://ws-xxxxxxxxxxxxxxxx/ws/xxxxxxxxxxxxxxxx_V1-0
> headers=
> SOAPAction: http://www.xxxxxx.fr/psc/0124/v1/xxxxxxxxxxxxxxxx
> accept: */*
> host: ws-xxxxxxxxxxxxxxxx
> content-type: text/xml;charset=UTF-8
> content-length: 1153
> stringBody=<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:acc="http://www.xxxxxx.fr/psc/0124/v1/xxxxxxxxxxxxxxxx"><soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-5A63F330378CCBB3D4156648194713911"><wsse:Username>xxxxx</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">G0S6Hcvr/uHG+vp+9v9iZQ==</wsse:Nonce><wsu:Created>2019-08-22T13:52:27.139Z</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><acc:xxxxxxxxxxxxxxxxRequest><acc:typeDemande>a</acc:typeDemande><acc:codeOffre>b</acc:codeOffre><acc:numeroBp>0123456789</acc:numeroBp><acc:numeroPdl>11111111111111</acc:numeroPdl></acc:xxxxxxxxxxxxxxxxRequest></soapenv:Body></soapenv:Envelope>
> =========================
> HTTP response:
> status=
> 500 Internal Server Error
> headers= 
> Date: Sat, 07 Mar 2020 09:36:02 GMT
> Content-Type: text/xml; charset="utf-8"
> Content-Length: 304
> Connection: close
> 
> body=
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
>    <SOAP-ENV:Body>
>        <SOAP-ENV:Fault>
>            <faultcode>SOAP-ENV:Server</faultcode>
>            <faultstring>Server Error - Error level 1</faultstring>
>        </SOAP-ENV:Fault>
>    </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
10:36:02.707 [DEBUG] i.g.c.a.Exit - End user #15
gatling-http-1-15, READ: TLSv1.2 Alert, length = 64
10:36:02.708 [INFO ] i.g.c.c.i.Injector - All users of scenario Psc0124xxxxxxxxxxxxxxxx-DMZ-SOAP scenario are stopped
gatling-http-1-15, RECV TLSv1.2 ALERT:  warning, close_notify
gatling-http-1-15, closeInboundInternal()
gatling-http-1-15, closeOutboundInternal()
10:36:02.708 [INFO ] i.g.c.c.i.Injector - Stopping
gatling-http-1-15, called closeOutbound()
gatling-http-1-15, closeOutboundInternal()
10:36:02.709 [INFO ] i.g.c.c.Controller - Injector has stopped, initiating graceful stop


I really don't understand such regression !!

Thanks for your help.

Impossible to tell as there’s no message in the response that would explain the 500 Internal Server Error.
Please investigate on the server side, typically look for error messages in the server logs.

So, it turns out your application parses HTTP header names in a case sensitive fashion.

The HTTP specification is very clear about this: HTTP header names are case insensitive.
From RFC7230:

Each header field consists of a **case-insensitive field name** followed by a colon (":"), optional leading whitespace, the field value, and optional trailing whitespace.