Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 25 Jan 2010 15:20:19 +0000 (16:20 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 25 Jan 2010 15:20:19 +0000 (16:20 +0100)
perf/jmeter/pazpar2.jmx [new file with mode: 0644]
perf/ztest/README [new file with mode: 0644]
perf/ztest/perf.xml [new file with mode: 0644]

diff --git a/perf/jmeter/pazpar2.jmx b/perf/jmeter/pazpar2.jmx
new file mode 100644 (file)
index 0000000..dc53da0
--- /dev/null
@@ -0,0 +1,229 @@
+<?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>
diff --git a/perf/ztest/README b/perf/ztest/README
new file mode 100644 (file)
index 0000000..6df46ec
--- /dev/null
@@ -0,0 +1,5 @@
+Pazpar2 service for running against a local ztest. The ztest can be started with:
+
+ztest/yaz-ztest
+
+
diff --git a/perf/ztest/perf.xml b/perf/ztest/perf.xml
new file mode 100644 (file)
index 0000000..ecfd8e2
--- /dev/null
@@ -0,0 +1,153 @@
+<?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:
+-->
+