Skip to content

Commit b4a5819

Browse files
issue_125 change cucumber test run duration calculation (#80)
* issue_125 change cucumber test run duration calculation Co-authored-by: runetsK <[email protected]>
1 parent 89c271b commit b4a5819

File tree

6 files changed

+45
-4
lines changed

6 files changed

+45
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# CHANGELOG
22

3+
## 1.0.4 (2020-11-02)
4+
5+
Bugfixes:
6+
- Changed testRun start and finish time calculation for Cucumber version 4.3.0+ -> [View Issue](https://github.com/aquality-automation/aquality-tracking/issues/125)
7+
38
## 1.0.3 (2020-08-27)
49

510
Features:

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<groupId>unifi_reporting_api</groupId>
77
<artifactId>api</artifactId>
88
<packaging>war</packaging>
9-
<version>1.0.3</version>
9+
<version>1.0.4</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/java/main/model/db/imports/ImportHandlers/Cucumber.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main.model.db.imports.ImportHandlers;
22

33
import main.exceptions.AqualityException;
4+
import main.model.db.imports.TestRunTiming;
45
import main.model.dto.project.TestDto;
56
import main.model.dto.project.TestResultDto;
67
import main.model.dto.project.TestRunDto;
@@ -28,6 +29,7 @@ public class Cucumber extends Handler{
2829
private Date dateCounter;
2930
private boolean previousWasBackground = false;
3031
private TestDto currentTest;
32+
private List<TestRunTiming> timings = new ArrayList<>();
3133

3234
public Cucumber(@NotNull File file, Date finishTime) throws AqualityException {
3335
super();
@@ -45,9 +47,13 @@ private void parse() {
4547

4648
private void handleTestRun() {
4749
testRun = new TestRunDto();
48-
testRun.setFinish_time(dateCounter);
49-
features.forEach(this::handleFeature);
5050
testRun.setStart_time(dateCounter);
51+
features.forEach(this::handleFeature);
52+
testRun.setFinish_time(dateCounter);
53+
54+
if(!timings.isEmpty()){
55+
calculateTimings();
56+
}
5157
}
5258

5359
private void handleFeature(@NotNull FeatureDto feature) {
@@ -57,6 +63,11 @@ private void handleFeature(@NotNull FeatureDto feature) {
5763
}
5864
}
5965

66+
public void calculateTimings(){
67+
testRun.setStart_time(timings.stream().min(Comparator.comparing(TestRunTiming::getStart)).get().getStart());
68+
testRun.setFinish_time(timings.stream().max(Comparator.comparing(TestRunTiming::getFinish)).get().getFinish());
69+
}
70+
6071
private void handleScenario(@NotNull ScenarioDto scenario) {
6172
String type = scenario.getType()==null ? scenario.getKeyword().toLowerCase() :scenario.getType();
6273
if(Objects.equals(type, "background")){
@@ -82,6 +93,11 @@ private void handleScenario(@NotNull ScenarioDto scenario) {
8293
if(scenario.getAfter() != null) scenario.getAfter().forEach(this::handleStep);
8394
dateCounter = dateUtils.removeMS(dateCounter, testTime);
8495
currentResult.setStart_date(dateCounter);
96+
97+
if(scenario.getStart_timestamp() != null){
98+
timings.add(getTestRunTiming(scenario));
99+
}
100+
85101
testTime = 0;
86102
tests.add(currentTest);
87103
results.add(currentResult);
@@ -102,6 +118,13 @@ private Integer getStepDuration(@NotNull StepDto step) {
102118
return (0);
103119
}
104120

121+
private TestRunTiming getTestRunTiming(@NotNull ScenarioDto scenario){
122+
TestRunTiming testRunTiming = new TestRunTiming();
123+
testRunTiming.setStart(scenario.getStart_timestamp());
124+
testRunTiming.setFinish(Date.from(scenario.getStart_timestamp().toInstant().plusMillis(testTime)));
125+
return testRunTiming;
126+
}
127+
105128
private void handleStep(@NotNull StepDto step) {
106129
if(step.getName() != null){
107130
currentTest.setBody((currentTest.getBody() == null ? "" : currentTest.getBody() + "\r\n") + step.getKeyword() + " " + step.getName());
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package main.model.db.imports;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
7+
@Data
8+
public class TestRunTiming {
9+
private Date start;
10+
private Date finish;
11+
}

src/main/java/main/utils/TestNGCucumberJsonParser/ScenarioDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import lombok.Data;
44

5+
import java.util.Date;
56
import java.util.List;
67

78
@Data
89
public class ScenarioDto {
10+
private Date start_timestamp;
911
private String id;
1012
private String name;
1113
private String keyword;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"start_time":1262390386947,"finish_time":1262390400000}
1+
{"start_time":1262390400000,"finish_time":1262390386947}

0 commit comments

Comments
 (0)