Trace Redaction - Loosen final flush restriction
Final flush can be: success, unknown, fail.
Before the check was: fail if final_flush != success. This caused
unwanted failures, so this changes the check to be: fail if
final_flush = fail.
Change-Id: I448e138b677ee2c1a9f3945b1cb4c18bb7884a44
diff --git a/src/trace_redaction/verify_integrity.cc b/src/trace_redaction/verify_integrity.cc
index 19619de..0927432 100644
--- a/src/trace_redaction/verify_integrity.cc
+++ b/src/trace_redaction/verify_integrity.cc
@@ -133,10 +133,11 @@
}
if (trace_stats.has_final_flush_outcome() &&
- trace_stats.final_flush_outcome() !=
- protos::pbzero::TraceStats::FINAL_FLUSH_SUCCEEDED) {
+ trace_stats.final_flush_outcome() ==
+ protos::pbzero::TraceStats::FINAL_FLUSH_FAILED) {
return base::ErrStatus(
- "VerifyIntegrity: detected TraceStats final flush failed.");
+ "VerifyIntegrity: TraceStats final_flush_outcome is "
+ "FINAL_FLUSH_FAILED.");
}
for (auto it = trace_stats.buffer_stats(); it; ++it) {
diff --git a/src/trace_redaction/verify_integrity_unittest.cc b/src/trace_redaction/verify_integrity_unittest.cc
index 1c372eb..9ca8bfe 100644
--- a/src/trace_redaction/verify_integrity_unittest.cc
+++ b/src/trace_redaction/verify_integrity_unittest.cc
@@ -232,8 +232,38 @@
ASSERT_OK(Verify(packet));
}
-// TODO(vaage): Write tests for final_flush_outcome. Type-compile errors were
-// getting in the way of moving forward.
+TEST_F(VerifyIntegrityUnitTest, ValidPacketFinalFlushSucceeded) {
+ protos::gen::TracePacket packet;
+
+ packet.set_trusted_uid(kValid);
+
+ packet.mutable_trace_stats()->set_final_flush_outcome(
+ protos::gen::TraceStats::FINAL_FLUSH_SUCCEEDED);
+
+ ASSERT_OK(Verify(packet));
+}
+
+TEST_F(VerifyIntegrityUnitTest, ValidPacketFinalFlushUnspecified) {
+ protos::gen::TracePacket packet;
+
+ packet.set_trusted_uid(kValid);
+
+ packet.mutable_trace_stats()->set_final_flush_outcome(
+ protos::gen::TraceStats::FINAL_FLUSH_UNSPECIFIED);
+
+ ASSERT_OK(Verify(packet));
+}
+
+TEST_F(VerifyIntegrityUnitTest, InvalidPacketFinalFlushFailed) {
+ protos::gen::TracePacket packet;
+
+ packet.set_trusted_uid(kValid);
+
+ packet.mutable_trace_stats()->set_final_flush_outcome(
+ protos::gen::TraceStats::FINAL_FLUSH_FAILED);
+
+ ASSERT_FALSE(Verify(packet).ok());
+}
TEST_F(VerifyIntegrityUnitTest, InvalidPacketBufferStatsPatchesFailed) {
protos::gen::TracePacket packet;