Jmeter (Maven) не работает на Дженкинс, но работает локально - PullRequest
0 голосов
/ 24 августа 2018

Я создал тестовый проект (maven) для тестирования производительности REST API. Я использую плагин Jmeter

Вот мой фрагмент кода

<build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.5.0</version>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <resultsDirectory>/tmp/jmeter</resultsDirectory>
                </configuration>
            </plugin>
        </plugins>
 </build>

У меня есть JenkinsFile в моем проекте, как это

pipeline {
   agent any

environment {
    BRANCH_NAME = "${env.PIPELINE_BRANCH_NAME}"
}

stages {
    stage('SCM checkout') {
        steps {
           .......
        }
    }

    stage('Execute Jmeter tests') {
        steps {
            echo '****************************************\r*** Execute Jmeter tests'
            withMaven(jdk: 'JDK 8', maven: 'aer Maven 3') {
                sh 'mvn jmeter:jmeter'
                performanceReport parsers: [[$class: 'JMeterParser', glob: '/tmp/jmeter/**/*.jtl']], sourceDataFiles: "/tmp/jmeter/*.jtl", modePerformancePerTestCase: true, failBuildIfNoResultFile:true
            }
        }
    }
  }
}

При этом, когда я запускаю сборку на Jenkins, сборка завершается успешно, и я вижу это в выводе консоли

.......
[INFO] Creating summariser <summary>
[INFO] Created the tree successfully using /mypath/....../testFiles/mytest.jmx
[INFO] Starting the test @ Fri Aug 24 21:51:37 CEST 2018 (1535140297393)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)
[INFO] Tidying up ...    @ Fri Aug 24 21:51:40 CEST 2018 (1535140300073)
[INFO] ... end of run
[INFO] Completed Test: /global/otdci/apps/build_server/jenkins/jobs/SCMAER/jobs/SCMAER-TEST-performancetesting/workspace/target/jmeter/testFiles/MaterialGroup.jmx
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.012 s
[INFO] Finished at: 2018-08-24T21:51:40+02:00
[INFO] Final Memory: 20M/615M
[INFO] ---------------------------------------------

Проблема в том, что она ничего не делает. График Performace Trend ничего не показывает.

Если я запускаю тот же проект на моей локальной машине, он работает отлично. Я вижу что-то подобное в журналах, что подтверждает это. А также сгенерированный файл вывода (файл .jtl) правильный.

[INFO] Starting the test @ Fri Aug 24 22:02:21 CEST 2018 (1535140941482)
[INFO] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[INFO] summary +    177 in 00:00:08 =   21.2/s Avg:   184 Min:   117 Max:  1366 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary +    910 in 00:00:30 =   30.4/s Avg:   165 Min:   115 Max:  3205 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary =   1087 in 00:00:38 =   28.4/s Avg:   168 Min:   115 Max:  3205 Err:     0 (0.00%)
[INFO] summary +    964 in 00:00:30 =   32.1/s Avg:   154 Min:   110 Max:  3193 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary =   2051 in 00:01:08 =   30.0/s Avg:   162 Min:   110 Max:  3205 Err:     0 (0.00%)
[INFO] summary +    966 in 00:00:30 =   32.1/s Avg:   156 Min:   113 Max:  3199 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary =   3017 in 00:01:38 =   30.7/s Avg:   160 Min:   110 Max:  3205 Err:     0 (0.00%)
[INFO] summary +    948 in 00:00:30 =   31.7/s Avg:   157 Min:   114 Max:  3194 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary =   3965 in 00:02:08 =   30.9/s Avg:   159 Min:   110 Max:  3205 Err:     0 (0.00%)
[INFO] summary +    862 in 00:00:30 =   28.6/s Avg:   170 Min:   115 Max:  3226 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
[INFO] summary =   4827 in 00:02:38 =   30.5/s Avg:   161 Min:   110 Max:  3226 Err:     0 (0.00%)
[INFO] summary +    185 in 00:00:06 =   30.1/s Avg:   178 Min:   115 Max:  3191 Err:     0 (0.00%) Active: 0 Started: 5 Finished: 5
[INFO] summary =   5012 in 00:02:45 =   30.5/s Avg:   162 Min:   110 Max:  3226 Err:     0 (0.00%)
[INFO] Tidying up ...    @ Fri Aug 24 22:05:06 CEST 2018 (1535141106249)
[INFO] ... end of run

Вот фрагмент моего плана тестирования

enter image description here Любая идея, почему это не работает на Дженкинс? какие-нибудь указатели для отладки этого?

1 Ответ

0 голосов
/ 27 августа 2018

Для тех, кто сталкивается с той же проблемой. Вот решение и как я его нашел.

Во-первых, проблема была очень простой. В моем плане тестирования (jmx) я использовал CSV-файл в качестве «CSV Data Set Config». Я поставил что-то вроде этого

inputFiles \ materialstamm.csv

это нормально просыпалось на моей локальной машине, потому что я работал на windows. И это не сработало на Дженкинсе, потому что это была машина Unix. После того, как я изменил это на

inputFiles / materialstamm.csv

Моя сборка jenkins запущена правильно.

Теперь приступим к выяснению проблемы. Это было очень сложно, потому что Jmeter ничего не сообщал в процессе сборки. Даже когда я включил Maven Debug.

Так как он не мог загрузить мой набор данных (через файл csv), он просто пропускал это и предполагал, что данных нет, и завершился с успехом статусом для сборки, но без какого-либо отчета / результата.

Хитрость заключалась в том, чтобы искать файлы журнала Jmeter. Сгенерированные Jmeter файлы журналов в .... / workspace / target / jmeter / logs / testplanname.log .

Но у меня не было консольного доступа к машине jenkins, а также я не видел папку рабочего пространства по умолчанию в пользовательском интерфейсе Jenkins. Это Ответ помог мне получить папку рабочего пространства. Когда я проверил там журнал, он был отчетливо виден, потому что jmeter выдал исключение, сказав, что не может найти файл CSV.

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