Препроцессор JSR223 дает неверный запрос при создании json в Jmeter с использованием CSV - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать JSON с помощью Groovy Json Builder в Jmeter.

Ниже приведен код, который я создал для получения нужного JSON:

import groovy.json.JsonBuilder

def json = new JsonBuilder()

json {
    "Rule":{  
      "__type":"AndroidSamsungDeviceRelocationRule",
      "RuleId":0,
      "Name":"Test",
      "DeviceFamily":6,
      "Targets":{  
         "Groups":[  
            {  
               "Id":"[{LogicalId="${logicalid1}"}]"
            }
         ],
         "Devices":[  

         ]
      },
      "Priority":0,
      "IsEnabled":true,
      "StartDate":"/Date(${__time(,)})/",
      "EndDate":null,
      "Mappings":[  
         {  
            "RelocationTarget":{  
               "Id":"${logicalid2}",
               "Name":"${__P(TargetGroups)}",
               "Path":"\\'${__P(TargetGroups)}'\\",
               "PathVisible":"\\'${__P(TargetGroups)}'\\"
               },
               "IPRange":[  
                 source Double.parseDouble(vars.get("source"))
                 destination Double.parseDouble(vars.get("destination"))
               ]
            }
         ],
         "EnrollmentCertificateId":null,
         "EnrollmentCertificateName":""
      }
   }


sampler.addNonEncodedArgument("",json.toPrettyString(),"")
sampler.setPostBodyRaw(true)

Данные CSV следующие:

0.0.0.0,255.255.255.255 10.0.0.1,255.0.0.0

Указанный CSV может иметь несколько значений от 1 до 100 IP-адресов, разделенных символом «,». Код также необходимо изменить в соответствии с количеством строк IP-адресов. Данные ABove CSV должны находиться там под тегом IPRange, и результат должен быть таким:

"Rule":{  
      "__type":"AndroidSamsungDeviceRelocationRule",
      "RuleId":0,
      "Name":"Test",
      "DeviceFamily":6,
      "Targets":{  
         "Groups":[  
            {  
               "Id":"[{LogicalId="${logicalid1}"}]"
            }
         ],
         "Devices":[  

         ]
      },
      "Priority":0,
      "IsEnabled":true,
      "StartDate":"/Date(${__time(,)})/",
      "EndDate":null,
      "Mappings":[  
         {  
            "RelocationTarget":{  
               "Id":"${logicalid2}",
               "Name":"${__P(TargetGroups)}",
               "Path":"\\'${__P(TargetGroups)}'\\",
               "PathVisible":"\\'${__P(TargetGroups)}'\\"
               },
               "IPRange":[  
                 {"From":"0.0.0.0","To":"255.255.255.255"}, 
                 {"From":"10.0.0.1","To":"255.0.0.1"},
                  ......
                  .....
               ]
            }
         ],
         "EnrollmentCertificateId":null,
         "EnrollmentCertificateName":""
      }

Но проблема, которую я получаю, - «Плохой запрос» в jmeter.

1 Ответ

0 голосов
/ 17 сентября 2018
  1. Я не понимаю, зачем вам нужно строить тело запроса в Groovy, это можно сделать просто на HTTP-запросе Вкладка «Данные тела», например:

    JMeter HTTP Request Parameterize

    Проверьте Параметризация JMeter - Полное руководство с примерами использования внешних источников данных для создания управляемых данными тестов JMeter

  2. Если вы хотите, чтобы мы помогли вам с настройкой, было бы неплохо увидеть желаемый результат, то есть полезную нагрузку JSON, которую вы хотите сгенерировать, и код, который вы пробовали в приведенных выше примерах, не имеют никакого смысла.Привыкайте проверять файл jmeter.log - обычно он содержит достаточно информации, чтобы добраться до сути проблемы теста JMeter.Также я предлагаю прочитать парсинг и создание статьи JSON и документацию JsonBuilder .
...