jmeter-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Gaywood" <richardgayw...@gmail.com>
Subject Twin problems with a SOAP load test
Date Tue, 28 Mar 2006 10:53:27 GMT
Hi list. Just when I thought I was getting to grips with JMeter, a client
threw me a curveball :o(

I'm trying to load test a third-party SOAP web service to confirm it can
cope that the traffic we're going to be putting down it. I have, from one of
the developers, a precise XML conversion with three samples -- and initial
request and two extra information requests -- which works fine in a telnet
session to port 80 on the server. So, my first instinct was to feed it into
a SOAP Sampler and go home earlier. Unfortunately, JMeter's SOAP parsing is
mangling the request on the way through and I think the third-party server
doesn't like it. It's some sort of XML namespace problem but I'm rather new
at this bit and I can't see what's wrong.

Here's what the developer gave me:
==================================================
POST /foo.asmx HTTP/1.1
Connection: Close
User-Agent: HostDriver26/2.6.1
Content-Type: text/xml
SOAPAction: http://foo.soap.action
Content-Length: 842
Host: foo

<Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns="
http://schemas.xmlsoap.org/soap/envelope/"><Body><foo xmlns="
http://foo.soap.action" /></Body></Envelope>
==================================================
(I've had to "foo" some bits out because it's commercially sensitive, but
hopefully you see the gist. The Content-Length is right in the original :o)

Note that this has some problems, like no XML declaration tag. I suspect the
fact the developers and clients are all Microsoft programmers is the root of
my problem. Anyway, I've cut and pasted this snippet, as appropriate, into a
Webservice(SOAP) Request sampler. I didn't configure through the WSDL but
manually input server name, path, SOAPAction and data. I've also turned off
Memory Cache and turned on Read SOAP response. The Data part of the Sampler
is the whole body of the request above (i.e. <Envelope ...>...</Envelope>).

Now here is what Jmeter sends, grabbed through an outgoing recording HTTP
proxy:
==================================================
POST /foo.asmx HTTP/1.0
Host: foo:80
Content-Type: text/xml; charset=utf-8
Content-Length: 917
SOAPAction: "http://foo.soap.action"

<?xml version='1.0' encoding='UTF-8'?>
<xmlns:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<xmlns:Body>
<foo xmlns="http://foo.soap.action" />
</xmlns:Body>
</xmlns:Envelope>
==================================================
JMeter has changed the xmlns declarations, and the server doesn't like it.
This is what I get back:
==================================================
HTTP/1.1 500 Internal Server Error.
Connection: close
Date: Tue, 28 Mar 2006 11:33:11 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Content-Length: 485

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>
      <faultstring>Server was unable to process request. --&gt; This is a
reserved namespace. Line 2, position 71.</faultstring>
      <detail />
    </soap:Fault>
  </soap:Body>
</soap:Envelope>
==================================================
Is there anyway to get the SOAP sampler working? Does anyone more
clueful/experienced than I have a suggestion?

Failing that, I thought I'd try the TCP sampler out. I wrote three TCP
Sampler requests to open port 80 on my client's server and push the raw text
the developer gave me down the port. That works fine... for one Sampler at a
time. As soon as more than one Sampler is in the Thread Group, the second
and all subsequent ones fail instantly (0 milliseconds sample time).

Looking at the debug log, it's failing because my SOAP call is closing the
HTTP connection after the invocation but the TCP Sampler is trying to reuse
the connection in the second Sampler call. The docs suggest that changing
the case of the server name will prevent this behaviour, but it doesn't; the
docs also suggest that this should cause a new connection to be reopened,
but that doesn't seem to work either. Is there anything else I can try
before I crack the source code out?

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message