Re: [Grinder-use] xml example
Distributed load testing framework - Java, Jython, or Clojure scripts.
Brought to you by:
philipa
From: Philip A. <ph...@ma...> - 2011-05-20 06:15:14
|
The tutorial assumes that there are a set of pre-supplied XML files with file names ./CAAssets/1.xml, CAAssets/2.xml, ... Its not hard to create XML dynamically with Jython scripting. You uses its string manipulation operators to create the XML yourself, use the various Java libraries that are available for XML (JAXB, XMLBeans, etc.), or use the support available from the Python libraries. - Phil On 16/05/11 12:25, macke tronne wrote: > Hi, > I'am setting up a small project with a couple of different queries. I > found the tutorial very helpfull on The Grinder website. > http://grinder.sourceforge.net/g3/tutorial-perks.html > > In the script in this tutuirial we define a couple of different tests > that later on the read from the script. > > tests = { > "News01" : Test(1, "News 1 posting"), > "Sport01" : Test(2, "Sport 1 posting"), > "Sport02" : Test(3, "Sport 2 posting"), > "Trading01" : Test(4, "Trading 1 query"), > "LifeStyle01" : Test(5, "LifeStyle 1 posting"), > } > > However what I cant find in this tutorial is how to constuct the xml > file containing the query. Do anyone have an example on how it should > be constucted ? > > Full copy of the example found in the tutorial: > # Send an HTTP request to the server with XML request values > > import string > import random > from java.lang import String > from java.net import URLEncoder > > from net.grinder.script import Test > from net.grinder.plugin.http import HTTPRequest > from net.grinder.common import GrinderException > > tests = { > "News01" : Test(1, "News 1 posting"), > "Sport01" : Test(2, "Sport 1 posting"), > "Sport02" : Test(3, "Sport 2 posting"), > "Trading01" : Test(4, "Trading 1 query"), > "LifeStyle01" : Test(5, "LifeStyle 1 posting"), > } > > log = grinder.logger.output > out = grinder.logger.TERMINAL > > # Server Properties > > SERVER = "http://serverhost:7001" > URI = "/myServlet" > > class TestRunner: > def __call__(self): > > for idx in range(len(tests)): > > testId = random.choice(tests.keys()) > > log("Reading XML file %s " % testId, out) > > file = open("./CAAssets/"+testId+".xml", 'r') > fileStr = URLEncoder.encode(String(file.read())) > file.close() > > # Send the request to the server > requestString = "%s%s%s%s" % (SERVER, URI, "?xmldata=", fileStr) > requestString = string.join(requestString.split(), "") > > grinder.statistics.delayReports = 1 > request = tests[testId].wrap(HTTPRequest()) > > log("Sending request %s " % requestString, out) > result = request.GET(requestString) > > if string.find(result.getText(), "SUCCESS")< 1: > grinder.statistics.forLastTest.setSuccess(0) > writeToFile(result.getText(), testId) > > > # Write the response > def writeToFile(text, testId): > filename = grinder.getFilenameFactory().createFilename( > testId + "-page", "-%d.html" % grinder.runNumber) > > file = open(filename, "w") > print>> file, text > file.close() > = |