summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CC/test/EXPRESSIONS127
-rw-r--r--CC/test/RULES16
-rw-r--r--shell/test/RULES110
-rw-r--r--shell/test/TARGETS7
4 files changed, 188 insertions, 72 deletions
diff --git a/CC/test/EXPRESSIONS b/CC/test/EXPRESSIONS
index 1646dd7..f3e4b04 100644
--- a/CC/test/EXPRESSIONS
+++ b/CC/test/EXPRESSIONS
@@ -38,6 +38,7 @@
, "test-args"
, "test-data"
, "summarizer"
+ , "summary artifacts"
]
, "imports":
{ "artifacts": ["./", "../..", "field_artifacts"]
@@ -208,7 +209,7 @@
, "then":
{ "type": "let*"
, "bindings":
- [ [ "attempts"
+ [ [ "attempts (plain)"
, { "type": "map_union"
, "$1":
{ "type": "foreach"
@@ -221,54 +222,74 @@
{ "type": "singleton_map"
, "key": {"type": "var", "name": "ATTEMPT"}
, "value":
+ { "type": "ACTION"
+ , "outs":
+ ["result", "stdout", "stderr", "time-start", "time-stop"]
+ , "inputs":
+ { "type": "map_union"
+ , "$1":
+ [ { "type": "singleton_map"
+ , "key": "ATTEMPT"
+ , "value":
+ { "type": "BLOB"
+ , "data": {"type": "var", "name": "ATTEMPT"}
+ }
+ }
+ , {"type": "var", "name": "test input"}
+ ]
+ }
+ , "cmd": ["./runner"]
+ , "env":
+ { "type": "var"
+ , "name": "TEST_ENV"
+ , "default": {"type": "empty_map"}
+ }
+ , "may_fail": ["test"]
+ , "no_cache": ["test"]
+ , "fail_message":
+ { "type": "join"
+ , "$1":
+ [ "CC test "
+ , {"type": "var", "name": "test-name"}
+ , " failed (Run"
+ , {"type": "var", "name": "ATTEMPT"}
+ , ")"
+ ]
+ }
+ , "timeout scaling":
+ {"type": "var", "name": "TIMEOUT_SCALE", "default": 1.0}
+ , "execution properties":
+ {"type": "var", "name": "target properties"}
+ }
+ }
+ }
+ }
+ ]
+ , [ "attempts (for summary)"
+ , { "type": "map_union"
+ , "$1":
+ { "type": "foreach_map"
+ , "range": {"type": "var", "name": "attempts (plain)"}
+ , "body":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
{ "type": "TREE"
, "$1":
- { "type": "ACTION"
- , "outs":
- [ "result"
- , "stdout"
- , "stderr"
- , "time-start"
- , "time-stop"
- ]
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "singleton_map"
- , "key": "ATTEMPT"
- , "value":
- { "type": "BLOB"
- , "data": {"type": "var", "name": "ATTEMPT"}
- }
+ { "type": "map_union"
+ , "$1":
+ { "type": "foreach"
+ , "range": {"type": "var", "name": "summary artifacts"}
+ , "body":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
+ { "type": "lookup"
+ , "map": {"type": "var", "name": "$_"}
+ , "key": {"type": "var", "name": "_"}
}
- , {"type": "var", "name": "test input"}
- ]
- }
- , "cmd": ["./runner"]
- , "env":
- { "type": "var"
- , "name": "TEST_ENV"
- , "default": {"type": "empty_map"}
- }
- , "may_fail": ["test"]
- , "no_cache": ["test"]
- , "fail_message":
- { "type": "join"
- , "$1":
- [ "CC test "
- , {"type": "var", "name": "test-name"}
- , " failed (Run"
- , {"type": "var", "name": "ATTEMPT"}
- , ")"
- ]
+ }
}
- , "timeout scaling":
- { "type": "var"
- , "name": "TIMEOUT_SCALE"
- , "default": 1.0
- }
- , "execution properties":
- {"type": "var", "name": "target properties"}
}
}
}
@@ -280,7 +301,7 @@
, "inputs":
{ "type": "map_union"
, "$1":
- [ {"type": "var", "name": "attempts"}
+ [ {"type": "var", "name": "attempts (for summary)"}
, {"type": "var", "name": "summarizer"}
]
}
@@ -294,6 +315,20 @@
}
}
]
+ , [ "attempts"
+ , { "type": "map_union"
+ , "$1":
+ { "type": "foreach_map"
+ , "range": {"type": "var", "name": "attempts (plain)"}
+ , "body":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
+ {"type": "TREE", "$1": {"type": "var", "name": "$_"}}
+ }
+ }
+ }
+ ]
, [ "artifacts"
, { "type": "map_union"
, "$1":
diff --git a/CC/test/RULES b/CC/test/RULES
index e23359e..f61d9f7 100644
--- a/CC/test/RULES
+++ b/CC/test/RULES
@@ -81,7 +81,8 @@
]
, "summarizer":
[ "Tool to aggregate the results of individual test runs (for flakyness"
- , "detection) to an overall test result."
+ , "detection) to an overall test result. If more fields than the result"
+ , "itself is needed, those can be specified using the \"summarizer\" rule."
]
}
, "config_doc":
@@ -157,6 +158,7 @@
, "host transition": ["transitions", "maybe for host"]
, "stage": ["./", "../..", "stage_singleton_field"]
, "run_test": "run_test"
+ , "field_list": ["", "field_list_provider"]
}
, "config_transitions":
{ "defaults": [{"type": "CALL_EXPRESSION", "name": "host transition"}]
@@ -237,6 +239,18 @@
, "body": {"type": "CALL_EXPRESSION", "name": "stage"}
}
]
+ , [ "summary artifacts"
+ , { "type": "++"
+ , "$1":
+ [ ["result"]
+ , { "type": "let*"
+ , "bindings":
+ [["provider", "artifacts"], ["fieldname", "summarizer"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "field_list"}
+ }
+ ]
+ }
+ ]
]
, "body": {"type": "CALL_EXPRESSION", "name": "run_test"}
}
diff --git a/shell/test/RULES b/shell/test/RULES
index ef67708..e3ee4a2 100644
--- a/shell/test/RULES
+++ b/shell/test/RULES
@@ -1,4 +1,31 @@
-{ "script":
+{ "summarizer":
+ { "doc":
+ ["Specify a test summarizer together with the required additional fields"]
+ , "target_fields": ["summarizer"]
+ , "string_fields": ["artifacts"]
+ , "imports": {"stage": ["./", "../..", "stage_singleton_field"]}
+ , "field_doc":
+ { "summarizer": ["The single artifact acting as summarizer"]
+ , "artifacts":
+ [ "Any additional artifacts, besides \"result\", the summaries needs from"
+ , "the individual test results"
+ ]
+ }
+ , "expression":
+ { "type": "RESULT"
+ , "artifacts":
+ { "type": "let*"
+ , "bindings": [["fieldname", "summarizer"], ["location", "summarizer"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "stage"}
+ }
+ , "provides":
+ { "type": "singleton_map"
+ , "key": "artifacts"
+ , "value": {"type": "FIELD", "name": "artifacts"}
+ }
+ }
+ }
+, "script":
{ "doc": ["Shell test, given by a test script"]
, "target_fields": ["deps", "test"]
, "string_fields": ["keep", "name"]
@@ -48,7 +75,8 @@
]
, "summarizer":
[ "Tool to aggregate the results of individual test runs (for flakyness"
- , "detection) to an overall test result."
+ , "detection) to an overall test result. If more fields than the result"
+ , "itself is needed, those can be specified using the \"summarizer\" rule."
]
, "defaults": ["The shell toolcahin to use."]
}
@@ -111,6 +139,7 @@
, "stage": ["./", "../..", "stage_singleton_field"]
, "host transition": ["transitions", "maybe for host"]
, "target properties": ["transitions", "target properties"]
+ , "field_list": ["", "field_list_provider"]
}
, "config_transitions":
{ "deps": [{"type": "CALL_EXPRESSION", "name": "host transition"}]
@@ -158,7 +187,7 @@
, "then":
{ "type": "let*"
, "bindings":
- [ [ "attempts"
+ [ [ "attempts (plain)"
, { "type": "map_union"
, "$1":
{ "type": "foreach"
@@ -170,37 +199,56 @@
, "body":
{ "type": "singleton_map"
, "key": {"type": "var", "name": "ATTEMPT"}
- , "value":
- { "type": "TREE"
- , "$1": {"type": "CALL_EXPRESSION", "name": "action"}
- }
+ , "value": {"type": "CALL_EXPRESSION", "name": "action"}
}
}
}
]
, [ "summarizer"
+ , { "type": "let*"
+ , "bindings":
+ [["fieldname", "summarizer"], ["location", "summarizer"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "stage"}
+ }
+ ]
+ , [ "summary artifacts"
+ , { "type": "++"
+ , "$1":
+ [ ["result"]
+ , { "type": "let*"
+ , "bindings":
+ [["provider", "artifacts"], ["fieldname", "summarizer"]]
+ , "body": {"type": "CALL_EXPRESSION", "name": "field_list"}
+ }
+ ]
+ }
+ ]
+ , [ "attempts (for summary)"
, { "type": "map_union"
, "$1":
- { "type": "foreach"
- , "var": "x"
- , "range": {"type": "FIELD", "name": "summarizer"}
+ { "type": "foreach_map"
+ , "range": {"type": "var", "name": "attempts (plain)"}
, "body":
- { "type": "map_union"
- , "$1":
- { "type": "foreach"
- , "var": "x"
- , "range":
- { "type": "values"
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
+ { "type": "TREE"
+ , "$1":
+ { "type": "map_union"
, "$1":
- { "type": "DEP_ARTIFACTS"
- , "dep": {"type": "var", "name": "x"}
+ { "type": "foreach"
+ , "range": {"type": "var", "name": "summary artifacts"}
+ , "body":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
+ { "type": "lookup"
+ , "map": {"type": "var", "name": "$_"}
+ , "key": {"type": "var", "name": "_"}
+ }
+ }
}
}
- , "body":
- { "type": "singleton_map"
- , "key": "summarizer"
- , "value": {"type": "var", "name": "x"}
- }
}
}
}
@@ -211,7 +259,7 @@
, "inputs":
{ "type": "map_union"
, "$1":
- [ {"type": "var", "name": "attempts"}
+ [ {"type": "var", "name": "attempts (for summary)"}
, {"type": "var", "name": "summarizer"}
]
}
@@ -225,6 +273,20 @@
}
}
]
+ , [ "attempts"
+ , { "type": "map_union"
+ , "$1":
+ { "type": "foreach_map"
+ , "range": {"type": "var", "name": "attempts (plain)"}
+ , "body":
+ { "type": "singleton_map"
+ , "key": {"type": "var", "name": "_"}
+ , "value":
+ {"type": "TREE", "$1": {"type": "var", "name": "$_"}}
+ }
+ }
+ }
+ ]
, [ "artifacts"
, { "type": "map_union"
, "$1":
diff --git a/shell/test/TARGETS b/shell/test/TARGETS
index 0967ef4..5a4b849 100644
--- a/shell/test/TARGETS
+++ b/shell/test/TARGETS
@@ -1 +1,6 @@
-{}
+{ "summarizer":
+ { "type": "summarizer"
+ , "summarizer": [["FILE", null, "summarizer"]]
+ , "artifacts": ["time-start", "time-stop"]
+ }
+}