ืฉืืื, ืืืจ! ืื ืืืฉื ืืฉืื
ืื ืื ื ืืืืฆืจืื ืืืืืืืก ื ืชืื ืื ืขืืืจ ืืืจื ืคืืจืืืช ืืืืื. ืคืืจืืืื ืฉืื ืื ืฉื ืืงืฉืืช, ืืจื ืกืคืืจืืฆืืืช, ื ืืชืื ืืืจืื. ืืฆืืจื ืืืืงื, ืืชื ืฆืจืื ืืฉืืื ืืจืื ืืืืขืืช ืืชืืจ. ืืืืคื ืืื ื ืืื ืืื ืฉืื ืื ืืืจืืคืจืงื ืืืื ืืืชืืืื.
ืืืื
ืืืจืืช ืฉืืืืชื ืฆืจืื ืืืฉืืื ืขื ืืืื ืืื ืืืชืืื. ืืื ืืชืืื ืขื RFHUtil. ืขืืฆืืชื, ืืื ืืืื ืืืคืืื: ืืืื, ืืชื ืืืืจ ืืช ืจืืก.
ืืืจืื ืืืงืจืื ืืกืืืืื, ืื ืคืืืช ืืืชืืื ืืืงืจื ืฉื ืฉืืืืฉ ืคืขืื.
ืื ืืคืฉืจ ืืขืฉืืช ืืืชื ืืืืงื ื ืืื.
ืขื JMeter ืืื ืืคื ืืงื ืืืชืจ. ืืืืจ ืืฉืื ืืจืืฉืื ืฉื ืืืกืืจืื ื ืืืชืจืืืืช ืืืื, ืืืื ืืืชืขืืจืจ ืืชืงืืื ืืืืื ืืืืฉืจ.
ืื ื ืืฉืชืืฉ ืืืืคื ืคืขืื ืืกืืคืืจืื ืฉื JMS Publisher ื-JMS Subscriber. ืื ืืืื ื-JMS Point-to-Point, ืฆืื ืื ื ืจืื ื ืื ืืืชืจ ืืฉืืืืฉ. ืืืืืื, ืขื Subscriber ื-JMS Selector ืืชื ืืืื ืืฆืืื ืืฉืชื ื, ืืื ืขื Point-to-Point ืืชื ืื ืืืื (ืื ืฉืืื ืื ืืื ื ืืจืืจื ืืืืืื).
ืืื ืช ืืืืืืช
ืืืฆืื ืืืืจ ืฉื JMS
- ืืืืจื - ืื ืืืื. ืืคืืฆ'ื
ืืืืืฆื ืืฉืชืืฉ ืืืคืฉืจืืช ืื ืื ืชืืจืื/ื ืืฉืืื ืืฆืืื ืื ืืืืฆืขืืช ืืฉืชื ืื. - ืชืคืืื (ms) = 120000. ืืืงืจื ืฉื ืืฉื, ืืงืฉืืช ืืืืงื ืืืขืืื ืืืชืืจ ืืืืจ 2 ืืงืืช.
- ืืื ืืืฉืชืืฉ ืืืฆื ืืฉืืื ืื ืืชืืฉื? - ื ืืื. IBM
ืืืฉืจืช ืืฆื ืืชืืฉื ืืืืื ืฉืืืืจ ืืืื ืฉื ืืืืขืืช ืืฉืืืจืืช ืืืงืจื ืฉื ืืฉื ืคืชืืืื. ืืืืืคื ืืืืจื ืืืชืจ ืืืฆื ืื ืืชืืฉื. ืืืืจืืช ืืืืงื, ืืืืืจืืช ืืฉืืื ืืืชืจ.
ืืื Publisher ืื ื ืืืืืจ ืืืคืืื jms ืฉื-Subscriber ืืฉืชืืฉ ืื ื-JMS Selector. ืขืืืจ ืื ืืืฉื, ื ืืฆืจ ืขืจื ืืงืจืื ืืจืืื ืชืืื ืืช ืืืืืงื ืฉื ืคืจืืืจื ืืฉืชืืฉ:
ืื ืชืืืื ืืืืืช ืืืืืื ืฉืืืืืขื ืื ืืื ื ื ืงืจืืช.
ื"ืจืืง" ืืืืจืื ืฉื JMS Publisher ืืืืืจ ืืจืืฉ:
ืื ืื JMS
- ืืืืจื - ืื ืืืื. ืืืื, ืืชื ืืืื.
- ืคืกืง ืืื (ms) = 100000. ืื ืืืงืฉื ืื ืืืืขื ืืชืืจ ืืืืจ 100 ืฉื ืืืช ืฉื ืืืชื ื, ืื ืืฉืื ืืฉืชืืฉ.
- ืืขืฆืืจ ืืื ืืืืืืช? - ื ืืื.
JMS Selector - ืื ื ืื
ืืืฆื ืืืชืืืื ืขื ืืืืคืืืช ืืงืืจืืื ืืืืืขืืช ืืืืขืืจืืช. ื-JMeter, ืืืจืืจืช ืืืื, ืืืืจ ืืืื, ืืื ืืืฆื ืืฆืืจื ืขืงืืื. ืืื ืืืืื ืข ืืื ืืืืื ืืช ืืืืืื ืืืขืืฆืืชื ืชืืื ืืืื ืืงืื, ืขืืื:
- ืืืกืฃ ืืจืืืื ื JVM ื"ืืฉืืจ" JMeter:
-Dfile.encoding=UTF-8
- ืืืกืฃ ืืช JSR223 PostProcessor ืืื ืื ืขื ืงื ืืจืืื:
prev.setDataEncoding("UTF-8")
ืฉืื ืืงืกื
ืืืืคืฆืื ืืื ืขืฆืื ืืช. ืืชืืื ืืืืชืืจ ืืืืื ืืืืื ืื ืฉืื ืขืชื ื ืืชืื. ืื ืืืงืจืื ืฉืืื ืืชื ืฆืจืื ืืฉืืื ืืคืืืช ืืฉืื ืงืื. ืืืจ ืืคืฉืจืืช ืืงืืจ ืืืืืขื - Textarea ืืืงื ืืช ืืืฃ ืืืืืขื ืืืืืง ืืงืกื:
ืืขืืจืช ืงืืฆืื
ืืืคืฉืจืืช ืื ืคืืฆื ืืืืชืจ. ืืชืืื ืืจืื ืืชืจืืืฉืื. ืืืจ ืืคืฉืจืืช ืืงืืจ ืืืืืขื - ืืงืืืฅ ืืืฆืืื ืืช ืื ืชืื ืืืืืขื ืืฉืื ืงืืืฅ - ืฉื ืงืืืฅ:
ืืขืืจืช ืงืืืฅ ืืฉืื ืืงืกื
ืืืคืฉืจืืช ืืืืืื ืช ืืืืชืจ. ืืชืืื ืืจืื ืืชืจืืืฉืื + ื ืืชื ืืืฉืชืืฉ ื-JMS Point-to-Point ืฉืื ืืื ืืคืฉืจืืช ืฉืืืื ืฉื ืืื:
ืืขืืจืช ืืขืจื ืืชืื
ืืืคืฉืจืืช ืืงืฉื ืืืืชืจ. ืืชืืื ืืืืืงืช ืฉืืืืจ ืืืืืง ืฉื ืืงืฉืืช ืขื ืืืืื, ืืื ืขืืืืชืื, SMS ืืืคืจืขืืช. ืื ืชืืื ืืขืฉืืช ืืืช ื-JMeter ืืจืืจืช ืืืืื.
ืื ืืืืชื ืฆืจืื ืืืืจืื
ืืืืืฃ ืืฉืืื extractContent(..)
ืงึทื:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
on
byte[] bytes = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(bytes);
try {
buffer.append(new String(bytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
ืืื ื ืืืืฉ ืืช JMeter.
ืื ืื ืฉื ืืชืจ ืืื ืืืืกืืฃ ืืื ืืืื JSR223. ืืจืืฉืื ืืื ืืคื ื ืฆืื ืืืืฆืื ืืืืจ/ืื ืื ืืื ืืืฆืืจ ืงืืืฅ DAT ืืืืื ืืชืื ืืงืจืืืื:
import org.apache.commons.lang3.RandomUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
vars.put("PATH_TO_BYTES", "C:temprandomBytes.dat");
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
byte[] arr = RandomUtils.nextBytes((int)(Math.random()*10000));
try {
FileOutputStream fos = new FileOutputStream(RESULT_FILE);
fos.write(arr);
fos.close();
} catch (IOException e) {
System.out.println("file not found");
}
ืืฉื ื - ืืกืืฃ ืืกืงืจืืคื, ืืืืง ืืช ืืงืืืฅ:
import java.io.File;
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();
ืืื ืชืฉืื ืืืืกืืฃ ืืช ืื ืชืื ืืงืืืฅ ื-Publisher:
ืืื ืืืืงื ื-JSR223 Assertion for Subscriber - ืืฉืื ืืช ืืชื ืืืงืืจ ืืืื ืฉืืืืขืื ืืชืืจ ืฉื ืื ืืขื:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
Path path = Paths.get(vars.get("PATH_TO_BYTES"), new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);
if (Arrays.equals(originalArray, changedArray))
{
SampleResult.setResponseMessage("OK");
} else {
SampleResult.setSuccessful(false);
SampleResult.setResponseMessage("Comparison failed");
SampleResult.setResponseData("Bytes have changed","UTF-8");
IsSuccess=false;
}
ืืกืงื ื
ืชืืืจืชื ืืจืืข ืืจืืื ืืฉืืื ืืืืขืืช ืืชืืจืื, ืืื ืื ื ืืฉืชืืฉ ืื ืืื ืืคืืขื. ืื ื ืืงืืื ืฉืืืืืข ืืื ืืงื ืขื ืืืื. ืืืืฉื, ืื ื ืืชืื ื ืืืืจ ืขื ืื ืืกืืื ืฉืื ืืืืืงืช ืืจืืืื ืฉืื ืืฉ ืชืืจ ืืงืฆื ืืื ืืืงืฆื ืืฉื ื ืืกื ื ืชืื ืื ืื ืืขืจืืช ืงืืฆืื.
ืืกืื ืืช ืืืื ืฉืื. ืืชืืื ืขื ืชืฉืืืช ืืื.
ืืงืืจ: www.habr.com