in benchmarking/driver/benchmark_driver.py [0:0]
def _mergeDelayData(treatment_data, control_data, bname):
data = copy.deepcopy(treatment_data)
# meta is not a metric, so handle is seperatly
data["meta"] = _mergeDelayMeta(treatment_data["meta"], control_data["meta"], bname)
for k in treatment_data:
# meta was already merged, so don't try to merge it again
if k == "meta":
continue
if k not in control_data:
getLogger().error(
f"Value {k} existed in treatment but not control for benchmark {bname}.",
)
continue
control_value = control_data[k]
treatment_value = treatment_data[k]
if "info_string" in treatment_value:
assert (
"info_string" in control_value
), "Control value missing info_string field"
# If the treatment and control are not the same,
# treatment value is used, the control value is lost.
treatment_string = treatment_value["info_string"]
control_string = control_value["info_string"]
if treatment_string != control_string:
getLogger().warning(
"Treatment value is used, and the control value is lost. "
+ "The field info_string in control "
+ "({})".format(control_string)
+ "is different from the info_string in treatment "
+ "({})".format(treatment_string)
)
if "values" in control_value:
data[k]["control_values"] = control_value["values"]
if "summary" in control_value:
data[k]["control_summary"] = control_value["summary"]
assert "summary" in treatment_value, "Summary is missing in treatment"
# create diff of delay
if "summary" in control_value and "summary" in treatment_value:
data[k]["diff_summary"] = _createDiffOfDelay(
control_value["summary"], treatment_value["summary"]
)
return data