Нагрузочное тестирование потока AWS Kinesis с ошибкой JMeter: невозможно разрешить класс com.amazonaws.services.kinesis - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь использовать библиотеку AWS-SDK и Kinesis Client с JMeter для создания записей для добавления в мой поток Kinesis для тестирования производительности.Моя проблема в том, что JMeter не распознает библиотеки, чтобы иметь возможность вызывать их из моего кода.Я не знаю, что делать дальше.

Установил JMeter 5.0 (пробовал с версией 4.0 с такими же проблемами) и Java 8.

$ java -version
java version "1.8.0_202-ea"
Java(TM) SE Runtime Environment (build 1.8.0_202-ea-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b03, mixed mode)

Размещенные JAR-файлы для AWSбиблиотеки в папке lib моей установки JMeter (также пробовал lib / ext):

- amazon-kinesis-client-2.1.0.jar
- aws-java-sdk-1.11.490.jar
- aws-sdk-java-2.3.10-SNAPSHOT.jar
- aws-sdk-java-aws-core-2.3.10-SNAPSHOT.jar
- aws-sdk-java-kinesis-2.3.10-SNAPSHOT.jar
- aws-sdk-java-sdk-core-2.3.10-SNAPSHOT.jar

(также добавил эти три на основе другого поста - не уверен, действительно ли они нужны или нет)

- jackson-annotations-2.9.8.jar
- jackson-core-2.9.8.jar
- jackson-databind-2.9.8.jar

Сэмплер JSR223 с использованием кода Groovy (на основе других примеров):

import groovy.json.*
import groovy.json.JsonBuilder
import groovy.json.JsonOutput

import com.amazonaws.AmazonClientException
import com.amazonaws.AmazonServiceException
import com.amazonaws.auth.AWSCredentials
import com.amazonaws.auth.profile.ProfileCredentialsProvider
import com.amazonaws.services.kinesis.AmazonKinesisClient
import com.amazonaws.services.kinesis.model.CreateStreamRequest
import com.amazonaws.services.kinesis.model.DescribeStreamRequest
import com.amazonaws.services.kinesis.model.DescribeStreamResult
import com.amazonaws.services.kinesis.model.ListStreamsRequest
import com.amazonaws.services.kinesis.model.ListStreamsResult
import com.amazonaws.services.kinesis.model.PutRecordRequest
import com.amazonaws.services.kinesis.model.PutRecordResult
import com.amazonaws.services.kinesis.model.ResourceNotFoundException
import com.amazonaws.services.kinesis.model.StreamDescription

    class AmazonKinesisRecordProducerSample {

         def kinesis

        def init() {

            AWSCredentials credentials = null
              credentials = new ProfileCredentialsProvider().getCredentials()
              kinesis = new AmazonKinesisClient(credentials)         
        }    
    }

    def amazonKinesisRecordProducerSample= new AmazonKinesisRecordProducerSample() 
    amazonKinesisRecordProducerSample.init()
    def Environment = vars.get("Environment") //as String
    def AWS_Region = vars.get("AWS_Region") //as String

    def myStreamName="stream123-" + Environment + "-" + AWS_Region

        def jsondata = new JsonBuilder()
        jsondata {
            <VARIOUS JSON DATA ADDED>
        }
        def data=jsondata.toPrettyString()
        log.info("jsondata: " + data)
        def partitionkey="<PARTITION KEY>"
        def putRecordRequest = new PutRecordRequest()
        putRecordRequest.setStreamName(myStreamName)
        putRecordRequest.setData(ByteBuffer.wrap(String.valueOf(data).getBytes()))
        putRecordRequest.setPartitionKey(partitionkey)
        def putRecordResult = new PutRecordResult()
        putRecordResult = amazonKinesisRecordProducerSample.kinesis.putRecord(putRecordRequest)
        log.info("Successfully put record, partition key : %s, ShardID : %s, SequenceNumber : %s.\n",
                    putRecordRequest.getPartitionKey(),
                    putRecordResult.getShardId(),
                    putRecordResult.getSequenceNumber())

Я получаю эту ошибку для каждого com.amazonaws. * Я пытаюсь импортировать:

Script1.groovy: 14: unable to resolve class com.amazonaws.services.kinesis.AmazonKinesisClient
 @ line 14, column 1.
   import com.amazonaws.services.kinesis.AmazonKinesisClient

для справки Как поместить запись 25 КБ в поток Kinesis и инструмент тестирования для ее подтверждения и Использование HTTP-запроса Jmeter для помещения записей в Amazon Kinesis

1 Ответ

0 голосов
/ 01 февраля 2019

Для разрешения com.amazonaws.services.kinesis классов вы можете:

  1. сбросить aws-java-sdk-1.11.490.jar до JMeter\lib с AWS SDK для Java 1.11.0
  2. ПерезапуститьJMeter

Также обратите внимание на

JMETER_HOME/lib/ext, используемый для компонентов и плагинов JMeter
Другие jar-файлы (такие как реализации JDBC, JMS и любые другие библиотеки поддержки, необходимые длякод JMeter) следует поместить в каталог JMETER_HOME/lib, а не в каталог lib / ext, или добавить в user.classpath.

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