Skip to content

Commit

Permalink
Fix NPE when generate xml file (#116)
Browse files Browse the repository at this point in the history
* Fix NPE when generate xml file

* update data type

* Update AndroidTestUnit.java

* Update XmlBuilder.java
  • Loading branch information
zhou9584 committed Nov 4, 2022
1 parent 335b03b commit ab5ba0c
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private Element buildTestSuite(Document document, TestTask testTask, DeviceTestT
testSuite.setAttribute(ATTR_NAME, testTask.getTestSuite());
testSuite.setAttribute(ATTR_TESTS, String.valueOf(deviceTestTask.getTotalCount()));
testSuite.setAttribute(ATTR_FAILURES, String.valueOf(deviceTestTask.getFailCount()));
testSuite.setAttribute(ATTR_TIME, Double.toString((double) (deviceTestTask.getTestEndTimeMillis() - deviceTestTask.getTestStartTimeMillis()) / 1000.f));
testSuite.setAttribute(ATTR_TIME, deviceTestTask.getDisplayTotalTime());
testSuite.setAttribute(TIMESTAMP, DateUtil.appCenterFormat2.format(new Date(deviceTestTask.getTestStartTimeMillis())));
testSuite.setAttribute(HOSTNAME, InetAddress.getLocalHost().getHostName());
if (deviceTestTask.getTestUnitList() != null) {
Expand All @@ -84,7 +84,7 @@ private Element buildTestCase(Document document, AndroidTestUnit unitTest) {
Element testCase = document.createElement(TESTCASE);
testCase.setAttribute(ATTR_NAME, unitTest.getTestName());
testCase.setAttribute(ATTR_CLASSNAME, unitTest.getTestedClass());
testCase.setAttribute(ATTR_TIME, Double.toString((double) (unitTest.getEndTimeMillis() - unitTest.getStartTimeMillis()) / 1000.f));
testCase.setAttribute(ATTR_TIME, unitTest.getDisplaySpentTime());
if (!unitTest.isSuccess()) {
Element failure = document.createElement(FAILURE);
failure.setTextContent(unitTest.getStack());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,9 +228,6 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult
logEnter("testEnded", testIdentifier.getDisplayName());
ongoingTestUnit.setStatusCode(AndroidTestUnit.StatusCodes.OK);
ongoingTestUnit.setSuccess(true);

ongoingTestUnit.setEndTimeMillis(System.currentTimeMillis());
ongoingTestUnit.setRelEndTimeInVideo(ongoingTestUnit.getEndTimeMillis() - recordingStartTimeMillis);
} else {

Throwable throwable;
Expand All @@ -246,6 +243,8 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult
deviceTestResult.addNewTimeTag(ongoingTestUnit.getTitle() + ".fail", System.currentTimeMillis() - recordingStartTimeMillis);
deviceTestResult.oneMoreFailure();
}
ongoingTestUnit.setEndTimeMillis(System.currentTimeMillis());
ongoingTestUnit.setRelEndTimeInVideo(ongoingTestUnit.getEndTimeMillis() - recordingStartTimeMillis);
deviceTestResult.addNewTimeTag(ongoingTestUnit.getTitle() + ".end", System.currentTimeMillis() - recordingStartTimeMillis);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public long runMonkeyTestOnce(DeviceInfo deviceInfo, DeviceTestTask deviceTestTa
}

logger.info(ongoingMonkeyTest.getTitle() + ".end");

ongoingMonkeyTest.setEndTimeMillis(System.currentTimeMillis());
deviceInfo.setRunningTestName(null);
deviceTestTask.addNewTestUnit(ongoingMonkeyTest);
deviceTestTask.addNewTimeTag(ongoingMonkeyTest.getTitle() + ".end", System.currentTimeMillis() - recordingStartTimeMillis);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.img.gif.AnimatedGifEncoder;
import com.microsoft.hydralab.agent.runner.appium.AppiumRunner;
import com.microsoft.hydralab.common.entity.common.AndroidTestUnit;
import com.microsoft.hydralab.common.entity.common.DeviceInfo;
import com.microsoft.hydralab.common.entity.common.DeviceTestTask;
import com.microsoft.hydralab.common.entity.common.TestTask;
import com.microsoft.hydralab.common.logger.LogCollector;
import com.microsoft.hydralab.agent.runner.appium.AppiumRunner;
import com.microsoft.hydralab.common.screen.ScreenRecorder;
import org.slf4j.Logger;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -70,7 +70,7 @@ protected File runAndGetGif(File appiumJarFile, String appiumCommand, DeviceInfo
ioException.printStackTrace();
}
}), reportLogger);

deviceTestTask.setTestStartTimeMillis(System.currentTimeMillis());
deviceManager.runAppiumMonkey(deviceInfo, pkgName, testTask.getMaxStepCount(), reportLogger);

deviceScreenRecorder.finishRecording();
Expand All @@ -94,11 +94,11 @@ protected File runAndGetGif(File appiumJarFile, String appiumCommand, DeviceInfo

// Test finish
reportLogger.info(ongoingMonkeyTest.getTitle() + ".end");

ongoingMonkeyTest.setEndTimeMillis(System.currentTimeMillis());
deviceInfo.setRunningTestName(null);
deviceTestTask.addNewTestUnit(ongoingMonkeyTest);
deviceTestTask.addNewTimeTag(ongoingMonkeyTest.getTitle() + ".end", System.currentTimeMillis() - recordingStartTimeMillis);

deviceTestTask.onTestEnded();
return gifFile;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ public void runSmartTestOnce(int i, DeviceInfo deviceInfo, DeviceTestTask device
ongoingSmartTest.setStatusCode(AndroidTestUnit.StatusCodes.OK);
ongoingSmartTest.setSuccess(true);
}
ongoingSmartTest.setEndTimeMillis(System.currentTimeMillis());
logger.info(ongoingSmartTest.getTitle() + ".end");
deviceInfo.setRunningTestName(null);
deviceTestTask.addNewTestUnit(ongoingSmartTest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.img.gif.AnimatedGifEncoder;
import com.microsoft.hydralab.agent.runner.appium.AppiumRunner;
import com.microsoft.hydralab.common.entity.center.TestTaskSpec;
import com.microsoft.hydralab.common.entity.common.AndroidTestUnit;
import com.microsoft.hydralab.common.entity.common.DeviceInfo;
import com.microsoft.hydralab.common.entity.common.DeviceTestTask;
import com.microsoft.hydralab.common.entity.common.TestTask;
import com.microsoft.hydralab.common.logger.LogCollector;
import com.microsoft.hydralab.agent.runner.appium.AppiumRunner;
import com.microsoft.hydralab.common.screen.ScreenRecorder;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Value;
Expand Down Expand Up @@ -78,6 +78,7 @@ protected File runAndGetGif(File jsonFile, String unusedSuiteName, DeviceInfo de

// Run Test
try {
deviceTestTask.setTestStartTimeMillis(System.currentTimeMillis());
deviceManager.runAppiumT2CTest(deviceInfo, jsonFile, reportLogger);
ongoingTest.setStatusCode(AndroidTestUnit.StatusCodes.OK);
ongoingTest.setSuccess(true);
Expand All @@ -91,7 +92,7 @@ protected File runAndGetGif(File jsonFile, String unusedSuiteName, DeviceInfo de
deviceTestTask.addNewTimeTagBeforeLast(ongoingTest.getTitle() + ".fail", System.currentTimeMillis() - recordingStartTimeMillis);
deviceTestTask.oneMoreFailure();
}

ongoingTest.setEndTimeMillis(System.currentTimeMillis());
deviceScreenRecorder.finishRecording();
logCollector.stopAndAnalyse();
// Test finish
Expand All @@ -100,7 +101,7 @@ protected File runAndGetGif(File jsonFile, String unusedSuiteName, DeviceInfo de
deviceInfo.setRunningTestName(null);
deviceTestTask.addNewTestUnit(ongoingTest);
deviceTestTask.addNewTimeTag(ongoingTest.getTitle() + ".end", System.currentTimeMillis() - recordingStartTimeMillis);

deviceTestTask.onTestEnded();
return gifFile;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ public class AndroidTestUnit {
protected int numtests;
protected int statusCode;

protected Long startTimeMillis;
protected Long endTimeMillis;
protected Long relStartTimeInVideo;
protected Long relEndTimeInVideo;
protected long startTimeMillis;
protected long endTimeMillis;
protected long relStartTimeInVideo;
protected long relEndTimeInVideo;

protected String testedClass;
protected String ownerEmail;
Expand Down Expand Up @@ -112,29 +112,17 @@ public String getStatusDesc() {

@Transient
public String getDisplaySpentTime() {
if (endTimeMillis == null) {
return null;
}
if (startTimeMillis == null) {
return null;
}
float second = (endTimeMillis - startTimeMillis) / 1000f;
return String.format("%.2fs", second);
}

@Transient
public String getDisplayRelStartTimeInVideo() {
if (relStartTimeInVideo == null) {
return null;
}
return DateUtil.mmssFormat.format(new Date(relStartTimeInVideo));
}

@Transient
public String getDisplayRelEndTimeInVideo() {
if (relEndTimeInVideo == null) {
return null;
}
return DateUtil.mmssFormat.format(new Date(relEndTimeInVideo));
}

Expand Down

0 comments on commit ab5ba0c

Please sign in to comment.