aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakan Lindh <hlindh@google.com>2017-08-17 16:56:26 -0700
committerHakan Lindh <hlindh@google.com>2017-08-18 12:40:15 -0700
commit96ec31350507b777efc0853cc44f405e22330819 (patch)
tree38076df1a3824d3acbd78d496067c8a30170df1c
parent3e045413b7da767b7e803ae12d02a68458548653 (diff)
downloadcontrib-96ec31350507b777efc0853cc44f405e22330819.tar.gz
Fix for Loopback Stress test nullpointer exception
Plugs a nullpointer exception that occurs if an individual test iteration times out. Also added check to see if result data is good before printing it to CSV file Bug: 64715529 Change-Id: I4c5aaecd32b24fca3cb684f1a2b8b1adfcdb3287 Fixes: 64715529 Test: tradefed.sh run google/test/framework/media/audio-loopback-stress --iterations 10 -s 84B0115625000809
-rw-r--r--src/com/android/media/tests/AudioLoopbackTestHelper.java70
1 files changed, 45 insertions, 25 deletions
diff --git a/src/com/android/media/tests/AudioLoopbackTestHelper.java b/src/com/android/media/tests/AudioLoopbackTestHelper.java
index c9e058a..83e4a30 100644
--- a/src/com/android/media/tests/AudioLoopbackTestHelper.java
+++ b/src/com/android/media/tests/AudioLoopbackTestHelper.java
@@ -100,10 +100,10 @@ public class AudioLoopbackTestHelper {
private String mFailureReason = null;
// Optional
- private Float mPeriodConfidence = Float.valueOf(0.0f);
- private Float mRms = Float.valueOf(0.0f);
- private Float mRmsAverage = Float.valueOf(0.0f);
- private Integer mBblockSize = Integer.valueOf(0);
+ private Float mPeriodConfidence = null;
+ private Float mRms = null;
+ private Float mRmsAverage = null;
+ private Integer mBblockSize = null;
public float getLatency() {
return mLatencyMs.floatValue();
@@ -113,6 +113,10 @@ public class AudioLoopbackTestHelper {
this.mLatencyMs = Float.valueOf(latencyMs);
}
+ public boolean hasLatency() {
+ return mLatencyMs != null;
+ }
+
public float getConfidence() {
return mLatencyConfidence.floatValue();
}
@@ -121,6 +125,10 @@ public class AudioLoopbackTestHelper {
this.mLatencyConfidence = Float.valueOf(latencyConfidence);
}
+ public boolean hasConfidence() {
+ return mLatencyConfidence != null;
+ }
+
public float getPeriodConfidence() {
return mPeriodConfidence.floatValue();
}
@@ -129,6 +137,10 @@ public class AudioLoopbackTestHelper {
this.mPeriodConfidence = Float.valueOf(periodConfidence);
}
+ public boolean hasPeriodConfidence() {
+ return mPeriodConfidence != null;
+ }
+
public float getRMS() {
return mRms.floatValue();
}
@@ -137,6 +149,10 @@ public class AudioLoopbackTestHelper {
this.mRms = Float.valueOf(rms);
}
+ public boolean hasRMS() {
+ return mRms != null;
+ }
+
public float getRMSAverage() {
return mRmsAverage.floatValue();
}
@@ -145,6 +161,10 @@ public class AudioLoopbackTestHelper {
this.mRmsAverage = Float.valueOf(rmsAverage);
}
+ public boolean hasRMSAverage() {
+ return mRmsAverage != null;
+ }
+
public int getAudioLevel() {
return mAudioLevel.intValue();
}
@@ -153,6 +173,10 @@ public class AudioLoopbackTestHelper {
this.mAudioLevel = Integer.valueOf(audioLevel);
}
+ public boolean hasAudioLevel() {
+ return mAudioLevel != null;
+ }
+
public int getBlockSize() {
return mBblockSize.intValue();
}
@@ -161,6 +185,10 @@ public class AudioLoopbackTestHelper {
this.mBblockSize = Integer.valueOf(blockSize);
}
+ public boolean hasBlockSize() {
+ return mBblockSize != null;
+ }
+
public int getIteration() {
return mIteration.intValue();
}
@@ -215,8 +243,8 @@ public class AudioLoopbackTestHelper {
public boolean hasBadResults() {
return hasTimedOut()
|| hasNoTestResults()
- || hasNoLatencyResult()
- || hasNoLatencyConfidence()
+ || !hasLatency()
+ || !hasConfidence()
|| mImageAnalyzerResult == Result.FAIL;
}
@@ -228,16 +256,8 @@ public class AudioLoopbackTestHelper {
return mLogs.containsKey(log);
}
- public boolean hasNoLatencyResult() {
- return mLatencyMs == null;
- }
-
- public boolean hasNoLatencyConfidence() {
- return mLatencyConfidence == null;
- }
-
public boolean hasNoTestResults() {
- return hasNoLatencyConfidence() && hasNoLatencyResult();
+ return !hasConfidence() && !hasLatency();
}
public static Comparator<ResultData> latencyComparator =
@@ -294,7 +314,7 @@ public class AudioLoopbackTestHelper {
mResultDictionaries.add(data.getIteration(), resultDictionary);
mAllResults.add(data);
- if (useImageAnalyzer) {
+ if (useImageAnalyzer && data.hasLogFile(LogFileType.GRAPH)) {
// Analyze captured screenshot to see if wave form is within reason
final String screenshot = data.getLogFile(LogFileType.GRAPH);
final Pair<Result, String> result = AudioLoopbackImageAnalyzer.analyzeImage(screenshot);
@@ -529,13 +549,13 @@ public class AudioLoopbackTestHelper {
sb.append(buildId).append(SEPARATOR);
sb.append(serialNumber).append(SEPARATOR);
sb.append(data.getIteration()).append(SEPARATOR);
- sb.append(data.getLatency()).append(SEPARATOR);
- sb.append(data.getConfidence()).append(SEPARATOR);
- sb.append(data.getPeriodConfidence()).append(SEPARATOR);
- sb.append(data.getBlockSize()).append(SEPARATOR);
- sb.append(data.getAudioLevel()).append(SEPARATOR);
- sb.append(data.getRMS()).append(SEPARATOR);
- sb.append(data.getRMSAverage()).append(SEPARATOR);
+ sb.append(data.hasLatency() ? data.getLatency() : "").append(SEPARATOR);
+ sb.append(data.hasConfidence() ? data.getConfidence() : "").append(SEPARATOR);
+ sb.append(data.hasPeriodConfidence() ? data.getPeriodConfidence() : "").append(SEPARATOR);
+ sb.append(data.hasBlockSize() ? data.getBlockSize() : "").append(SEPARATOR);
+ sb.append(data.hasAudioLevel() ? data.getAudioLevel() : "").append(SEPARATOR);
+ sb.append(data.hasRMS() ? data.getRMS() : "").append(SEPARATOR);
+ sb.append(data.hasRMSAverage() ? data.getRMSAverage() : "").append(SEPARATOR);
sb.append(data.getImageAnalyzerResult().name()).append(SEPARATOR);
sb.append(data.getFailureReason());
@@ -566,13 +586,13 @@ public class AudioLoopbackTestHelper {
continue;
}
- if (data.hasNoLatencyResult()) {
+ if (!data.hasLatency()) {
testWithoutLatencyResultCount++;
testNoData++;
continue;
}
- if (data.hasNoLatencyConfidence()) {
+ if (!data.hasConfidence()) {
testWithoutConfidenceResultCount++;
testNoData++;
continue;