gatling-mqtt skeleton impl
This commit is contained in:
		
							parent
							
								
									301600ff71
								
							
						
					
					
						commit
						9afa079315
					
				
							
								
								
									
										26
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								pom.xml
									
									
									
									
									
								
							@ -69,6 +69,10 @@
 | 
				
			|||||||
        <surfire.version>2.19.1</surfire.version>
 | 
					        <surfire.version>2.19.1</surfire.version>
 | 
				
			||||||
        <jar-plugin.version>3.0.2</jar-plugin.version>
 | 
					        <jar-plugin.version>3.0.2</jar-plugin.version>
 | 
				
			||||||
        <springfox-swagger.version>2.6.1</springfox-swagger.version>
 | 
					        <springfox-swagger.version>2.6.1</springfox-swagger.version>
 | 
				
			||||||
 | 
					        <gatling.version>2.2.3</gatling.version>
 | 
				
			||||||
 | 
					        <gatling-mqtt.version>1.0.0</gatling-mqtt.version>
 | 
				
			||||||
 | 
					        <gatling-plugin.version>2.2.1</gatling-plugin.version>
 | 
				
			||||||
 | 
					        <scala-maven-plugin.version>3.2.2</scala-maven-plugin.version>
 | 
				
			||||||
    </properties>
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <modules>
 | 
					    <modules>
 | 
				
			||||||
@ -281,6 +285,16 @@
 | 
				
			|||||||
                        </execution>
 | 
					                        </execution>
 | 
				
			||||||
                    </executions>
 | 
					                    </executions>
 | 
				
			||||||
                </plugin>
 | 
					                </plugin>
 | 
				
			||||||
 | 
					                <plugin>
 | 
				
			||||||
 | 
					                    <groupId>net.alchim31.maven</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>scala-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                    <version>${scala-maven-plugin.version}</version>
 | 
				
			||||||
 | 
					                </plugin>
 | 
				
			||||||
 | 
					                <plugin>
 | 
				
			||||||
 | 
					                    <groupId>io.gatling</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>gatling-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                    <version>${gatling-plugin.version}</version>
 | 
				
			||||||
 | 
					                </plugin>
 | 
				
			||||||
            </plugins>
 | 
					            </plugins>
 | 
				
			||||||
        </pluginManagement>
 | 
					        </pluginManagement>
 | 
				
			||||||
        <plugins>
 | 
					        <plugins>
 | 
				
			||||||
@ -689,6 +703,18 @@
 | 
				
			|||||||
                <artifactId>springfox-swagger2</artifactId>
 | 
					                <artifactId>springfox-swagger2</artifactId>
 | 
				
			||||||
                <version>${springfox-swagger.version}</version>
 | 
					                <version>${springfox-swagger.version}</version>
 | 
				
			||||||
            </dependency>
 | 
					            </dependency>
 | 
				
			||||||
 | 
					            <dependency>
 | 
				
			||||||
 | 
					                <groupId>io.gatling.highcharts</groupId>
 | 
				
			||||||
 | 
					                <artifactId>gatling-charts-highcharts</artifactId>
 | 
				
			||||||
 | 
					                <version>${gatling.version}</version>
 | 
				
			||||||
 | 
					                <scope>test</scope>
 | 
				
			||||||
 | 
					            </dependency>
 | 
				
			||||||
 | 
					            <dependency>
 | 
				
			||||||
 | 
					                <groupId>com.github.mnogu</groupId>
 | 
				
			||||||
 | 
					                <artifactId>gatling-mqtt</artifactId>
 | 
				
			||||||
 | 
					                <version>${gatling-mqtt.version}</version>
 | 
				
			||||||
 | 
					                <scope>test</scope>
 | 
				
			||||||
 | 
					            </dependency>
 | 
				
			||||||
        </dependencies>
 | 
					        </dependencies>
 | 
				
			||||||
    </dependencyManagement>
 | 
					    </dependencyManagement>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -78,6 +78,29 @@
 | 
				
			|||||||
            <artifactId>mockito-all</artifactId>
 | 
					            <artifactId>mockito-all</artifactId>
 | 
				
			||||||
            <scope>test</scope>
 | 
					            <scope>test</scope>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>io.gatling.highcharts</groupId>
 | 
				
			||||||
 | 
					            <artifactId>gatling-charts-highcharts</artifactId>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.github.mnogu</groupId>
 | 
				
			||||||
 | 
					            <artifactId>gatling-mqtt</artifactId>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
    </dependencies>
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>net.alchim31.maven</groupId>
 | 
				
			||||||
 | 
					                <artifactId>scala-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>io.gatling</groupId>
 | 
				
			||||||
 | 
					                <artifactId>gatling-maven-plugin</artifactId>
 | 
				
			||||||
 | 
					                <version>${gatling-plugin.version}</version>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package org.thingsboard.client.tools; /**
 | 
					/**
 | 
				
			||||||
 * Copyright © 2016 The Thingsboard Authors
 | 
					 * Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
@ -13,6 +13,9 @@ package org.thingsboard.client.tools; /**
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package org.thingsboard.client.tools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import lombok.Getter;
 | 
					import lombok.Getter;
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.eclipse.paho.client.mqttv3.*;
 | 
					import org.eclipse.paho.client.mqttv3.*;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package org.thingsboard.client.tools; /**
 | 
					/**
 | 
				
			||||||
 * Copyright © 2016 The Thingsboard Authors
 | 
					 * Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
@ -13,6 +13,9 @@ package org.thingsboard.client.tools; /**
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package org.thingsboard.client.tools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.thingsboard.server.common.data.Device;
 | 
					import org.thingsboard.server.common.data.Device;
 | 
				
			||||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
 | 
					import org.thingsboard.server.common.data.security.DeviceCredentials;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package org.thingsboard.client.tools; /**
 | 
					/**
 | 
				
			||||||
 * Copyright © 2016 The Thingsboard Authors
 | 
					 * Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
@ -13,10 +13,11 @@ package org.thingsboard.client.tools; /**
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package org.thingsboard.client.tools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
					import com.fasterxml.jackson.databind.JsonNode;
 | 
				
			||||||
import lombok.RequiredArgsConstructor;
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
import org.springframework.http.HttpEntity;
 | 
					 | 
				
			||||||
import org.springframework.http.HttpHeaders;
 | 
					 | 
				
			||||||
import org.springframework.http.HttpRequest;
 | 
					import org.springframework.http.HttpRequest;
 | 
				
			||||||
import org.springframework.http.ResponseEntity;
 | 
					import org.springframework.http.ResponseEntity;
 | 
				
			||||||
import org.springframework.http.client.ClientHttpRequestExecution;
 | 
					import org.springframework.http.client.ClientHttpRequestExecution;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package org.thingsboard.client.tools; /**
 | 
					/**
 | 
				
			||||||
 * Copyright © 2016 The Thingsboard Authors
 | 
					 * Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
@ -13,6 +13,9 @@ package org.thingsboard.client.tools; /**
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package org.thingsboard.client.tools;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import lombok.extern.slf4j.Slf4j;
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.concurrent.atomic.AtomicInteger;
 | 
					import java.util.concurrent.atomic.AtomicInteger;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								tools/src/main/shell/install-local-gatling-mqtt.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										25
									
								
								tools/src/main/shell/install-local-gatling-mqtt.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					git clone https://github.com/mnogu/gatling-mqtt.git /tmp/gatling-mqtt
 | 
				
			||||||
 | 
					cd /tmp/gatling-mqtt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sbt assembly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cd /tmp/gatling-mqtt/target/scala-2.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mvn install:install-file -Dfile=gatling-mqtt-assembly-0.1.0-SNAPSHOT.jar -DgroupId=com.github.mnogu -DartifactId=gatling-mqtt -Dversion=1.0.0 -Dpackaging=jar
 | 
				
			||||||
@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Copyright © 2016 The Thingsboard Authors
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package org.thingsboard.client.tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.gatling.core.Predef._
 | 
				
			||||||
 | 
					import org.fusesource.mqtt.client.QoS
 | 
				
			||||||
 | 
					import scala.concurrent.duration._
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.mnogu.gatling.mqtt.Predef._
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MqttSimulation extends Simulation {
 | 
				
			||||||
 | 
					  val mqttConf = mqtt
 | 
				
			||||||
 | 
					    .host("tcp://localhost:1883")
 | 
				
			||||||
 | 
					    .userName("A1_TEST_TOKEN")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  val scn = scenario("MQTT Test")
 | 
				
			||||||
 | 
					    .exec(mqtt("request")
 | 
				
			||||||
 | 
					      .publish("v1/devices/me/telemetry", "{\"key1\":\"value1\", \"key2\":\"value2\"}", QoS.AT_LEAST_ONCE, retain = false))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  setUp(
 | 
				
			||||||
 | 
					    scn
 | 
				
			||||||
 | 
					      .inject(constantUsersPerSec(2) during(5 seconds)))
 | 
				
			||||||
 | 
					    .protocols(mqttConf)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user