From 6ccc5cf06840d2db7d1e6bcb56a50d24f9ebfe46 Mon Sep 17 00:00:00 2001 From: Sebastian Bazley Date: Mon, 31 Mar 2008 01:45:15 +0000 Subject: [PATCH] Implement Bug 41921 for HTTP Samplers git-svn-id: https://svn.apache.org/repos/asf/jakarta/jmeter/trunk@642854 13f79535-47bb-0310-9956-ffa450edef68 --- .../screenshots/webtest/http-request.png | Bin 11680 -> 11819 bytes .../jmeter/resources/messages.properties | 1 + .../http/control/gui/HttpTestSampleGui.java | 16 +++- .../protocol/http/sampler/HTTPSampler.java | 20 +---- .../protocol/http/sampler/HTTPSampler2.java | 20 +---- .../http/sampler/HTTPSamplerBase.java | 73 ++++++++++++++++++ xdocs/changes.xml | 1 + .../screenshots/webtest/http-request.png | Bin 11680 -> 11819 bytes xdocs/usermanual/component_reference.xml | 7 +- 9 files changed, 98 insertions(+), 40 deletions(-) diff --git a/docs/images/screenshots/webtest/http-request.png b/docs/images/screenshots/webtest/http-request.png index 770933d3634ba45717b4d356119b186c50a3bf2f..489722def5ef86fe58cae9b65758fe436a7d2014 100644 GIT binary patch literal 11819 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 -1) { - if (first) { - res.latencyEnd(); - first = false; - } - w.write(readBuffer, 0, x); - } - in.close(); - w.flush(); - w.close(); - return w.toByteArray(); + return readResponse(res, in, contentLength); } /** diff --git a/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java b/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java index 373dd09eff..1e776c190c 100644 --- a/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java +++ b/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java @@ -830,25 +830,7 @@ public class HTTPSampler2 extends HTTPSamplerBase { if (responseHeader!= null && ENCODING_GZIP.equals(responseHeader.getValue())) { instream = new GZIPInputStream(instream); } - - //int contentLength = httpMethod.getResponseContentLength();Not visible ... - //TODO size ouststream according to actual content length - ByteArrayOutputStream outstream = new ByteArrayOutputStream(4*1024); - //contentLength > 0 ? contentLength : DEFAULT_INITIAL_BUFFER_SIZE); - byte[] buffer = new byte[4096]; - int len; - boolean first = true;// first response - while ((len = instream.read(buffer)) > 0) { - if (first) { // save the latency - res.latencyEnd(); - first = false; - } - outstream.write(buffer, 0, len); - } - - res.setResponseData(outstream.toByteArray()); - outstream.close(); - + res.setResponseData(readResponse(res, instream, (int) httpMethod.getResponseContentLength())); } res.sampleEnd(); diff --git a/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java b/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java index c109e7af8e..725a3c769c 100644 --- a/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java +++ b/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java @@ -19,12 +19,15 @@ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -153,6 +156,9 @@ public abstract class HTTPSamplerBase extends AbstractSampler public final static String MONITOR = "HTTPSampler.monitor"; // $NON-NLS-1$ + // Store MD5 hash instead of storing response + private final static String MD5 = "HTTPSampler.md5"; // $NON-NLS-1$ + /** A number to indicate that the port has not been set. */ public static final int UNSPECIFIED_PORT = 0; public static final String UNSPECIFIED_PORT_AS_STRING = "0"; // $NON-NLS-1$ @@ -440,6 +446,14 @@ public abstract class HTTPSamplerBase extends AbstractSampler return this.getPropertyAsString(IMPLEMENTATION); } + public boolean useMD5() { + return this.getPropertyAsBoolean(MD5, false); + } + + public void setMD5(boolean truth) { + this.setProperty(MD5, truth, false); + } + /** * Add an argument which has already been encoded */ @@ -1334,5 +1348,64 @@ public abstract class HTTPSamplerBase extends AbstractSampler } public void threadFinished(){ } + + /** + * Read response from the input stream, converting to MD5 digest if the useMD5 property is set. + * + * For the MD5 case, the result byte count is set to the size of the original response. + * + * @param sampleResult + * @param in input stream + * @param length expected input length or zero + * @return the response or the MD5 of the response + * @throws IOException + */ + public byte[] readResponse(SampleResult sampleResult, InputStream in, int length) throws IOException { + + byte[] readBuffer = getThreadContext().getReadBuffer(); + int bufferSize=32;// Enough for MD5 + + MessageDigest md=null; + boolean asMD5 = useMD5(); + if (asMD5) { + try { + md = MessageDigest.getInstance("MD5"); //$NON-NLS-1$ + } catch (NoSuchAlgorithmException e) { + log.error("Should not happen - could not find MD5 digest", e); + asMD5=false; + } + } else { + if (length <= 0) {// may also happen if long value > int.max + bufferSize = 4 * 1024; + } else { + bufferSize = length; + } + } + ByteArrayOutputStream w = new ByteArrayOutputStream(bufferSize); + int bytesRead = 0; + int totalBytes = 0; + boolean first = true; + while ((bytesRead = in.read(readBuffer)) > -1) { + if (first) { + sampleResult.latencyEnd(); + first = false; + } + if (asMD5 && md != null) { + md.update(readBuffer, 0 , bytesRead); + totalBytes += bytesRead; + } else { + w.write(readBuffer, 0, bytesRead); + } + } + in.close(); + w.flush(); + if (asMD5 && md != null) { + byte[] md5Result = md.digest(); + w.write(JOrphanUtils.baToHexString(md5Result).getBytes()); + sampleResult.setBytes(totalBytes); + } + w.close(); + return w.toByteArray(); + } } diff --git a/xdocs/changes.xml b/xdocs/changes.xml index b2931c7548..e3acd35884 100644 --- a/xdocs/changes.xml +++ b/xdocs/changes.xml @@ -131,6 +131,7 @@ As a special case, if the HTTP Sampler path starts with "http://" or "https://"
  • Bug 42204 - add thread group name to Aggregate and Summary reports
  • FTP Sampler sets latency = time to login
  • FTP Sampler sets a URL if it can
  • +
  • Bug 41921 - add option for samplers to store MD5 of response; done for HTTP Samplers.
  • Non-functional changes

    diff --git a/xdocs/images/screenshots/webtest/http-request.png b/xdocs/images/screenshots/webtest/http-request.png index 770933d3634ba45717b4d356119b186c50a3bf2f..489722def5ef86fe58cae9b65758fe436a7d2014 100644 GIT binary patch literal 11819 zcma)icT`jTn)L}05C~wSR|}$`RH*@i0wU4`X#!FN0qGh-CkcvRp(xV3A_BocREqQn zuN3LhYe4CtV~Bx}Oz_^hGk5NtZ@xdWvXYZ^PS#WQZ$EoKPj8s$bFvGv0|3Bja81`7 z0GLV`FO$PejBms?MpFSm95B$mY!N)RI%yF2Q+-IzcJH10nF<%x2X?3LkK3vVR$$%Y zTN@oVZp$EbFXK);uNV3te8TX^UuwYl&HaUi1x`RU4Rrzpv@z}|z_=Y409*k84FP}` zAOKJR0BsiF-(2LM%ZJBrQ>avx@TdNo^}8-<13!v`cnd2l=7WS`xm z{NIAPGF%Jt2ju=GtoU~URH==9r1ez*r#4I^Z3aVn0F321ePHB8Sy|Z!7a%$On0(3j z>bx$Kc6G;`xxzTh6zA{#{nY>_ZRf)M0QKaFzsP6AffaqqNHrsY@z)s7U}SKb|5?r< zjoh9d6tU`XC9O7=OePZu1pjZ_geIjZ#VRWstfIZ=%*|t>=YhJj;36=c-BH4xwZmf? zBB@Llx_u_Yz33butO9O>a9d!gd7>vhxOjB+kG?U)R^yhBKC}`vt`Gbm z{k7cqoeP*BT3186&6esjOJPlkphw$|T>{HaVlow58}z+0b?@QhP`|6Qd}WeWk&eGv zo%CD)M3vT91h;!UE&EnT2w!+2GF+-RP)qvAAn|F`fS`pwFq8&*8x4BXewjdmJbBrC z%GW)wOT$J^p+#RzF?LE2KqKw~*lV!)`TcKxl*WC6-QKH1ON&1!k^&&7v$8Zz^z!-0 zd9lnRJM;O?;9~hl^Kbwo4hZpsJvhM@D018cwqQtuzgL*$N&JXP?z9&&Bc1;?6+7+q z43N9)r!0nEC-0F$BUZ;FtG0Z#orTb;dsJ$8OBW+K-5aack)Y`(uD~lsmhsWy?@@eW z3Hp@rco16C6-e!v3sCo&GdpN1BQ=(34G_LugZ00+7kdA037RAiVGl6?Le3MChj5Q*HwmOv zF00vbO9^rV=tu!=MK+JCqlz%lfeGDw7k~z{903l8aQz>sG&Jop za%W+iLh;*on^|t0Nm?w4Q535f8nTrHaO3i5by!gp8wl9=D35mc)}mYPzg(JAf%%Z; zp{!ur+~^W^6%np0v#APr2J(rY53g9ug`pJGE=%!vAZ^{bv3ln1m)$JWUq9?FFlRjs z2qEen3>{X;W(_s-sMbbBxj~BW&X^$!n?m!kzRjnJ`CxS1?(S~J1BjFBz12Z}C|Z===K+Q=PtpGX;n>6dhKFK$#Y z0sK&w-k>Z-R-Z&K51r}*MOV?dS@|IV`W-njFSwDwA$H*q;83LDx@YMGsGec~_`l-# zND8;!#+9mZ}pI`(W2kBT*>&{=Vg2q|x|P6?2%( zR0eA7YM7=E?S3n;48QTzD&sM6ajXvK4>){(cz1pPvgQd9Pd=$^3dih3wL2k;n*wAj z5<~Z~Pm2q#52;;HTC<-Wl`W$cg)VgYhVBP>_jWuyFT0o%6nK^E?_Lf|69I>c_K3wVa@8qa=Ofh|I&Cb34{3ObQ>^3#&P z7<-U6PU?x(^2V+GJ_sEfV%yO`PtJV}ukAA>Ca|o7aS0zHJ;H2Mo<5EX)cX8ZaMeHh z%jGCWX_xdnA|3Jbrs zcp25ai^=S7!y#JPh-?q8JxIwpaLV;K?O(SCg;k28Codch>$Fr+S7(B)ZanG$_(vbs zzx{CAZB7Bbrr~6SSgN&<{%#6=BWI9+N<;=qD_7+}(meeTqmj(EUvE7sm!Zk&G;s8W zoVvN~nzIs23^8@yqTXMlmWS_mE#}l{!t`ZfikbJBoFpR1)Ko6>9!bG7X>O3b>vK)c zZ-#y~#d?pJV`CL23N|xE>s%f|e-y7X4Un0dVh-(Hv-8;A( z$wAwzLaQJbFxGvK&$lFKzW#09+5sApc#GR7eXFVoMsuwwbT5NYeA-kCE@{x_pe7!- z75%s`B?kzU~zT+>WPDo+6fSglYmEL>Vg^r zVOU=5kVpkMVA@6iPYSg(2mC)n@b#X+h(HhM->?(3j{vO%e*ggMJw2wx#z8UT`m@oQ zZJjvug4TsbGr-1=<%Rjz4lCr5>=E|mg~lfTakb|6GmbnUZ5G_Au8}Ok7!O+CH<-fn z7@ZT*AVAfF#lMkYcauh?Y;SEiwr)vXarf2vWvihiZ_5SXl!u8Gv#sHz8D?_2>`JB zwYvbY`+cxJS`%W3oUNw}oQ^?=PEWxAXeEUJF8cnk`$Oaa`f`2nehi))4RN}?tQEQ) zQXd*h>|Z>EecJam|G4D|Adr!Yj<7#SVBdpBPiX+G7JmQ^>r~I_P>bS|H|k7 zmF&r3x%Gh7`;7$duoV=IYQ_i@&`N5g@2{iv_X%_wc{5mbPaKTa+3P{k;8~CA?PUu4 z+YML+fDJl@M$>9?*4o=|g0%sGYk{@rquTf4YZK!2Kg)0>5_Z|rg`QJnhHnY=g6zDzZ+%QUGkwFL*-*FahgD$a^&86xEpKICC4CQ1 zHNc#6)2x;*KGp`bobAA#C!y?ou4Bdr)INMN<8T+n8Dg!(Ypjdky-vOr6QZrSdP)ug9tQ*u>c@ml|^$_a;S#T#Oi zH!#L*D!XG-fTCU!mFFcpe_w|yMbKR0kn~b!gWR&N-O~YyT)$BT!@E+Zn5HC^*Af-y zDjpcWf;g?%SQ&(0jQ#5-r>9cP91=UNh*I|E+v|IbT9rw0}2^sxUIN)Z++Aw0Fo9X!LZyUi!mI^%l)68JnP% zps^FDTqu21vtX6`V%+1 zu6spyKcyT}+cnM9c;qpfuzG&v z#f3Hi?IM4Mqt0hh1r%AV(cE~2F_ZaUV6+~JhiPM81`z(n;3pa{nE4rG?Ef{ip-DDN zeoUcW0zgu&y$rM+$f^4b0j_I^CiE{2kX0Hd8RLwPkg~rF82CfQ{xGuv>+5B&4gp^6fO-t8Z9Uz;vMDmM=GE=}O`5e= zH10HwR)#CgS^gCx^vw5CjT$hL)sEzz7HBIu8L3_hquc3`Lqj#~GpWknNjhV(5H#pz9i8 zW!IW6g4#p9l@q$gc`&l(1tq{b*><^Bdd{d1th<7>SHCv0%B@I0l*p#}@1{YS8PjcB z9DDhx(3xhC%kJ)AGX+~qA_akLxz`2_wB4n|tpO*(lwr&2AHur2_x-iJZ&hXxm`VF- zPfw3~@B5~JkhYx?Jm9a(08-UA34?2+KR5Yznp^;<5&`_&1GQ`uQAS8l$AeTg0lDM< z_Ne+F2@8%pkK*|}tEZLPq4(M^Ua_Q;=WH9GK1-O}4%T2)h!~Y{%H1km+UNx+pv_*d z$EXe=lGC#=qydA$B&HMbYCcEfG(Ht$O_8F* z_Sq@tw?q3~;_o(DCfi%R8XmOdnNKsv$kM;8YP;{hr`b&n86$3-F3Wa?W~pQQ-sOki z36UP4UQ((LnTk>JDC-1RJaQ5munWJBu^EO?lmbcv+uyk}{;Yb}OFkK~XMwkzt$fD< z#cg4!J$_dmps&{bFMavudOJJLC?ML(D)suxa>7}oJ*#X`((oSc!W#qoH0_F^BWD9< zZh4ogA=nl7Ngg8Xe6kZC1_EzBmz^ldti0H9VtSg^TY~AIy*Gh_xY%U3pD=~;&)7YaSH~=>{a@j z`s59tt^4y-Sc)^Wj`k&I&WqG~J-*I*_my9TBXlZ_Te29-?KSXb^Q@!C%#$Vs_eyG# zao9~a&cR}}JQZiLJNO@uf?PHtV!jwYMj$LhR?$tJ_OzRWH3kpzx4!O)n*A=n?Cy2z zqarvy$S30M(2=&pWalnsvwP6Ag4K7coE~Qsy%IAq~@z#F1{{$j#L@j(K=Av#iBetELxH(x{ zbsMH+{ng1B_iN2q&k*xzM3snkZ5PnK=4xG4gP3>cxDprEMxaki1I8+fNe30|F+Nk zN2&KEveho?2F@nXCV3nq#Dv#RT~={_cw;-TiCKk=X~lrtp|nI%b3K%&meI0cn(d=wC{rlZ+k4 zT_IjdS)+63;g8wu1Q{S*slYP5`gh#;SE}{@E4n?Q+&Hw-NeTC*krx)+XE7OG9@y~N zU47B{Gnu|3E)nP%hH6&7gbO!^j;gsYgoGQInOe3nINIYTlwxRC-;5-SWs28 zNz7HOu#R}HZkt$qs_R0I)U2~5lT|kySb?7rkF~Mn5N$zQ2^)W{>%K^%N<$>OzHE0# zTw68uI;0irLoqI#Hz+Xf3$e{yGt%9H?~IjDi!Z>uC|_?rhO_`q;B1=PI`%EIX;-f_ zTbk6zZovo3CtMpMQ;O$1gUB4x_^7$l+zb*revN7BSbp!#$_+|bU`d-+Bnb7N}TGJL4g3p|`6~~5clkx$Q_e@fCkA*=G zvgr%Of76J9cL?D^-)74N_?3IcrNo%mC$_B?^?fflx3}4eC%WWX>Q_< zbWNp*GRwxt&==Q%=3ltoS~dAjv73fp#yrDHj+!E(&67hk_a&RQlRY!kp__ehb)uZk zj8=fvSA(5uhqt3`vb||SV4L+3?O*HjwLO`~o7LjvaeZSAKV_ybn|QQ~6`O7^gklsO zKF2)v;=cvUFR_h=On(*0x8gAvOq&nDiq=*iI?)tZyEhZknbq3_&lV8wntj+mRNqi? zk+5LY$7z!camqEo;{=^(``9PX)Dt%NusDhkz}yoEj< zE5#Tpt!x`DPr9Ldq3gIBsy-gm-69K3HnhF$a|)x5sR7$7)GlXESg?*jy1HIu zFUT-vp1v2gKu_n7bl-E(KvPS7%OJENCUm=`8!#z6NV`{bL`ln#1;PTs`k4l{KOk&Z z7_?L(g5Xa04vH7hU=$BdokAo3+#K=!?br^oGG*Gi?P+Mr)X>;i`(otQoJEN<*>wE< z4xsW1S@nmAhk6(1V+(`2^X|G@=2UzT z%|BKh*-(u4Z3PtcwcJ=n{+iPypF(dm7C`cp#?+ixZ0K{Ed0awj=$|9sNLtG>+V3ce z$M88a^Nahma1oOT%>1K`#u$0@F7Lf!9?|da;X8CeNH}yO zb6w#>(4gN_X;ur;OGa}*9fK8#2|HplKrSd0KOT9YK`3I7$55@Z^P_7ZE)*A@p{{0E z(lY5#E&NFrU@EQq?>*BR?F#tDKX{>R_9q38yCG>Y}G86b48A&x9`SIgpg3tAU;%P`*s{?K-S2M^q^8HIXFlS!Y!ZX)ku&p;PziEGXG zuORt50##X#XjTsNDLV@HR%47_-qXBgv;T^Qn9QtW!3^SlS~yj?0O_a26v5styP4O`x^OeLck$6Af2(n^n&%(7V!NTG``dm1Eo-62?Bzr?YDt5C~F zQ?$s65$|?+^n6Kg^Z7nr96Z`6e~FX$Uh?F%!I{NEY~!Hkk-gz*hHF#^e>dL|?N?<- z`l(+dyOK#}%EOrc*xuf*rcuj&bnbdio)(@~)P|{;JzjEa%el{(=eIDqf8{D2QpY<- z!&sddblt>`-bEJ?n`R)NtnIw`-%8s>M*%%4835o;N(Ale(9fv?s^b4v)cj|x{2!e9 zUoQ#|x8lAsxco;j8hrO}a(n~|B@G2shxqY7H*fd@xO+MOG)&=<;pdq6-HsEUGK3Ag ziB);l!)<_5pfuff<>#hqw#iItP~f)D)BuP{0kAoB7#m2)ncTO)5%dQ-g~fZ@;s4G` zbFvE;I+7Bom0JQsB9Z2~m0HhC?2$2wwYM8edITI0;tY!@uPV2(Day%60mKhRyKn*; zI!lzY8kM@HQj`?8$6AQuo0z@P-Ex}W%n!z|Rd3k7$o-tPs;#uU#{VCrilH^4EcsVWkzIk_1ijXp-*6j5j0^v;!PJ9*Oy6&j{c;k-$?d+A@4AHbmod3U6od2{E_h!g|)92Qo_iHCtlo_-GTzw!IE$!`% z`+^k!)d_y|B#ZL5e;YT(QU0I0Hjd>u{p|FAQJ`blNet+XG%4g#*WPZ!W{O zh_bn#wm)A@S)PV}pk4)y7_l5->6<&P4~N6O)iaL#;+#2MRqJ1D@{ta#ghRx6V)I27 zJya zvHXWh_$uKcV&Gm&lX_`6lTkTg)Yf0yTJ@7;ALOi(=_TIE_=50mhp=Q=N;oJ*HYX#k z3=CXY53T14n;dRUGghYWO@xo9&5*x`o_8%04Lz zz?&J*@WOCRW-lc&X5Omle3{6VCsTLR0`t4z3(^1pRi0Z14SabptI-kA&p~#jyhMY- zcw~}8Uz}Yolql$g03V3Sw;i@Hx=U_?wYU$Se5QbN}3ldA<<}4lzW~zogYd1>vXA6 z`-Kb+K2~utjFo6+iu~w0=n~=Tde<)mp2n~=xBzLhm_jKw)!_1sIlf5D1jh1XS5(Pv zQ4UrKHIp@Gn5?^46E>OkJ(e&C=`+n28~n*SNN|=q;wvv4d^pI|3M3bTXLr$;$`}aI z;ZJBf<1#1m6P0q|M{c9-+;^$2<;HAyv|+)JZ}*(lcFV+yLR)b)8W^e_<1X89-=eAwlt zrbHd7Zfk)P=3xFyVg~h&RQT|IaBGCG#Qn);I^fkNWa}vA@ffq=u+vsl9?M4+#ZNdk zpQFm$p)J)dx}YUGxE4PyG>0$u9Rh~(;+2Ynb14|AS7YkuUVd%q$Zv1;oH0tPyW3{U zJieKVNhk~cVQ8acFN1Wx1Mq1clMvzNHwMJ3+5sts3uIV(pFX0Jvr! zRA-q;IvzfB@F_k`L!As{Y@TKy+HfijK{m?JF`JwZj?4XhF{Mv&mK0CLF(`4nZ z=K|bSLOXL}=y9dhJPECS0rC5&nd^Y+9hMv43)guzQbKI}nnc!WdmdGN%$Y4#gWOPf z;WQ#Ptu26`W+gieN{ej2b*7lhqH^w!8K?e*;HHD$_g?A&C28Cosxqt@Q6azUI+-%T zAoEn&CGdE!S!(={YAgw3NfS+NhGb|g5;2VE-D7<#EPUwi!KqD!fnb#6KkNd z;CFA!@Co35h0{6FN?{tJh5h%a!xa+@Iq+h-=V#l4VUO{E1E%5+Ij+GL{C5`6bbgRP z5~GY}ERSZuufnpM_xASI*VobMiX8L9qh8N}ja`V-mEzA1#$~Ub-p*m05kpHDhw$Y+ z>vcv&jCf~D-z%M&=%w6K)fo{fqho1Bml!7Lfc;zcSrRH!u}Zmbx4eSZ`4PaCLYyRW zUe~L+-AE9=B$*P>O0=Qvl}Vi$Mh%GRg>8@uoyEC_Z#7&1-b;f$xVqh0mbX7W&L&Yq zZRH!_#ICOk4Vfy%KUnNtNG*v8|8(*q`ZqkNsokTx| zKVLjdPs_d+5u|=VL3#ZczHlTjP5uK+e9VFtQ&|48RI!*Uj& zh3GILi@EDzTk~K}E&EBWbNafP*y(3@ksr_Mif7IafV1V+yvo2D4>ZX%nC5=FM!UR`)8`SgZZTf zn9{)b8HGP@M-~6PbqD`nD+_<$va}@{Z`s$o{+KDww z?~~u?cRhlF#>}g>J4q@+a5|WPtwTfRg(mS zeIa=i{|UR5?g)73FSl?cXS!PJ%0ioQ2N)QMBqs(3{xLL-;ut$J9Ot-4kv#lB{Gv;I z^71|y|4ra;ZS;StW+@8G^+44)7M{~F_a@0%!u}IG?>mME!kCB^bF~gU5DS{Evy*S> zEoP2>SHQBXd-f}~B((`?CDm$~BGixi~O#I@p3+5e~ICP=92eFYBSleaE26PPU zAckfxIz$s;Kl{vYtD?GA+O-tX&cim+))=~7vhA;axBRT-V7)#6Vk2yZ&qm0zotf*Q z8+{Sd>$|D4Q{)T3GWa!@2fUk=`!YnaLX-%ihLVf<)XTnt_4bI6DLE$si;&Ug*4kIpxwv>}tI5Ln*NbJu1f^ zSwkP_oHlfe)W{2WsvHhAm(bX{I^*@KaVWBU%}2kmv+tdrp_byC8|K|*SRU}!*MZR8 zwedTqSmQaD_{u!%7df*JFWCEUaUi#d{_S5mdah``z-gBoD&=`KF+O=KZr`Rs&1*1u08JMjUk#s?t2^QN z{iMx<&BRYfxSn6U$<*N;B%wCJYk0Ooh{EBsG4q~+>?#kz|5jdo%yZAQ;?8V?@swHC z1ng7g%|{#&8=s;idO`|@2z7*Q%#EY<=WQCIo4$te%%k^|=5!SLjz0M^K3P?fY_#Be z!l5ljv#(yTh7s54XO|i#Z49u7b6Xtq=1qC}lwW}$Tv^x!nyrN0gATQt>FLpE%f}6p zpGg*;w2|gaqvEI8&l5B_ns=&ab(2h2EQ?cOrPK9MF_wu9Un{h^5!74HmH(=jnW3`p zO+5@Zuw1gky&BkVkSuu{mw{<9aga8@A8O(4+$_s^do( z(82%vHku*7?I-I++^|#)r^w6j(m*djvFvg^FK*HMviP$VV~wy+Da?B^T8`c(tL~U{ zTc}~8cf8Ie6*KdJ>=LO_`c~q5^>2(okO*B``|!|xKTW%RvtJ4Gf^Wo>s(4BjCvrO> z#U?1yz54BRop>3WkBUH<(i|M<0*-SkW1k|>PfffprlpTm{}!HUte9-j>#OcoU%LwS zciSICDVBU&LA94gf7l?GxdoTJi<-gZTogM@OwTOA!k@dD^xC?6>C9Zs4@(^NZ9kbX zDu7;%1L;CvcG>X6+12mP^__DN9b-KMO3%43#Zu@-yzmS}ykL(iJ0g0!ayW-?$3t@c z_dBbREYWQDCe0;#%Y|;hTNa$=9~N$4=W$nUH2>iDIFcG<%?lXVHuG_ujLY`8&IuqbN_Squ- z<5nktgC^sAE|yv5E!C9p8Yrw2zq-157MQL-n&F_VNd;(W0RRI70DwS%urL77&;TeD z0C4=}$>Z4)#Xk-X4#?2`#BZ|LJy{d{GDOB{q?rYGv^J+4k7JF-_p>O|Y>f|Y4 z)RkS^Sh5+dnzb|TD-s^zCy!NB2g(DqWHDK2k;t;rfA? zabYIjfij6%)Vc%W6Z6g~pij5l_L6pOq4b2I*p$!(U}%6n20WH_Ksi!!F65n&sh#=Oy;d|P5L7)1`L zs(Sc|?Hnxt(hgbB&S5;ObE1v8ATr+ZD$N5&FS#kCXMSxl*fkIB_vHfO z5!#U{N(c4jYx{KjmrD*y;b{MN+9R3$ED)nt0-#ZCt-j$KuVT0(q+Rq9luM~rO8l9h zabCQ$M>zG8aKHeRFQJ4Bck?H9r*^%cCY`V`C+B|o^2Jv0G$TN&+jzo|a*B@3j(JtP zRh32$QD-8{(Nqcp2PBc_DvT+;x{~XzrBeRf)vAn@lLzEh6dB6QRaMn|`%sV*IO9o5 zB+cUHd{oj_4)$lUjbt+^ww95gprDDu{@&hR;@CvaOAr8R4f18DY!-BUs*SXD|3t+F zmStf+0|A`v{}xuLkVf^-!Gdh`m-tW%zV$Zn!9|gOMqt1> z`H0M;lv#3P)o!h&b@0C(}WYB!@9(@2+l%ufSL)rcKt%8q+w@p zsc9c(wA7eM?r9SUxLX!!FJj!=ni>1z@l`5d9C>Tzc{|c~N_z(Yx(T`*lL>ZJjJD0C zudeWJ6rcfMo{?cpP8&1OWAd&Dn(16Y$dKK20s$;r_e+&zl5k7D4Yp;7DN`9ms%bZ5 zaPaoXydZ?-C*Yt`?9K%R2Wzwhk2EszQfw5MKloXW3gyDiAZV{70`%c{{ts{x4&YN9 z|Aj^Yem)ye714u7b04kx2eO^0fZhRJj*sE`yg~qAy(Cg+IlS5o7GgpIWN1!pFw{zW z)2pGtci8RhwLs}fcEF5}+-Koo+ZX)ha$HK&%C&L6RRuaotbc)R$)fjxH%XRDEAUtLarU3ob z9S#=qwd)wxO0d7YQSHHu({2kDgcdMcyKiA&E1lFO_X22v4dJK%ZppuZ?vssqj*0%g zAQ%TqN=Yz|>DwjEEUHk|gZ+IU4%7i5gWJ(M)d(J&z5=!K}BGtg`6p%HWW#&t|pIj0t z%>QF?6OCXS;Og^R%b_b z8>_2wY0LrZ>CZfW@ECS>U1_wz`zFk|h4%X~U7!vvFv>h`bnYdzX+*hxo>R5GFt%A` zrwoRVPZ@`r$@%|54`!w;;p8w)XrOl%|0K!f;=*qp_nf7nF-9Xz#I#y9yxl4O)Dyog zQx?b&r+=0H#64FmOAUYy!R9p+16=Qh50PUW+bgeC9bbN`$Y)xIO5(uwSIR3 z8v{?j82&kZtyw0k#3%oXo?iRzG8VY$L#vdJ1+S8xDhfNZUrJ)L!r@lE2rgU?4Vc-! zOZ4Rco>htt`E>!Kg1cfzI5S}j5z67EvVBGmtc>YBgy(QUd+EU}$fzDLpfgt|CkcqS(`b8bWJYLlIC@pq%~-?~VBpCmkFT(tLDu zd>ni1rBThAl3beo%AOYObvGmzC{IOY8d)IqXLMi=w>z3o5=WY_jAvr#9-gA0$oOz+ zAqFl!CY0^{UKWweb3A;5l6|Lzl5nCa>m+;`#(+A@9V)T>QT?TMmA`SfAU!ZzH@I|r zqiqJg|3}RU>r2}#3-$37nSv-rCer?K$-FSo(mvdr>fIvs%rodU8JdA^GF9DkiMp0e z(B*k8uxO@41*`!pnh}}n+d&o&(9i|b#$v&x!wDo=Y84B19 z2|3iD|0Ru<~kwME_(WyB$N?;S}cCA5Zzwu3|T|BS!n0FRf#4 zTsWiD8Uupo&8bIUf8ZiZNXxqVDCgB|j|&^22b~-BA82 z&iww$l_izaFViPt9x~F9X_?(sF}*^=`&drAwptwbSz{wzLs3-Oj7vs}HyBOV6=xZfCx?`jJ_gD~r!e zV3X2et}kd@)1lg)i_4Xngne;U6s}CVGxU)mP!hrD=VuNBx90f#1_`LXk@bg#tvMXx zca56B?Z+**WVkwh$3BZGFX)=@un+;-zmBn9fZjBU-;+qeMHRjCUc-2+nhc)VqO zXI>_v=Eei=)5V>Y?)EXsL3|!edb_$p@*(LZNn0412aGkZ(L^yTzYks+<#mGQs zXVO2tS9$XDfcI{ApH6Zt2wJFz8^(fbggve8#=z*? zt5V#1^`jg619_(nz<)rH^xe-1B;4@+MxAT>thBAim$^9~+w64|8{=N#Li&&p%D-Nh#XK&qU9or%Z61&)F^B!S(ye6$1ce-3?GuG@+#Q}bt_-l_eneg zKOTJW>gd%)<_u^GJGrdk44>%BJEuy{Qt2C_D$eQ!=`}(m1z$_)Moid05bvesO&?P>gVPa32W;Xcc-9gb;CK*1~ zAj*=|`z+Z^O+NOm@#!e%(GcH!&BHEXUTPkPP-3UnBG6(HShDo3*+x2l&}|X%d!AB8 zFA>H7T=>b}zxU;hl$N!sH}L!_bgybe+QaZ9zX`rH5Q?6W;UAgoXTl2Do7A1&1X@(0 z|D@)BT^!TU04*n}8~uNPSI?^m#X0Bo8Ouj+V+`$1Ne*WM9<1Ez^jc%Ly6z|m}^&2LvJP?apz5h|~ zLB$2w6QZuX9G~wWT*j4VXH1u!uW#7SQMpV-*Y6wY+ZfO2nJTYdl`fpGynm^TNU}Fk zHk?@(g0O9#xzp3UErp0ALV^c6=XvWUtt=R~w&{O&KNO;6Z z@gTbyybo`uv+7_~`USsabr+tCpQ7{nw8?6ll~8ZCsocPk(QmS`$J7zh|8+&$D?*%h zX_@a`44O&%E;KE{n1ePD^4NCQy4$fLSQm0&Xu4a|36Msq9e23CS-Sk%mv>jf8< zIOpb+F0e748;>a{)eqUOENuL)$a$V!JsF!6VqC$IKt1=#`jHci`wmw0?roI>=4#?T z1}(PYbrTO=gHd5%)%|=oi&x{qw;PdP^p_tb7a?KHld5Fhb8}yoIkRKy#217yVXj!W z?U+iR=ky50Vvpu*0(!#b)kyr-=ai7h+K;;6DO=~-6&a{Lo-_NpXpEyfY|qxpqJAv7 zuE6uPdW9MmdNIRC79)L<^@kCDMk=0~yyW)4@?L07l3B9>!3TqGlU&8su@Zx=`X*nl zp#7xN0}tA|qzL6!)0-*{p7Ke1r2}Xv8+%kb{@Xmpzi`7I-YnoOEInK6*Lp*3q)=j+nrQKI{77>DYC`&YRJi9yAo!>SDyUC|7 z7`1tAIa+L6=50M1jh7_FwoVB7t3BKbloV)Ee9S20r|6l@2el?4c;LNmM{-4cr)kf~ za3$`AW5<0o=QD=j*6THB{r z3z}g|O6#IKFP}+yeiOpYMTkdUR=L^JytMXv$~C8?S7}NP%owIJ;;o#_F3>lCuf{iNjL9vbbDB z<03hgM(~{0QO^Ov)TXxk@}Wj<6QS0*{qA{of2Z0l>_{<1?|EmEPmCDa3(^pbo68Ri zMj`|GM<+4s5%UUh(za8?vOMF2FL74#>VcX<&u))Q%WTAo)IogE_p=V4o2^)fMoa45 z-X=W(D<_xF3R38JzB-L<$gj%!FA~T9ha>*1$%j&PTXf+eA<&b9qa*dl=44Sl=8U?- zD2y_$FbBz^nryk zi7&827kjKt2LfHTjq$7TP3w1|>ua?_dgBh~VH8$r8wz zIvG3OSEFw3kGwyeU^SVLC;6f)FY3-DUsAjU+gRcHhhj~SIRb|5%AyGB$d9pl90sO^ zTZL-Nwc2o#v%zN1uP2fs-by;vU(LKi-5n4VM$5oppCs36WRSFF;~(zPP>kyt%(A{k zSRmwu5FATjtlKUG~rSQw@JDKv0AaLLDA;*EGh&th=wGAL?=6#0NgP#;gK6 z#hNFvPpdy$-;>Gv)D=R1_{B0K(Yw11u%2TNFk?$4wP?eF|X7jr>np7d1t9(ls5Vq3RBlJ9W%H z{(+jFCy{U!^XGmhN$J8*Gt*|mz2mI{IyYczlo$HD zc-)G8FJro)0)B|FY7^{rd$^=FSOcn(3H06XiZ>E!IMs-oPCxsmql6ma-{DgXd9hNV zH#tT}5~*{!v&h6ah^p9|NKe*}hdgOj*a*6v;tzh)P`L>kv-C}?DRn4BM`fs2y@cu9 zexwVHc;}S*=`xurBs>(t-kOJCtIQaefkRDiT6}+Mj}JV4ni^s1ci%(97iq0A`y_3r zORCuBW1CG1WJraEW(O*Jt^U2_V0FIaaX>k9tM(|uMGLOLoL{pZeYU}z8T7SL*?ZA} zgs%5q)W2+~wN@_IT6Z&ZHD17JS8TjYRxBFZ@gy8koEjsJtM~Otl@cCxpmX23;^r*U zi(6aXj9&FfWtEsPOm%CgdzHwAS^SMB#gCa)&%n=LWV%iI>9E9PR&#WkT+$b7nMILN zr<)ua>|v~F*NDD=8C_c#aCnqiVwJJ20^{%IXqE5ekvc#!D>HVvpktj4$ z_De^HfiZ4(WWD-XP7L3DF^a@)IXAMm1)qejvGCQS8pU1HIDd&`g}PLo#2hjp z^-M>(AOqEbd0*v7+ofDjvfdNYqh=r0<#<$F8_5tRPB>qt2wE1?SnQ%`|2e&}A`G+& zPTxpzc84}E7W&k-Cmw61XW%GCSye@xLH4&?U7jv!68y367$;3QZ z!;yia3Cj)lVdYJS$FC({klRq zfpnAwXZVPl%1$)ij#-uY1KpYb@&%`uD8Xc~`PJ{ZrK+mV@wKo&I;pog!t5^{^=;K( zY&9a$4!kfD%yTNc3Z%pLJ#y{v})=w$dOH$*;*IKrH{7f61%*5zj zRxg=3`0N;|q%z_t)*g3#pVi2k{S>*wQEj)MZu0p|IF^wqH{btrRn2au!|4f;Gk!-injm}RCprj8R z9WOvbLsMQGbHcO(#|pAVZgyz1Z_Lh={ygj*sp3{O4%5iMd_V3e&|_9*7`htqpV0pE zvHI4kbnD`Fc6R1J?d$U@z3)g+$m~2!XoldsA*`{-e*4z!}iP>*JNSZ zl@mKOM-I=JdjmTTEFe!wz2|V|O0HEtCcR0){c&_N2?S=wp|;R5rO#K)#=I3mVe;3 z6fgTjK{QBArdh*jHP~3KFsJvAeMwsTGLZKD{8GEu)mG@X!m1yweZ0u8a4U_%Do;(I zcUZU2Qqd(9Pnbv4v!+SAxC-gwIa8$EzK>NiMc39AExjw1doPpEUu`#syut2?fGjQe z7+kMDx&T)K0=}W9ed_frf{*qsOHb>H4wdrig1Lqj33uG&XP-y-JfO%C##Skw!#rdo zWS6$JB{69oRGfkJa8PCkyeZ8^w}~PgF|WAtXw_@W{8?q5I3YpUIyaX*rjrwRbjS0E z*T8eUPdY3mIkUWUb*jr+&pD~YaUqG>);Y!S;+QGr%t8vemH6g_l4h)ugd z^-|uw{8M)IqNE+J=+Q#o(o$`nIRYXl!%I*esO9FUrq8)XUQX$n7u`dKJlGpVdpm42 zIBV%TQQj&+gGvNZFqmNnGhSA=*g`P11Y<{Tzo00*yfw)t51ys5$^@ThSi6}wg#Xzg zxx8n8e#K}C0Ji>HUs)T!di;w4{Qy+`)C3d0V>|S;%t#axbd9!L6;ImoR(c;t2%Nu# zB_&h%alqY$jryXMkg>>xGqInA|Gk^{43LQ=>~WE^ zAJ(Y!od8N3jBhV0^y}W{52c{o@`4Mjs5vA!n4ccy#Z+U-#ibTFSJU|{D#c7vrINf` zv?uY~%K@vr;*6rak8Clk+wm|z;%}Y7sYeo0x}lrn zrDZAZn4)#*V!3XfYut0RRI-k}+C${D5}Pq@v-+mgyEn+ik;2QwzLradc1m}3R}F`t zH=t717OX{uplza%*>zdp&*rx)kT0V}3Y0g&lZ?8(ZSlz-M?c_TkL89*pd}iNUzDS9 zv*gZuk1kQv@cluSj%>Qfd)IXj;`aoO4t4_%H)e1Hp0d%;gOfRiZI+O0Q3*pTD{K6r zxgpc$dpRBJTFuMPKc)m4$S>k*g7M{afP&a1^#21SL%fY31 zfw!dLexP`Hc6Rm-%Am&7qHwj^Fs1002Q0)8N$&rH(oOg`usz(~euqI~ZF?802H7)j zFHj`uUqExX&Y|@oRxq^a3FYV|*?&jq!`U7YVH|q^u>CbajfvsztEn}>b7~8&&d)X& z;xdy+nI9On5oq``2cZHfLf+1fuc1oCPEnU%%w3&ir>|pYA&#o|R{Qy?FAVzcZQ0FC zb=A`u(@)3F?yXKnp1Q_I)TLP(ra>e6rA99yCN&*GyS|^gDFslP|t@P zDF^*l58Ah_$QpFobS-(8l_D}fgz+XA51T1-OYFjihZC+85s6YCI};ER6;{ z$+B|lXXcfKvrJ>hiY@4*Mtc2rvR-eLHsq!3R8gVGsV*$qJ!{ojtRut0=arz>E9Mo> zvO$jWzSQ*0-PaU&2((bs(aecud0RE9zn4zS<***gf9LURVeHNFeR#;lzM6vN%$Q{n z$k$BpaL|P#@m5?jyDS4WW2DAs05#k=GQ{+YnAc3bk2jfVeb?&(Rizniii?Z0emptU zY4P2ILKZ160JIEfsy@V*;z>4T1WLkekrs&S_%vhB145xtE-rmyEgS#oHlH#-o~%i# z0WMQN!Mxh$BwE9p zjk(^(Y^|a9`dmZCj|#is6)qYLdRAt3cZX&06}Hpf@1$mY{GYyhdPOD$(3^bWt`u1fR#rb zjtmXKaI@zM4f+DHt|R%1yEz)qQc`T?DSNujAs@%J==JjKn;OZbey{!QPwXF?mn=9W z#($7sG^=;7%{42sH9V4hsLC_&BMR`gD+68~{1mAVU|8D)I9i?(Z?L7GJ%Y%4 z5vM2+V&Ac%af=fe*@>hOm*`ay%H)9WE-?LpI&^U9+bF1|ik{|CHFe7cxj%7ZIyac* z>C|c9=eb~upR-%d;sA=?h2?*vE|i4zkDNqtHZ9zE+uqdF)Tf1?)Vj?$#krKYncxAH z$;YZESXs%Dc(V z40!hZ8V9M`;+QytKSn$EgSlaFT(ie^b*^ohEYt#HKuB4E)~=_#e3cFV?+(5sRb9C_8z|f^o4|Ji|QB-2F|sZf}2IA_#%C zWslT7Lj3+Tx8C{bHLB1&8gY4p?12S}yk=+-4E`#GRM4(^7id?+Q!8~@p;#0$*(dO} zl0c~cewIQLpvLefXB$r|!RKuEt@tk-Q2iOZ$8XelE` zkoIt+Ql!_}TY1;kMkLB1XC)I{9^m?0QpWkezX`;T+s5B_Pn%eAZGlrHd81NwD-3yf z$dUjZck;EWx;*~T$cPB5?5}aG4YwL>>V0I5?9iep$-N&lqX^g)Lxo4&{hOXdF{t(G zhqs&{(_+tv^a)JlsSCAUn=8HoGujI(UKO|JO#|pcx-F%vaf?Ze*spFGwnJgx3x%ta zj`|*MY{ynRzTD=`i6VI6?i9>LVXNYlnCEn@Lez5N!9`+aXhrBlmt}QuDw*Mf+7-U3 z+WF+(CROZ0!|?F2vaQdBJ#AR9;f5Z4&Zi3x*L@md*V-^I9tpMF0%;?sw5;l7 z_xFq6J>DjTw0{jqB+j4Wn?jt?*~4sl9Uw~3LC#5~SM`Uichs+dQ_YoJ-J+XbPlAZf zG8fvxbC*WSp7Dx>Qzx4el@q%LBX(pqe1@? z4nM(WZJtB+_TG(MU}Ew|z-f+hI`&WWqs9Nxsoa13pPkAho7oXC+}y3p)o>T>k>BpM z9qnv`2sEGF-rU-%k(E2}3RK>zx>>#X;?DRfRDJYeLMw$8%?i9Mw=gCL>>zEVcmY&k zFl=;45zQ+fKWQb7!><#AmDdUaMNaWNSnLC8_);l;p8&HP&M7rUI|28!D2w=%5N_vCQF@a z2VE|mai7Xss^Yt6d;RB7(sUG@q0+b;Hk?q>PFFKll>kQ?Yo5O-R-K9|{8su98|lz? zMKVdVK)?5ksw+-1^<$28H}+~oXHMUWP=jcKWLljE5XZsMJu0GEA+G6Ys^w(Ks}pl> z)wmne&E0V0%<%AQ*=okp&ul*@Z*!s&rj{LPQ{dHV1+wJq3`PF8mEGJCX2o1wVTS5K zf@5d!F!}=Y_a_Wpiv5Eb3?njGKHK%%4(+hRMjSs@=0a0iZiTJj&rk?Ipbg)w@|WT< zXHc`!lHF9MA-DS%Y>$2VIuNzwwN8 - +

    This sampler lets you send an HTTP/HTTPS request to a web server. It @@ -233,6 +233,11 @@ and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSS See below for more details. For use with the listener. + + If this is selected, then the response is not stored in the sample result. + Instead, the 32 character MD5 hash of the data is calculated and stored instead. + This is intended for testing large amounts of data. + If present, this must be a regular expression that is used to match against any embedded URLs found. So if you only want to download embedded resources from http://example.com/, use the expression: