Я использую код Java для создания файла .jmx для графического интерфейса Jmeter. Я хочу извлечь ответ GET из сэмплера HTTP-прокси, который я использую для «входа в систему», ответ используется в качестве идентификатора сеанса для распознавания пользователя. Более того, мне нужен следующий сэмплер, чтобы использовать извлекаемую переменную. Кроме того, мне также нужен менеджер файлов cookie для каждой группы потоков.
Какой API следует вызывать для добавления экстрактора в сэмплер http-прокси и добавления менеджера файлов cookie в группу потоков?
Я уже создал http-сэмплер, установил путь и установил аргументы. Все, что мне сейчас нужно, это экстрактор, который поможет мне получить переменную, и менеджер файлов cookie
Ниже приведен мой код при создании группы потоков и добавлении сэмплера http в группу потоков
HashTree testPlanTree = new ListedHashTree();
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
testPlanTree.add(testPlan);
HTTPSamplerProxy newSampler = null;
LoopController loopController;
ThreadGroup threadGroup = null;
HashTree threadGroupHashTree = null;
int i = 1; // exclude the first empty call
for (ArrayList<String> elementList : calls) {
if (elementList.size() == 3) {
System.out.println(elementList);
loopController = new LoopController();
loopController.setLoops(1);
loopController.setFirst(true);
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
loopController.initialize();
threadGroup = new ThreadGroup();
threadGroup.setName(elementList.get(1) + "_" + elementList.get(2));
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
}
else {
newSampler = new HTTPSamplerProxy();
LinkedHashMap<String, ArrayList<String>> arguments = httpSamplerList.get(i);
if (elementList.get(0).equals("Login")) {
newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
newSampler.add
}
else if (elementList.get(0).equals("Logout"))
newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
else
newSampler.setMethod(elementList.get(0));
System.out.println(httpSamplerList.get(i));
newSampler.setPort(8080);
newSampler.setPath(arguments.get("HTTPSampler.path").get(0));
newSampler.setName(elementList.get(0)); // currently use a integer number naming as test
newSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
newSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());
// Set up arguments
if (arguments.get("arguments").size() > 0) {
if (arguments.get("HTTPSampler.method").get(0).equals("GET")) {
for (int j = 0; j < arguments.get("arguments").size(); j=j+2) {
newSampler.addArgument(arguments.get("arguments").get(j), arguments.get("arguments").get(j+1));
}
}
else if (arguments.get("HTTPSampler.method").get(0).equals("POST")||arguments.get("HTTPSampler.method").get(0).equals("PUT")) {
newSampler.addNonEncodedArgument("",arguments.get("arguments").get(0) , "");
newSampler.setPostBodyRaw(true);
}
}
threadGroupHashTree.add(newSampler);
i++;
}
}