New metric for empty coverage (#3610)

* add

* Adding coverage output to every iteration of coverage task.

* Adding metric for empty coverage.

* Fixing.

* Fixing.
This commit is contained in:
Noah McGregor Harper 2023-10-31 13:56:29 -07:00 committed by GitHub
parent 902557f78c
commit ca6f3cdfd9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -28,7 +28,9 @@ use onefuzz_file_format::coverage::{
};
use onefuzz_result::job_result::JobResultData;
use onefuzz_result::job_result::{JobResultSender, TaskJobResultClient};
use onefuzz_telemetry::{event, warn, Event::coverage_data, Event::coverage_failed, EventData};
use onefuzz_telemetry::{
event, warn, Event::coverage_data, Event::coverage_empty, Event::coverage_failed, EventData,
};
use storage_queue::{Message, QueueClient};
use tokio::fs;
use tokio::sync::RwLock;
@ -148,7 +150,6 @@ impl CoverageTask {
info!("report initial coverage");
context.report_coverage_stats().await;
context.heartbeat.alive();
for dir in &self.config.readonly_inputs {
@ -174,7 +175,6 @@ impl CoverageTask {
context.save_and_sync_coverage().await?;
}
info!("report coverage");
context.report_coverage_stats().await;
context.heartbeat.alive();
@ -308,6 +308,11 @@ impl<'a> TaskContext<'a> {
async fn try_record_input(&mut self, input: &Path) -> Result<()> {
let coverage = self.record_impl(input).await?;
let coverage_stats = CoverageStats::new(&coverage);
if coverage_stats.covered == 0 {
event!(coverage_empty; EventData::Path = input.display().to_string());
metric!(coverage_empty; 1.0; EventData::Path = input.display().to_string());
}
let mut self_coverage = RwLock::write(&self.coverage).await;
self_coverage.merge(&coverage);
Ok(())

View File

@ -76,6 +76,7 @@ pub enum Event {
task_start,
coverage_data,
coverage_failed,
coverage_empty,
new_result,
new_crashdump,
new_coverage,
@ -94,6 +95,7 @@ impl Event {
Self::task_start => "task_start",
Self::coverage_data => "coverage_data",
Self::coverage_failed => "coverage_failed",
Self::coverage_empty => "coverage_empty",
Self::new_coverage => "new_coverage",
Self::new_crashdump => "new_crashdump",
Self::new_result => "new_result",