--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="2.1">
+ <hashTree>
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Pazpar2" enabled="true">
+ <stringProp name="TestPlan.comments">pazpar2 test</stringProp>
+ <boolProp name="TestPlan.functional_mode">true</boolProp>
+ <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="TestPlan.user_define_classpath"></stringProp>
+ </TestPlan>
+ <hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="user session" enabled="true">
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">20</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">20</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1264411820000</longProp>
+ <longProp name="ThreadGroup.end_time">1264411820000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ </ThreadGroup>
+ <hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="init request" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="command" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">init</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">command</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+ <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+ <stringProp name="HTTPSampler.mimetype"></stringProp>
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ </HTTPSampler>
+ <hashTree>
+ <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="session extract" enabled="true">
+ <stringProp name="XPathExtractor.default"></stringProp>
+ <stringProp name="XPathExtractor.refname">sessionID</stringProp>
+ <stringProp name="XPathExtractor.xpathQuery">/init/session</stringProp>
+ <boolProp name="XPathExtractor.tolerant">false</boolProp>
+ <boolProp name="XPathExtractor.namespace">true</boolProp>
+ </XPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="search request" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="command" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">search</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">command</stringProp>
+ </elementProp>
+ <elementProp name="query" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">100</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">query</stringProp>
+ </elementProp>
+ <elementProp name="session" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${sessionID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">session</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+ <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+ <stringProp name="HTTPSampler.mimetype"></stringProp>
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ </HTTPSampler>
+ <hashTree/>
+ <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="show request" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="command" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">show</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">command</stringProp>
+ </elementProp>
+ <elementProp name="session" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${sessionID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">session</stringProp>
+ </elementProp>
+ <elementProp name="block" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">block</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
+ <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
+ <stringProp name="HTTPSampler.mimetype"></stringProp>
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ </HTTPSampler>
+ <hashTree/>
+ <TestAction guiclass="TestActionGui" testclass="TestAction" testname="pause" enabled="true">
+ <intProp name="ActionProcessor.action">1</intProp>
+ <intProp name="ActionProcessor.target">0</intProp>
+ <stringProp name="ActionProcessor.duration">5000</stringProp>
+ </TestAction>
+ <hashTree/>
+ <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="dump to a file" enabled="true">
+ <stringProp name="FileSaver.filename">response</stringProp>
+ <boolProp name="FileSaver.errorsonly">true</boolProp>
+ <boolProp name="FileSaver.skipautonumber">false</boolProp>
+ <boolProp name="FileSaver.skipsuffix">false</boolProp>
+ <boolProp name="FileSaver.successonly">false</boolProp>
+ </ResultSaver>
+ <hashTree/>
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="request settings" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="service" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">perf</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">service</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">/pazpar2/search.pz2</stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ </value>
+ </objProp>
+ <stringProp name="filename">results.jmeter</stringProp>
+ </ResultCollector>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ </hashTree>
+</jmeterTestPlan>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<service id="perf" xmlns="http://www.indexdata.com/pazpar2/1.0">
+ <timeout session="60" z3950_operation="30" z3950_session="180"/>
+
+ <settings target="*">
+ <set target="localhost:9999/db01" name="pz:name" value="db01"/>
+ <set target="localhost:9999/db02" name="pz:name" value="db02"/>
+ <set target="localhost:9999/db03" name="pz:name" value="db03"/>
+ <set target="localhost:9999/db04" name="pz:name" value="db04"/>
+ <set target="localhost:9999/db05" name="pz:name" value="db05"/>
+ <set target="localhost:9999/db06" name="pz:name" value="db06"/>
+ <set target="localhost:9999/db07" name="pz:name" value="db07"/>
+ <set target="localhost:9999/db08" name="pz:name" value="db08"/>
+ <set target="localhost:9999/db09" name="pz:name" value="db09"/>
+ <set target="localhost:9999/db10" name="pz:name" value="db10"/>
+
+ <set target="localhost:9999/db11" name="pz:name" value="db11"/>
+ <set target="localhost:9999/db12" name="pz:name" value="db12"/>
+ <set target="localhost:9999/db13" name="pz:name" value="db13"/>
+ <set target="localhost:9999/db14" name="pz:name" value="db14"/>
+ <set target="localhost:9999/db15" name="pz:name" value="db15"/>
+ <set target="localhost:9999/db16" name="pz:name" value="db16"/>
+ <set target="localhost:9999/db17" name="pz:name" value="db17"/>
+ <set target="localhost:9999/db18" name="pz:name" value="db18"/>
+
+ <!-- mapping for unqualified search -->
+ <set name="pz:cclmap:term" value="u=1016 t=l,r s=al"/>
+
+ <!-- field-specific mappings -->
+ <set name="pz:cclmap:au" value="u=1004 s=al"/>
+ <set name="pz:cclmap:ti" value="u=4 s=al"/>
+ <set name="pz:cclmap:su" value="u=21 s=al"/>
+ <set name="pz:cclmap:isbn" value="u=7"/>
+ <set name="pz:cclmap:issn" value="u=8"/>
+ <set name="pz:cclmap:date" value="u=30 r=r"/>
+
+ <!-- Retrieval settings -->
+
+ <set name="pz:requestsyntax" value="marc21"/>
+ <set name="pz:elements" value="F"/>
+
+ <!-- Result normalization settings -->
+
+ <set name="pz:nativesyntax" value="iso2709"/>
+ <set name="pz:xslt" value="marc21.xsl"/>
+ </settings>
+
+ <relevance>
+ <icu_chain id="relevance" locale="en">
+ <transform rule="[:Control:] Any-Remove"/>
+ <tokenize rule="l"/>
+ <transform rule="[[:WhiteSpace:][:Punctuation:]] Remove"/>
+ <casemap rule="l"/>
+ </icu_chain>
+ </relevance>
+
+ <sort>
+ <icu_chain id="sort" locale="en">
+ <transform rule="[[:Control:][:WhiteSpace:][:Punctuation:]] Remove"/>
+ <casemap rule="l"/>
+ </icu_chain>
+ </sort>
+
+ <mergekey>
+ <icu_chain id="mergekey" locale="en">
+ <tokenize rule="l"/>
+ <transform rule="[[:Control:][:WhiteSpace:][:Punctuation:]] Remove"/>
+ <casemap rule="l"/>
+ </icu_chain>
+ </mergekey>
+
+ <!-- we try to keep same order as in marc21.xsl -->
+ <metadata name="id" brief="yes"/>
+ <metadata name="lccn" merge="unique"/>
+ <metadata name="isbn"/>
+ <metadata name="issn"/>
+ <metadata name="tech-rep-nr"/>
+ <metadata name="author" brief="yes" termlist="yes" merge="unique"
+ rank="2" mergekey="optional"/>
+ <metadata name="author-title"/>
+ <metadata name="author-date"/>
+ <metadata name="corporate-name"/>
+ <metadata name="corporate-location"/>
+ <metadata name="corporate-date"/>
+ <metadata name="meeting-name"/>
+ <metadata name="meeting-location"/>
+ <metadata name="meeting-date"/>
+ <metadata name="date" brief="yes" sortkey="numeric" type="year"
+ merge="range" termlist="yes"/>
+ <metadata name="title" brief="yes" sortkey="skiparticle"
+ merge="longest" rank="6" mergekey="required"/>
+ <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
+ <metadata name="title-responsibility" brief="yes" merge="longest"/>
+ <metadata name="title-dates" brief="yes" merge="longest"/>
+ <metadata name="title-medium" brief="yes" merge="longest"/>
+ <metadata name="title-number-section" brief="yes" merge="longest"/>
+ <metadata name="medium" brief="yes" merge="no" mergekey="optional"/>
+ <metadata name="iii-id" brief="yes" merge="no"/>
+ <metadata name="edition"/>
+ <metadata name="publication-place"/>
+ <metadata name="publication-name"/>
+ <metadata name="publication-date"/>
+ <metadata name="physical-extent"/>
+ <metadata name="physical-format"/>
+ <metadata name="physical-dimensions"/>
+ <metadata name="physical-accomp"/>
+ <metadata name="physical-unittype"/>
+ <metadata name="physical-unitsize"/>
+ <metadata name="physical-specified"/>
+
+ <metadata name="series-title"/>
+
+ <metadata name="description" brief="yes" merge="unique" rank="3"/>
+ <metadata name="subject-long" rank="3"/>
+ <metadata name="subject" termlist="yes" rank="0"/>
+ <metadata name="snippet" brief="yes" merge="unique"/>
+ <metadata name="electronic-url" brief="yes" merge="no"/>
+ <metadata name="electronic-format-type" />
+ <metadata name="electronic-format-instruction" />
+ <metadata name="electronic-url" brief="yes" merge="no"/>
+ <metadata name="electronic-text" brief="yes" merge="no"/>
+ <metadata name="electronic-note"/>
+ <metadata name="citation"/>
+ <metadata name="holding"/>
+ <metadata name="fulltext"/>
+ <metadata name="locallocation" brief="yes"/>
+ <metadata name="callnumber" brief="yes"/>
+ <metadata name="publicnote" brief="yes"/>
+
+ <!-- journals -->
+ <metadata name="journal-title"/>
+ <metadata name="journal-subpart"/>
+ <metadata name="volume-number"/>
+ <metadata name="issue-date"/>
+ <metadata name="issue-number"/>
+
+ <metadata name="url_recipe" setting="postproc" brief="yes" merge="no"/>
+ <metadata name="open_url_resolver" setting="parameter" merge="no"/>
+ <metadata name="open-url" merge="longest"/>
+ <metadata name="use_url_proxy" setting="postproc" brief="yes" merge="no"/>
+
+ <metadata name="publisher"/>
+ <metadata name="available"/>
+ <metadata name="due"/>
+ <metadata name="thumburl" brief="yes" merge="unique"/>
+ <metadata name="score"/>
+</service>
+<!-- Keep this comment at the end of the file
+ Local variables:
+ mode: nxml
+ End:
+-->
+