3
3
import java .net .InetAddress ;
4
4
import java .text .ParseException ;
5
5
import java .text .SimpleDateFormat ;
6
+ import java .time .LocalDate ;
7
+ import java .time .LocalDateTime ;
8
+ import java .time .format .DateTimeFormatter ;
6
9
import java .util .Calendar ;
7
10
import java .util .Date ;
8
11
import java .util .HashMap ;
@@ -151,10 +154,18 @@ public Map<String, Object> getElasticData(SampleResult sr, BackendListenerContex
151
154
jsonObject .put ("URL" , sr .getURL ());
152
155
jsonObject .put ("Timestamp" , sdf .format (new Date (sr .getTimeStamp ())));
153
156
jsonObject .put (ElasticsearchBackend .BUILD_NUMBER , this .buildNumber );
154
- Date elapsedDate = getElapsedDate ();
155
- if (elapsedDate != null ) {
156
- jsonObject .put ("ElapsedTime" , elapsedDate );
157
+
158
+ // If built from Jenkins, add the hard-coded version to be able to compare response time
159
+ // of two builds over the elapsed time
160
+ if (this .buildNumber != 0 ) {
161
+ Date elapsedTimeComparison = getElapsedTime (true );
162
+ if (elapsedTimeComparison != null )
163
+ jsonObject .put ("ElapsedTimeComparison" , elapsedTimeComparison );
157
164
}
165
+
166
+ Date elapsedTime = getElapsedTime (false );
167
+ if (elapsedTime != null )
168
+ jsonObject .put ("ElapsedTime" , elapsedTime );
158
169
jsonObject .put ("ResponseCode" , (sr .isResponseCodeOK () &&
159
170
StringUtils .isNumeric (sr .getResponseCode ())) ?
160
171
sr .getResponseCode () : context .getParameter (ES_STATUS_CODE ));
@@ -173,12 +184,14 @@ public Map<String, Object> getElasticData(SampleResult sr, BackendListenerContex
173
184
assertionArray [i ] = assertionMap ;
174
185
i ++;
175
186
}
187
+ jsonObject .put ("AssertionResults" , assertionArray );
176
188
}
177
189
178
190
return jsonObject ;
179
191
}
180
192
181
- public Date getElapsedDate () {
193
+ public Date getElapsedTime (boolean forBuildComparison ) {
194
+ String sElapsed ;
182
195
//Calculate the elapsed time (Starting from midnight on a random day - enables us to compare of two loads over their duration)
183
196
long start = JMeterContextService .getTestStartTime ();
184
197
long end = System .currentTimeMillis ();
@@ -190,10 +203,20 @@ public Date getElapsedDate() {
190
203
cal .set (Calendar .HOUR_OF_DAY , 0 ); //If there is more than an hour of data, the number of minutes/seconds will increment this
191
204
cal .set (Calendar .MINUTE , (int ) minutes );
192
205
cal .set (Calendar .SECOND , (int ) seconds );
193
- String sElapsed = String .format ("2017-01-01 %02d:%02d:%02d" ,
194
- cal .get (Calendar .HOUR_OF_DAY ),
195
- cal .get (Calendar .MINUTE ),
196
- cal .get (Calendar .SECOND ));
206
+
207
+ if (forBuildComparison ) {
208
+ sElapsed = String .format ("2017-01-01 %02d:%02d:%02d" ,
209
+ cal .get (Calendar .HOUR_OF_DAY ),
210
+ cal .get (Calendar .MINUTE ),
211
+ cal .get (Calendar .SECOND ));
212
+ } else {
213
+ sElapsed = String .format ("%s %02d:%02d:%02d" ,
214
+ DateTimeFormatter .ofPattern ("yyyy-mm-dd" ).format (LocalDateTime .now ()),
215
+ cal .get (Calendar .HOUR_OF_DAY ),
216
+ cal .get (Calendar .MINUTE ),
217
+ cal .get (Calendar .SECOND ));
218
+ }
219
+
197
220
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-mm-dd HH:mm:ss" );
198
221
try {
199
222
return formatter .parse (sElapsed );
0 commit comments