Size: a a a

QA — Load & Performance

2020 January 27

N

Nik in QA — Load & Performance
Kirill Yurkov
можно пути занести в очередь и оттуда вычитывать, если вариант, что Вячеслав посоветовал не прокатит - подскажу
Это в gatling?
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Nik
Это в gatling?
Точно, а изначально вопрос был про Gatling или про JMeter?
источник

N

Nik in QA — Load & Performance
Gatling
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
import java.io.File
import io.gatling.core.Predef._

object UtilsFeed {

 def getListOfFilesFeeder(dir: String) = {
   val file = new File(dir)
   Array(
   file.listFiles.filter(_.isFile)
     .map(("file" -> _.getPath) ) toMap
   ).queue
 }
}
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
И потом
.feed(UtilsFeed.getListOfFilesFeeder("/tmp"))
источник
2020 January 28

И

Иван in QA — Load & Performance
Привет, может кто-то сталкивался.
Генерирую .jmx файл через библиотеку org.apache.jmeter в idea. Потом открываю этот файл в jmeter (c ui), а все запросы и пользователи отображаются в случайном порядке. Если я открою этот же файл еще раз в jmeter, то порядок опять изменится. И так до тех пор, пока я не запущу нагрузку. После этого порядок фиксируется в той сортировке, в которой он был во время запуска нагрузки. Как заставить отображать последовательный порядок сразу?
источник

AS

Aleksandr Shipovalov in QA — Load & Performance
Иван
Привет, может кто-то сталкивался.
Генерирую .jmx файл через библиотеку org.apache.jmeter в idea. Потом открываю этот файл в jmeter (c ui), а все запросы и пользователи отображаются в случайном порядке. Если я открою этот же файл еще раз в jmeter, то порядок опять изменится. И так до тех пор, пока я не запущу нагрузку. После этого порядок фиксируется в той сортировке, в которой он был во время запуска нагрузки. Как заставить отображать последовательный порядок сразу?
ого, а как это делается? есть какой нибудь мануальчик или статья? Никогда не слышал о такой возможности
источник

И

Иван in QA — Load & Performance
Aleksandr Shipovalov
ого, а как это делается? есть какой нибудь мануальчик или статья? Никогда не слышал о такой возможности
Есть так себе дока https://jmeter.apache.org/api/overview-summary.html . По поводу мануалов, я не нашел, нашел только несколько вопросов на стаковерфлоу. По ответам на вопросы и делал.
источник

VS

Vladimir Sitnikov in QA — Load & Performance
Иван
Привет, может кто-то сталкивался.
Генерирую .jmx файл через библиотеку org.apache.jmeter в idea. Потом открываю этот файл в jmeter (c ui), а все запросы и пользователи отображаются в случайном порядке. Если я открою этот же файл еще раз в jmeter, то порядок опять изменится. И так до тех пор, пока я не запущу нагрузку. После этого порядок фиксируется в той сортировке, в которой он был во время запуска нагрузки. Как заставить отображать последовательный порядок сразу?
А код, которым добавляются элементы внутрь «user 1» секретный?
источник

VS

Vladimir Sitnikov in QA — Load & Performance
у меня, вроде, норм создавалось и не перемешивалось ничего
источник

И

Иван in QA — Load & Performance
    @Test
   public void jmeter() throws IOException {
       File jmeterHome = new File("/Downloads/apache-jmeter-5.2.1");
       File jmeterProperties = new File(jmeterHome.getPath() + "/bin/jmeter.properties");
       JMeterUtils.setJMeterHome(jmeterHome.getPath());
       JMeterUtils.loadJMeterProperties(jmeterProperties.getPath());
       JMeterUtils.setLocale(Locale.ENGLISH);
       StandardJMeterEngine jm = new StandardJMeterEngine();

       TestPlan testPlan = new TestPlan("/all/lis");
       testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
       testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
       testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
       HashTree testPlanTree = new HashTree();
       testPlanTree.add(testPlan);
       List<String> tokens = getTokens(1);
       int number = 1;
       for (String token : tokens) {
           LoopController 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 threadGroup = new ThreadGroup();

           threadGroup.setName("User " + number++);
           threadGroup.setNumThreads(5);
           threadGroup.setRampUp(10);
           threadGroup.setSamplerController(loopController);
           threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
           threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());



           HTTPSamplerProxy httpSampler = new HTTPSamplerProxy();
           httpSampler.setProtocol("https");
           httpSampler.setDomain("`DOMAIN");
           httpSampler.setPath("staff/update");
           httpSampler.setMethod("POST");
           httpSampler.setName("3");

           httpSampler.addNonEncodedArgument("", "JSON\",\"update_fields\": [\"photo_base64\"]}}", "");
           httpSampler.setPostBodyRaw(true);


           httpSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
           httpSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());


           HeaderManager headerManager = new HeaderManager();
           headerManager.setName("Header Manager");
           headerManager.add(new Header("accept", "application/json"));
           headerManager.add(new Header("x-token", token));
           Arguments arg = new Arguments();
           arg.addArgument("data", "true");
           headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
           headerManager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());

           HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);

           threadGroupHashTree.add(headerManager);
           threadGroupHashTree.add(otherOperations.changePhoto());
           threadGroupHashTree.add(otherOperations.allList());
           threadGroupHashTree.add(httpSampler);
           System.out.println(threadGroupHashTree);


       }


       SaveService.saveTree(testPlanTree, new FileOutputStream(" Test plan2.jmx"));
источник

VS

Vladimir Sitnikov in QA — Load & Performance
Иван
    @Test
   public void jmeter() throws IOException {
       File jmeterHome = new File("/Downloads/apache-jmeter-5.2.1");
       File jmeterProperties = new File(jmeterHome.getPath() + "/bin/jmeter.properties");
       JMeterUtils.setJMeterHome(jmeterHome.getPath());
       JMeterUtils.loadJMeterProperties(jmeterProperties.getPath());
       JMeterUtils.setLocale(Locale.ENGLISH);
       StandardJMeterEngine jm = new StandardJMeterEngine();

       TestPlan testPlan = new TestPlan("/all/lis");
       testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
       testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
       testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
       HashTree testPlanTree = new HashTree();
       testPlanTree.add(testPlan);
       List<String> tokens = getTokens(1);
       int number = 1;
       for (String token : tokens) {
           LoopController 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 threadGroup = new ThreadGroup();

           threadGroup.setName("User " + number++);
           threadGroup.setNumThreads(5);
           threadGroup.setRampUp(10);
           threadGroup.setSamplerController(loopController);
           threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
           threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());



           HTTPSamplerProxy httpSampler = new HTTPSamplerProxy();
           httpSampler.setProtocol("https");
           httpSampler.setDomain("`DOMAIN");
           httpSampler.setPath("staff/update");
           httpSampler.setMethod("POST");
           httpSampler.setName("3");

           httpSampler.addNonEncodedArgument("", "JSON\",\"update_fields\": [\"photo_base64\"]}}", "");
           httpSampler.setPostBodyRaw(true);


           httpSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
           httpSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());


           HeaderManager headerManager = new HeaderManager();
           headerManager.setName("Header Manager");
           headerManager.add(new Header("accept", "application/json"));
           headerManager.add(new Header("x-token", token));
           Arguments arg = new Arguments();
           arg.addArgument("data", "true");
           headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
           headerManager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());

           HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);

           threadGroupHashTree.add(headerManager);
           threadGroupHashTree.add(otherOperations.changePhoto());
           threadGroupHashTree.add(otherOperations.allList());
           threadGroupHashTree.add(httpSampler);
           System.out.println(threadGroupHashTree);


       }


       SaveService.saveTree(testPlanTree, new FileOutputStream(" Test plan2.jmx"));
Так. немного не тот код.

threadGroupHashTree.add(otherOperations.changePhoto());
threadGroupHashTree.add(otherOperations.allList());

Какой тип у объектов у otherOperations.changePhoto() и otherOperations.allList() ?
источник

И

Иван in QA — Load & Performance
HTTPSamplerProxy
источник

VS

Vladimir Sitnikov in QA — Load & Performance
я к чему: данные в allList, наверное, уже исходно в перемешанном формате хранятся
источник

И

Иван in QA — Load & Performance
там такой же запрос как и в httpSampler
источник

И

Иван in QA — Load & Performance
Vladimir Sitnikov
я к чему: данные в allList, наверное, уже исходно в перемешанном формате хранятся
а вы какой использовали?
источник

VS

Vladimir Sitnikov in QA — Load & Performance
Иван
а вы какой использовали?
otherOperations откуда берётся?
источник

VS

Vladimir Sitnikov in QA — Load & Performance
в предложенном выше фрагменте кода эта переменная не определена
источник

VS

Vladimir Sitnikov in QA — Load & Performance
наверняка там HashSet где-то живёт
источник

И

Иван in QA — Load & Performance
Vladimir Sitnikov
otherOperations откуда берётся?
это моя ошибка, надо было удалить 2 строчки кода. Эти переменные создаются в другом классе который создал я.
источник