README
Venom - Executor RabbitMQ
Step to use publish / subscribe on a RabbitMQ
Input
In your yaml file, you can use:
# RabbitMQ connection
- addrs optional (default amqp:/localhost:5672)
- user optional (default guest)
- password optional (default guest)
- clientType mandatory (publisher or subscriber)
# RabbitMQ Q configuration
- qName mandatory
# Exchange configuration
- routingKey optional (default qName)
- exchangeType optional (default "fanout")
- exchange optional (default "")
# For subscriber only
- messageLimit optional (default 1)
# For publisher only
- messages
- durable optional (true or false) (default alse)
- contentType optional
- contentEncoding optional
- persistent optional (default true)
- headers optional
- name: value
Examples:
Publisher (workQ)
name: TestSuite RabbitMQ
vars:
addrs: 'amqp://localhost:5672'
user:
password:
testcases:
- name: RabbitMQ publish (work Q)
steps:
- type: rabbitmq
addrs: "{{.addrs}}"
user: "{{.user}}"
password: "{{.password}}"
clientType: publisher
qName: TEST
messages:
- value: '{"a": "b"}'
contentType: application/json
contentEncoding: utf8
persistant: false
headers:
myCustomHeader: value
myCustomHeader2: value2
Subscriber (workQ)
name: TestSuite RabbitMQ
vars:
addrs: 'amqp://localhost:5672'
user:
password:
- name: RabbitMQ subscribe testcase
steps:
- type: rabbitmq
addrs: "{{.addrs}}"
user: "{{.user}}"
password: "{{.password}}"
clientType: subscriber
qName: "{{.qName}}"
durable: true
messageLimit: 1
assertions:
- result.bodyjson.bodyjson0.a ShouldEqual b
- result.headers.headers0.mycustomheader ShouldEqual value
- result.headers.headers0.mycustomheader2 ShouldEqual value2
- result.messages.messages0.contentencoding ShouldEqual utf8
- result.messages.messages0.contenttype ShouldEqual application/json
Publisher (pubsub)
name: TestSuite RabbitMQ
vars:
addrs: 'amqp://localhost:5672'
user:
password:
testcases:
- name: RabbitMQ publish (work Q)
steps:
- type: rabbitmq
addrs: "{{.addrs}}"
user: "{{.user}}"
password: "{{.password}}"
clientType: publisher
exchange: exchange_test
routingKey: pubsub_test
messages:
- value: '{"a": "b"}'
contentType: application/json
contentEncoding: utf8
persistant: false
headers:
myCustomHeader: value
myCustomHeader2: value2
Subscriber (pubsub)
name: TestSuite RabbitMQ
vars:
addrs: 'amqp://localhost:5672'
user:
password:
- name: RabbitMQ subscribe testcase
steps:
- type: rabbitmq
addrs: "{{.addrs}}"
user: "{{.user}}"
password: "{{.password}}"
clientType: subscriber
exchange: exchange_test
routingKey: pubsub_test
messageLimit: 1
assertions:
- result.bodyjson.bodyjson0.a ShouldEqual b
- result.headers.headers0.mycustomheader ShouldEqual value
- result.headers.headers0.mycustomheader2 ShouldEqual value2
- result.messages.messages0.contentencoding ShouldEqual utf8
- result.messages.messages0.contenttype ShouldEqual application/json
Documentation
Index ¶
Constants ¶
View Source
const Name = "rabbitmq"
Name of executor
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Executor ¶
type Executor struct { Addrs string `json:"addrs" yaml:"addrs"` // WithTLS bool `json:"with_tls" yaml:"withTLS"` User string `json:"user" yaml:"user"` Password string `json:"password" yaml:"password"` //ClientType must be "consumer" or "producer" ClientType string `json:"client_type" yaml:"clientType"` // QName represents the RabbitMQ queue name QName string `json:"q_name" yaml:"qName"` // Durable represents the RabbitMQ durable parameter Durable bool `json:"durable" yaml:"durable"` // Exchange represents the RabbitMQ exchange Exchange string `json:"exchange" yaml:"exchange"` // RoutingKey represents the RabbitMQ routing key ExchangeType string `json:"exchange_type" yaml:"exchangeType"` // ExchangeType respresents the type of exchange (fanout, etc..) RoutingKey string `json:"routing_key" yaml:"routingKey"` //Represents the limit of message will be read. After limit, consumer stop read message MessageLimit int `json:"message_limit" yaml:"messageLimit"` //Used when ClientType is producer //Messages represents the message sended by producer Messages []Message `json:"messages" yaml:"messages"` }
Executor represents a Test Exec
func (Executor) GetDefaultAssertions ¶
func (Executor) GetDefaultAssertions() venom.StepAssertions
GetDefaultAssertions return default assertions for type exec
func (Executor) Run ¶
func (Executor) Run(testCaseContext venom.TestCaseContext, l venom.Logger, step venom.TestStep, workdir string) (venom.ExecutorResult, error)
Run execute TestStep of type exec
func (Executor) ZeroValueResult ¶
func (Executor) ZeroValueResult() venom.ExecutorResult
ZeroValueResult return an empty implemtation of this executor result
type Message ¶
type Message struct { Value string `json:"value" yaml:"value"` Headers amqp.Table `json:"headers" yaml:"headers"` Persistent bool `json:"persistent" yaml:"persistent"` ContentType string `json:"content_type" yaml:"contentType"` ContentEncoding string `json:"content_encoding" yaml:"contentEncoding"` }
Message represents the object sended or received from rabbitmq
type Result ¶
type Result struct { Executor Executor `json:"executor" yaml:"executor"` TimeSeconds float64 `json:"timeSeconds" yaml:"timeSeconds"` TimeHuman string `json:"timeHuman" yaml:"timeHuman"` Body []string `json:"body" yaml:"body"` Messages []interface{} `json:"messages" yaml:"messages"` BodyJSON []interface{} `json:"bodyJSON" yaml:"bodyJSON"` Headers []amqp.Table `json:"headers" yaml:"headers"` Err string `json:"error" yaml:"error"` }
Result represents a step result.