mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-19 21:13:46 +00:00
add regression testing tasks (#664)
This commit is contained in:
@ -37,6 +37,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
* [proxy_created](#proxy_created)
|
||||
* [proxy_deleted](#proxy_deleted)
|
||||
* [proxy_failed](#proxy_failed)
|
||||
* [regression_reported](#regression_reported)
|
||||
* [scaleset_created](#scaleset_created)
|
||||
* [scaleset_deleted](#scaleset_deleted)
|
||||
* [scaleset_failed](#scaleset_failed)
|
||||
@ -168,7 +169,6 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"input_blob",
|
||||
"executable",
|
||||
"crash_type",
|
||||
"crash_site",
|
||||
@ -475,11 +475,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -1030,6 +1032,261 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
}
|
||||
```
|
||||
|
||||
### regression_reported
|
||||
|
||||
#### Example
|
||||
|
||||
```json
|
||||
{
|
||||
"container": "container-name",
|
||||
"filename": "example.json",
|
||||
"regression_report": {
|
||||
"crash_test_result": {
|
||||
"crash_report": {
|
||||
"asan_log": "example asan log",
|
||||
"call_stack": [
|
||||
"#0 line",
|
||||
"#1 line",
|
||||
"#2 line"
|
||||
],
|
||||
"call_stack_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"crash_site": "example crash site",
|
||||
"crash_type": "example crash report type",
|
||||
"executable": "fuzz.exe",
|
||||
"input_blob": {
|
||||
"account": "contoso-storage-account",
|
||||
"container": "crashes",
|
||||
"name": "input.txt"
|
||||
},
|
||||
"input_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"job_id": "00000000-0000-0000-0000-000000000000",
|
||||
"scariness_description": "example-scariness",
|
||||
"scariness_score": 10,
|
||||
"task_id": "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
},
|
||||
"original_crash_test_result": {
|
||||
"crash_report": {
|
||||
"asan_log": "example asan log",
|
||||
"call_stack": [
|
||||
"#0 line",
|
||||
"#1 line",
|
||||
"#2 line"
|
||||
],
|
||||
"call_stack_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"crash_site": "example crash site",
|
||||
"crash_type": "example crash report type",
|
||||
"executable": "fuzz.exe",
|
||||
"input_blob": {
|
||||
"account": "contoso-storage-account",
|
||||
"container": "crashes",
|
||||
"name": "input.txt"
|
||||
},
|
||||
"input_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"job_id": "00000000-0000-0000-0000-000000000000",
|
||||
"scariness_description": "example-scariness",
|
||||
"scariness_score": 10,
|
||||
"task_id": "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"additionalProperties": false,
|
||||
"definitions": {
|
||||
"BlobRef": {
|
||||
"properties": {
|
||||
"account": {
|
||||
"title": "Account",
|
||||
"type": "string"
|
||||
},
|
||||
"container": {
|
||||
"title": "Container",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"title": "Name",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"account",
|
||||
"container",
|
||||
"name"
|
||||
],
|
||||
"title": "BlobRef",
|
||||
"type": "object"
|
||||
},
|
||||
"CrashTestResult": {
|
||||
"properties": {
|
||||
"crash_report": {
|
||||
"$ref": "#/definitions/Report"
|
||||
},
|
||||
"no_repro": {
|
||||
"$ref": "#/definitions/NoReproReport"
|
||||
}
|
||||
},
|
||||
"title": "CrashTestResult",
|
||||
"type": "object"
|
||||
},
|
||||
"NoReproReport": {
|
||||
"properties": {
|
||||
"error": {
|
||||
"title": "Error",
|
||||
"type": "string"
|
||||
},
|
||||
"executable": {
|
||||
"title": "Executable",
|
||||
"type": "string"
|
||||
},
|
||||
"input_blob": {
|
||||
"$ref": "#/definitions/BlobRef"
|
||||
},
|
||||
"input_sha256": {
|
||||
"title": "Input Sha256",
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"format": "uuid",
|
||||
"title": "Job Id",
|
||||
"type": "string"
|
||||
},
|
||||
"task_id": {
|
||||
"format": "uuid",
|
||||
"title": "Task Id",
|
||||
"type": "string"
|
||||
},
|
||||
"tries": {
|
||||
"title": "Tries",
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"input_sha256",
|
||||
"executable",
|
||||
"task_id",
|
||||
"job_id",
|
||||
"tries"
|
||||
],
|
||||
"title": "NoReproReport",
|
||||
"type": "object"
|
||||
},
|
||||
"RegressionReport": {
|
||||
"properties": {
|
||||
"crash_test_result": {
|
||||
"$ref": "#/definitions/CrashTestResult"
|
||||
},
|
||||
"original_crash_test_result": {
|
||||
"$ref": "#/definitions/CrashTestResult"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"crash_test_result"
|
||||
],
|
||||
"title": "RegressionReport",
|
||||
"type": "object"
|
||||
},
|
||||
"Report": {
|
||||
"properties": {
|
||||
"asan_log": {
|
||||
"title": "Asan Log",
|
||||
"type": "string"
|
||||
},
|
||||
"call_stack": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Call Stack",
|
||||
"type": "array"
|
||||
},
|
||||
"call_stack_sha256": {
|
||||
"title": "Call Stack Sha256",
|
||||
"type": "string"
|
||||
},
|
||||
"crash_site": {
|
||||
"title": "Crash Site",
|
||||
"type": "string"
|
||||
},
|
||||
"crash_type": {
|
||||
"title": "Crash Type",
|
||||
"type": "string"
|
||||
},
|
||||
"executable": {
|
||||
"title": "Executable",
|
||||
"type": "string"
|
||||
},
|
||||
"input_blob": {
|
||||
"$ref": "#/definitions/BlobRef"
|
||||
},
|
||||
"input_sha256": {
|
||||
"title": "Input Sha256",
|
||||
"type": "string"
|
||||
},
|
||||
"input_url": {
|
||||
"title": "Input Url",
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"format": "uuid",
|
||||
"title": "Job Id",
|
||||
"type": "string"
|
||||
},
|
||||
"scariness_description": {
|
||||
"title": "Scariness Description",
|
||||
"type": "string"
|
||||
},
|
||||
"scariness_score": {
|
||||
"title": "Scariness Score",
|
||||
"type": "integer"
|
||||
},
|
||||
"task_id": {
|
||||
"format": "uuid",
|
||||
"title": "Task Id",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"executable",
|
||||
"crash_type",
|
||||
"crash_site",
|
||||
"call_stack",
|
||||
"call_stack_sha256",
|
||||
"input_sha256",
|
||||
"task_id",
|
||||
"job_id"
|
||||
],
|
||||
"title": "Report",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"container": {
|
||||
"title": "Container",
|
||||
"type": "string"
|
||||
},
|
||||
"filename": {
|
||||
"title": "Filename",
|
||||
"type": "string"
|
||||
},
|
||||
"regression_report": {
|
||||
"$ref": "#/definitions/RegressionReport"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"regression_report",
|
||||
"container",
|
||||
"filename"
|
||||
],
|
||||
"title": "EventRegressionReported",
|
||||
"type": "object"
|
||||
}
|
||||
```
|
||||
|
||||
### scaleset_created
|
||||
|
||||
#### Example
|
||||
@ -1283,7 +1540,8 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
@ -1456,6 +1714,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -1554,11 +1819,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -1715,7 +1982,8 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
@ -1936,6 +2204,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -2034,11 +2309,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -2188,7 +2465,8 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
@ -2361,6 +2639,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -2459,11 +2744,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -2587,7 +2874,8 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
@ -2760,6 +3048,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -2872,11 +3167,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -3013,7 +3310,8 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
@ -3186,6 +3484,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -3284,11 +3589,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -3468,10 +3775,23 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"setup",
|
||||
"tools",
|
||||
"unique_inputs",
|
||||
"unique_reports"
|
||||
"unique_reports",
|
||||
"regression_reports"
|
||||
],
|
||||
"title": "ContainerType"
|
||||
},
|
||||
"CrashTestResult": {
|
||||
"properties": {
|
||||
"crash_report": {
|
||||
"$ref": "#/definitions/Report"
|
||||
},
|
||||
"no_repro": {
|
||||
"$ref": "#/definitions/NoReproReport"
|
||||
}
|
||||
},
|
||||
"title": "CrashTestResult",
|
||||
"type": "object"
|
||||
},
|
||||
"Error": {
|
||||
"properties": {
|
||||
"code": {
|
||||
@ -3821,6 +4141,29 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "EventProxyFailed",
|
||||
"type": "object"
|
||||
},
|
||||
"EventRegressionReported": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"container": {
|
||||
"title": "Container",
|
||||
"type": "string"
|
||||
},
|
||||
"filename": {
|
||||
"title": "Filename",
|
||||
"type": "string"
|
||||
},
|
||||
"regression_report": {
|
||||
"$ref": "#/definitions/RegressionReport"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"regression_report",
|
||||
"container",
|
||||
"filename"
|
||||
],
|
||||
"title": "EventRegressionReported",
|
||||
"type": "object"
|
||||
},
|
||||
"EventScalesetCreated": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
@ -4074,6 +4417,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"task_state_updated",
|
||||
"task_stopped",
|
||||
"crash_reported",
|
||||
"regression_reported",
|
||||
"file_added",
|
||||
"task_heartbeat",
|
||||
"node_heartbeat"
|
||||
@ -4129,6 +4473,48 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "JobTaskStopped",
|
||||
"type": "object"
|
||||
},
|
||||
"NoReproReport": {
|
||||
"properties": {
|
||||
"error": {
|
||||
"title": "Error",
|
||||
"type": "string"
|
||||
},
|
||||
"executable": {
|
||||
"title": "Executable",
|
||||
"type": "string"
|
||||
},
|
||||
"input_blob": {
|
||||
"$ref": "#/definitions/BlobRef"
|
||||
},
|
||||
"input_sha256": {
|
||||
"title": "Input Sha256",
|
||||
"type": "string"
|
||||
},
|
||||
"job_id": {
|
||||
"format": "uuid",
|
||||
"title": "Job Id",
|
||||
"type": "string"
|
||||
},
|
||||
"task_id": {
|
||||
"format": "uuid",
|
||||
"title": "Task Id",
|
||||
"type": "string"
|
||||
},
|
||||
"tries": {
|
||||
"title": "Tries",
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"input_sha256",
|
||||
"executable",
|
||||
"task_id",
|
||||
"job_id",
|
||||
"tries"
|
||||
],
|
||||
"title": "NoReproReport",
|
||||
"type": "object"
|
||||
},
|
||||
"NodeState": {
|
||||
"description": "An enumeration.",
|
||||
"enum": [
|
||||
@ -4152,6 +4538,21 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
],
|
||||
"title": "OS"
|
||||
},
|
||||
"RegressionReport": {
|
||||
"properties": {
|
||||
"crash_test_result": {
|
||||
"$ref": "#/definitions/CrashTestResult"
|
||||
},
|
||||
"original_crash_test_result": {
|
||||
"$ref": "#/definitions/CrashTestResult"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"crash_test_result"
|
||||
],
|
||||
"title": "RegressionReport",
|
||||
"type": "object"
|
||||
},
|
||||
"Report": {
|
||||
"properties": {
|
||||
"asan_log": {
|
||||
@ -4212,7 +4613,6 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"input_blob",
|
||||
"executable",
|
||||
"crash_type",
|
||||
"crash_site",
|
||||
@ -4394,6 +4794,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"title": "Rename Output",
|
||||
"type": "boolean"
|
||||
},
|
||||
"report_list": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Report List",
|
||||
"type": "array"
|
||||
},
|
||||
"stats_file": {
|
||||
"title": "Stats File",
|
||||
"type": "string"
|
||||
@ -4506,11 +4913,13 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
"libfuzzer_coverage",
|
||||
"libfuzzer_crash_report",
|
||||
"libfuzzer_merge",
|
||||
"libfuzzer_regression",
|
||||
"generic_analysis",
|
||||
"generic_supervisor",
|
||||
"generic_merge",
|
||||
"generic_generator",
|
||||
"generic_crash_report"
|
||||
"generic_crash_report",
|
||||
"generic_regression"
|
||||
],
|
||||
"title": "TaskType"
|
||||
},
|
||||
@ -4638,6 +5047,9 @@ Each event will be submitted via HTTP POST to the user provided URL.
|
||||
{
|
||||
"$ref": "#/definitions/EventCrashReported"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/EventRegressionReported"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/EventFileAdded"
|
||||
}
|
||||
|
Reference in New Issue
Block a user