Skip to content

Commit cde6d86

Browse files
committed
similarly move pub init from threadStarted() to sample()
1 parent 0d76931 commit cde6d86

File tree

1 file changed

+49
-45
lines changed

1 file changed

+49
-45
lines changed

mqtt_jmeter/src/main/java/net/xmeter/samplers/PubSampler.java

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,54 @@ public static byte[] hexToBinary(String hex) {
8888

8989
@Override
9090
public SampleResult sample(Entry arg0) {
91+
if (connection == null) { // first loop, do initialization
92+
try {
93+
if (!DEFAULT_PROTOCOL.equals(getProtocol())) {
94+
mqtt.setSslContext(Util.getContext(this));
95+
}
96+
97+
mqtt.setHost(getProtocol().toLowerCase() + "://" + getServer() + ":" + getPort());
98+
mqtt.setKeepAlive((short) Integer.parseInt(getConnKeepAlive()));
99+
100+
clientId = Util.generateClientId(getConnPrefix());
101+
mqtt.setClientId(clientId);
102+
103+
mqtt.setConnectAttemptsMax(Integer.parseInt(getConnAttamptMax()));
104+
mqtt.setReconnectAttemptsMax(Integer.parseInt(getConnReconnAttamptMax()));
105+
106+
if (!"".equals(getUserNameAuth().trim())) {
107+
mqtt.setUserName(getUserNameAuth());
108+
}
109+
if (!"".equals(getPasswordAuth().trim())) {
110+
mqtt.setPassword(getPasswordAuth());
111+
}
112+
if (MESSAGE_TYPE_RANDOM_STR_WITH_FIX_LEN.equals(getMessageType())) {
113+
payload = Util.generatePayload(Integer.parseInt(getMessageLength()));
114+
}
115+
116+
int qos = Integer.parseInt(getQOS());
117+
switch (qos) {
118+
case 0:
119+
qos_enum = QoS.AT_MOST_ONCE;
120+
break;
121+
case 1:
122+
qos_enum = QoS.AT_LEAST_ONCE;
123+
break;
124+
case 2:
125+
qos_enum = QoS.EXACTLY_ONCE;
126+
break;
127+
default:
128+
break;
129+
}
130+
131+
connection = mqtt.futureConnection();
132+
Future<Void> f1 = connection.connect();
133+
f1.await(Integer.parseInt(getConnTimeout()), TimeUnit.SECONDS);
134+
} catch (Exception e) {
135+
logger.log(Priority.ERROR, e.getMessage(), e);
136+
}
137+
}
138+
91139
SampleResult result = new SampleResult();
92140
result.setSampleLabel(getName());
93141
try {
@@ -136,51 +184,7 @@ public SampleResult sample(Entry arg0) {
136184

137185
@Override
138186
public void threadStarted() {
139-
try {
140-
if (!DEFAULT_PROTOCOL.equals(getProtocol())) {
141-
mqtt.setSslContext(Util.getContext(this));
142-
}
143-
144-
mqtt.setHost(getProtocol().toLowerCase() + "://" + getServer() + ":" + getPort());
145-
mqtt.setKeepAlive((short) Integer.parseInt(getConnKeepAlive()));
146-
147-
clientId = Util.generateClientId(getConnPrefix());
148-
mqtt.setClientId(clientId);
149-
150-
mqtt.setConnectAttemptsMax(Integer.parseInt(getConnAttamptMax()));
151-
mqtt.setReconnectAttemptsMax(Integer.parseInt(getConnReconnAttamptMax()));
152-
153-
if (!"".equals(getUserNameAuth().trim())) {
154-
mqtt.setUserName(getUserNameAuth());
155-
}
156-
if (!"".equals(getPasswordAuth().trim())) {
157-
mqtt.setPassword(getPasswordAuth());
158-
}
159-
if (MESSAGE_TYPE_RANDOM_STR_WITH_FIX_LEN.equals(getMessageType())) {
160-
payload = Util.generatePayload(Integer.parseInt(getMessageLength()));
161-
}
162-
163-
int qos = Integer.parseInt(getQOS());
164-
switch (qos) {
165-
case 0:
166-
qos_enum = QoS.AT_MOST_ONCE;
167-
break;
168-
case 1:
169-
qos_enum = QoS.AT_LEAST_ONCE;
170-
break;
171-
case 2:
172-
qos_enum = QoS.EXACTLY_ONCE;
173-
break;
174-
default:
175-
break;
176-
}
177-
178-
connection = mqtt.futureConnection();
179-
Future<Void> f1 = connection.connect();
180-
f1.await(Integer.parseInt(getConnTimeout()), TimeUnit.SECONDS);
181-
} catch (Exception e) {
182-
logger.log(Priority.ERROR, e.getMessage(), e);
183-
}
187+
184188
}
185189

186190
@Override

0 commit comments

Comments
 (0)