Постоянный таймер не работает с Jmeter в командной строке - PullRequest
0 голосов
/ 05 июля 2019

У меня есть тест jmeter, в котором есть таймеры констант, связанные с запросом websocket, но когда я запускаю тест с jmeter, используя командную строку, jmeter не заботится о таймерах

<eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler enabled="true" guiclass="eu.luminis.jmeter.wssampler.SingleWriteWebSocketSamplerGui" testclass="eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler" testname="WebSocket Single Write Sampler">
              <boolProp name="TLS">false</boolProp>
              <stringProp name="server" />
              <stringProp name="port">80</stringProp>
              <stringProp name="path" />
              <boolProp name="binaryPayload">true</boolProp>
              <stringProp name="requestData">00 00 00 00 20 18 00 01 00 ff 00 ff 00 ff 10 08 00 00 00 00</stringProp>
              <boolProp name="createNewConnection">false</boolProp>
              <boolProp name="optional">false</boolProp>
            </eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler>
            <hashTree>
        <ConstantTimer enabled="true" guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer">
                <stringProp name="ConstantTimer.delay">60000.0</stringProp>
              </ConstantTimer>
              <hashTree />
              <ConstantTimer enabled="true" guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer">
                <stringProp name="ConstantTimer.delay">60008.427676</stringProp>
              </ConstantTimer>
              <hashTree />
            </hashTree>

НоКогда я помещаю постоянный таймер над сэмплером websocket (который будет влиять на каждый сэмплер websocket, а не только на этот), jmeter позаботится о таймере

Мой результат выглядит так

summary +  11445 in 00:00:07 = 1618.1/s Avg:     0 Min:     0 Max:   567 Err: 10953 (95.70%) Active: 0 Started: 1 Finished: 1
summary =  11446 in 00:00:38 =  304.2/s Avg:     0 Min:     0 Max:  3259 Err: 10953 (95.69%)

Но у меня есть несколько таймеров, и один составляет 60 секунд (как выше)

1 Ответ

0 голосов
/ 08 июля 2019

JMeter-таймеры подчиняются JMeter scoping rules , поэтому, если вы хотите, чтобы постоянный таймер применялся только к одному конкретному сэмплеру - вам нужно сделать его child сэмплера

enter image description here

Также рассматривая Источник постоянного таймера кажется, что вам необходимо предоставить значение Long , поэтому измените их 60000.0 и 60008.427676 - 60000 и 60008 соответственно.

Пример плана тестирования, который создает 1 запрос в 60 секунд:

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.1.1 r1855137">
    <hashTree>
        <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
            <stringProp name="TestPlan.comments"></stringProp>
            <boolProp name="TestPlan.functional_mode">false</boolProp>
            <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
            <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
            <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
                <collectionProp name="Arguments.arguments"/>
            </elementProp>
            <stringProp name="TestPlan.user_define_classpath"></stringProp>
        </TestPlan>
        <hashTree>
            <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
                <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
                <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
                    <boolProp name="LoopController.continue_forever">false</boolProp>
                    <intProp name="LoopController.loops">-1</intProp>
                </elementProp>
                <stringProp name="ThreadGroup.num_threads">1</stringProp>
                <stringProp name="ThreadGroup.ramp_time">1</stringProp>
                <boolProp name="ThreadGroup.scheduler">false</boolProp>
                <stringProp name="ThreadGroup.duration"></stringProp>
                <stringProp name="ThreadGroup.delay"></stringProp>
            </ThreadGroup>
            <hashTree>
                <eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler guiclass="eu.luminis.jmeter.wssampler.SingleWriteWebSocketSamplerGui" testclass="eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler" testname="WebSocket Single Write Sampler" enabled="true">
                    <boolProp name="TLS">false</boolProp>
                    <stringProp name="server">echo.websocket.org</stringProp>
                    <stringProp name="port">80</stringProp>
                    <stringProp name="path"></stringProp>
                    <stringProp name="connectTimeout">20000</stringProp>
                    <boolProp name="binaryPayload">false</boolProp>
                    <stringProp name="requestData">foo</stringProp>
                    <boolProp name="createNewConnection">true</boolProp>
                    <boolProp name="loadDataFromFile">false</boolProp>
                    <stringProp name="dataFile"></stringProp>
                </eu.luminis.jmeter.wssampler.SingleWriteWebSocketSampler>
                <hashTree>
                    <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
                        <stringProp name="ConstantTimer.delay">60000</stringProp>
                    </ConstantTimer>
                    <hashTree/>
                </hashTree>
            </hashTree>
        </hashTree>
    </hashTree>
</jmeterTestPlan>

Вы также можете рассмотреть возможность использования сэмплера Flow Control Action для введения пауз в качестве альтернативы константеТаймер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...