package ru.tinkoff.gatling.amqp import java.util.UUID import com.eatthepath.uuid.FastUUID import ru.tinkoff.gatling.amqp.request.AmqpProtocolMessage package object protocol { trait AmqpMessageMatcher { def prepareRequest(msg: AmqpProtocolMessage): Unit def requestMatchId(msg: AmqpProtocolMessage): String def responseMatchId(msg: AmqpProtocolMessage): String } object MessageIdMessageMatcher extends AmqpMessageMatcher { override def prepareRequest(msg: AmqpProtocolMessage): Unit = {} override def requestMatchId(msg: AmqpProtocolMessage): String = msg.messageId override def responseMatchId(msg: AmqpProtocolMessage): String = msg.messageId } object CorrelationIdMessageMatcher extends AmqpMessageMatcher { override def prepareRequest(msg: AmqpProtocolMessage): Unit = msg.correlationId(FastUUID.toString(UUID.randomUUID)) override def requestMatchId(msg: AmqpProtocolMessage): String = msg.correlationId override def responseMatchId(msg: AmqpProtocolMessage): String = msg.correlationId } case class AmqpProtocolMessageMatcher(extractId: AmqpProtocolMessage => String) extends AmqpMessageMatcher { override def prepareRequest(msg: AmqpProtocolMessage): Unit = {} override def requestMatchId(msg: AmqpProtocolMessage): String = extractId(msg) override def responseMatchId(msg: AmqpProtocolMessage): String = extractId(msg) } case object RabbitMQConnectionFactoryBuilderBase { def host(host: String): RabbitMQConnectionFactoryBuilder = RabbitMQConnectionFactoryBuilder(host = Some(host)) /** * Builder with default connection factory settings * */ def default: RabbitMQConnectionFactoryBuilder = RabbitMQConnectionFactoryBuilder() } }