def _MergeLikeValues(cls, values, page, name, grouping_keys): v0 = values[0] merged_values = [] list_of_samples = [] none_value_reason = None pooled_std = None for v in values: if v.values is None: merged_values = None merged_none_values = [v for v in values if v.values is None] none_value_reason = ( none_values.MERGE_FAILURE_REASON + ' None values: %s' % repr(merged_none_values)) break merged_values.extend(v.values) list_of_samples.append(v.values) if merged_values and page is None: # Pooled standard deviation is only used when merging values comming from # different pages. Otherwise, fall back to the default computation done # in the cosntructor of ListOfScalarValues. pooled_std = PooledStandardDeviation( list_of_samples, list_of_variances=[v.variance for v in values]) return ListOfScalarValues( page, name, v0.units, merged_values, important=v0.important, description=v0.description, tir_label=value_module.MergedTirLabel(values), std=pooled_std, none_value_reason=none_value_reason, improvement_direction=v0.improvement_direction, grouping_keys=grouping_keys)
def MergeLikeValuesFromSamePage(cls, values): assert len(values) > 0 v0 = values[0] return HistogramValue( v0.page, v0.name, v0.units, raw_value_json=histogram_util.AddHistograms( [v.ToJSONString() for v in values]), description=v0.description, important=v0.important, tir_label=value_module.MergedTirLabel(values), improvement_direction=v0.improvement_direction, grouping_keys=v0.grouping_keys)
def _MergeLikeValues(cls, values, page, name, grouping_keys): v0 = values[0] merged_value = [v.value for v in values] none_value_reason = None if None in merged_value: merged_value = None merged_none_values = [v for v in values if v.value is None] none_value_reason = ( none_values.MERGE_FAILURE_REASON + ' None values: %s' % repr(merged_none_values)) return list_of_scalar_values.ListOfScalarValues( page, name, v0.units, merged_value, important=v0.important, description=v0.description, tir_label=value_module.MergedTirLabel(values), none_value_reason=none_value_reason, improvement_direction=v0.improvement_direction, grouping_keys=grouping_keys)
def testMergedTirLabelForDifferentLabels(self): v0 = ValueForTest(None, 'foo', 'ms', False, 'd', 'bar', {}) v1 = ValueForTest(None, 'foo', 'ms', False, 'd', 'baz', {}) tir_label = value.MergedTirLabel([v0, v1]) self.assertIsNone(tir_label)
def testMergedTirLabelForSameLabel(self): v = ValueForTest(None, 'foo', 'ms', False, 'd', 'bar', {}) tir_label = value.MergedTirLabel([v, v]) self.assertEquals(tir_label, 'bar')