Skip to content

Commit

Permalink
#829 PR fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Piotr Adamczyk committed Jul 2, 2020
1 parent 45b4629 commit d911dc5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 38 deletions.
58 changes: 23 additions & 35 deletions test_runner/src/main/kotlin/ftl/json/SavedMatrix.kt
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,12 @@ class SavedMatrix(matrix: TestMatrix) {
billableVirtualMinutes = 0
billablePhysicalMinutes = 0
outcome = success
if (matrix.testExecutions == null) return

updateFinishedMatrixData(matrix)
}

private fun updateFinishedMatrixData(matrix: TestMatrix) {
val testExecutionsData = matrix.testExecutions.createTestExecutionDataListAsync()
val testExecutionsData = matrix.testExecutions?.createTestExecutionDataListAsync() ?: return
val summedTestSuiteOverviewData =
testExecutionsData
.prepareForJUnitResult()
Expand All @@ -101,18 +100,22 @@ class SavedMatrix(matrix: TestMatrix) {

testExecutionsData
.forEach {
val stepOutcome = GcToolResults.getExecutionResult(it.testExecution).outcome
updatedFinishedInfo(
stepOutcome = stepOutcome,
flakyOutcome = stepOutcome.summary != it.step.outcome.summary,
testSuiteOverviewData = summedTestSuiteOverviewData,
isRoboTests = it.testExecution.testSpecification?.androidRoboTest != null,
isVirtualDevice = isVirtualDevice(
device = it.testExecution.environment.androidDevice,
projectId = matrix.projectId.orEmpty()
),
billableMinutes = it.testExecution.getBillableMinutes()
)
with(GcToolResults.getExecutionResult(it.testExecution).outcome) {
updateOutcome(it.step.outcome?.summary != this?.summary)
updateOutcomeDetails(
testSuiteOverviewData = summedTestSuiteOverviewData,
isRoboTests = it.testExecution.testSpecification?.androidRoboTest != null
)
}
it.testExecution.getBillableMinutes()?.let { billableMinutes ->
updateBillableMinutes(
billableMinutes = billableMinutes,
isVirtualDevice = isVirtualDevice(
it.testExecution.environment.androidDevice,
matrix.projectId.orEmpty()
)
)
}
}
}

Expand All @@ -123,28 +126,14 @@ class SavedMatrix(matrix: TestMatrix) {
// sometimes testExecutionStep is present and testTiming is null
val testTimeSeconds =
GcToolResults.getStepResult(toolResultsStep).testExecutionStep?.testTiming?.testProcessDuration?.seconds
?: return@run null
?: return null
val testTimeout = timeoutToSeconds(testSpecification?.testTimeout ?: "0s")

// if overall test duration time is higher then testTimeout flank should calculate billable minutes for testTimeout
billableMinutes(min(testTimeSeconds, testTimeout))
}

private fun updatedFinishedInfo(
stepOutcome: Outcome?,
flakyOutcome: Boolean,
testSuiteOverviewData: TestSuiteOverviewData?,
isRoboTests: Boolean,
isVirtualDevice: Boolean,
billableMinutes: Long?
) {
updateOutcome(stepOutcome, flakyOutcome)
updateOutcomeDetails(stepOutcome, testSuiteOverviewData, isRoboTests)
billableMinutes?.let { updateBillableMinutes(it, isVirtualDevice) }
}

private fun updateOutcome(
stepOutcome: Outcome?,
private fun Outcome?.updateOutcome(
flakyOutcome: Boolean
) {
outcome = when {
Expand All @@ -153,17 +142,16 @@ class SavedMatrix(matrix: TestMatrix) {
// if the matrix outcome is already set to failure then we can ignore the other step outcomes.
// inconclusive is treated as a failure
outcome == failure || outcome == inconclusive -> return
outcome == flaky -> stepOutcome?.summary?.takeIf { it == failure || it == inconclusive }
else -> stepOutcome?.summary
outcome == flaky -> this?.summary?.takeIf { it == failure || it == inconclusive }
else -> this?.summary
} ?: outcome
}

private fun updateOutcomeDetails(
stepOutcome: Outcome?,
private fun Outcome?.updateOutcomeDetails(
testSuiteOverviewData: TestSuiteOverviewData?,
isRoboTests: Boolean
) {
outcomeDetails = if (isRoboTests) "Robo test" else (stepOutcome?.getDetails(testSuiteOverviewData) ?: "---")
outcomeDetails = if (isRoboTests) "Robo test" else (this?.getDetails(testSuiteOverviewData) ?: "---")
}

private fun updateBillableMinutes(billableMinutes: Long, isVirtualDevice: Boolean) {
Expand Down
2 changes: 1 addition & 1 deletion test_runner/src/main/kotlin/ftl/util/LogTableBuilder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.google.common.annotations.VisibleForTesting
data class TableColumn(
val header: String,
val data: List<String>,
val columnSize: Int = (data + header).maxBy { it.length }!!.length + DEFAULT_COLUMN_PADDING,
val columnSize: Int = ((data + header).maxBy { it.length }?.length ?: 0) + DEFAULT_COLUMN_PADDING,
val dataColor: List<SystemOutColor> = listOf()
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ gcloud:
- /sdcard/
num-flaky-test-attempts: 3
use-orchestrator: false
# num-uniform-shards: 3

flank:
disable-sharding: false
max-test-shards: 4
Expand Down

0 comments on commit d911dc5

Please sign in to comment.