33import java .net .InetAddress ;
44import java .text .ParseException ;
55import java .text .SimpleDateFormat ;
6+ import java .time .LocalDate ;
7+ import java .time .LocalDateTime ;
8+ import java .time .format .DateTimeFormatter ;
69import java .util .Calendar ;
710import java .util .Date ;
811import java .util .HashMap ;
@@ -151,10 +154,18 @@ public Map<String, Object> getElasticData(SampleResult sr, BackendListenerContex
151154 jsonObject .put ("URL" , sr .getURL ());
152155 jsonObject .put ("Timestamp" , sdf .format (new Date (sr .getTimeStamp ())));
153156 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 );
157164 }
165+
166+ Date elapsedTime = getElapsedTime (false );
167+ if (elapsedTime != null )
168+ jsonObject .put ("ElapsedTime" , elapsedTime );
158169 jsonObject .put ("ResponseCode" , (sr .isResponseCodeOK () &&
159170 StringUtils .isNumeric (sr .getResponseCode ())) ?
160171 sr .getResponseCode () : context .getParameter (ES_STATUS_CODE ));
@@ -173,12 +184,14 @@ public Map<String, Object> getElasticData(SampleResult sr, BackendListenerContex
173184 assertionArray [i ] = assertionMap ;
174185 i ++;
175186 }
187+ jsonObject .put ("AssertionResults" , assertionArray );
176188 }
177189
178190 return jsonObject ;
179191 }
180192
181- public Date getElapsedDate () {
193+ public Date getElapsedTime (boolean forBuildComparison ) {
194+ String sElapsed ;
182195 //Calculate the elapsed time (Starting from midnight on a random day - enables us to compare of two loads over their duration)
183196 long start = JMeterContextService .getTestStartTime ();
184197 long end = System .currentTimeMillis ();
@@ -190,10 +203,20 @@ public Date getElapsedDate() {
190203 cal .set (Calendar .HOUR_OF_DAY , 0 ); //If there is more than an hour of data, the number of minutes/seconds will increment this
191204 cal .set (Calendar .MINUTE , (int ) minutes );
192205 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+
197220 SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-mm-dd HH:mm:ss" );
198221 try {
199222 return formatter .parse (sElapsed );
0 commit comments