def _rewrite_series(self, jm, signature_hash, signature_properties, subtest_signature_mapping, extra_subtest_signatures): new_props = TalosDataAdapter._transform_signature_properties( signature_properties, significant_keys=Command.SIGNIFICANT_KEYS) if 'subtest_signatures' in new_props: suitekey = self._get_suitekey(new_props) # rewrite a new set of subtest signatures old_subtest_signatures = new_props['subtest_signatures'] new_subtest_signatures = set() for old_signature in old_subtest_signatures: try: new_subtest_signatures.add( subtest_signature_mapping[old_signature]) except: # key may not exist if script interrupted, get # suite signatures via extra_subtest_signatures for sig in extra_subtest_signatures.get(suitekey, []): new_subtest_signatures.add(sig) new_props['subtest_signatures'] = sorted(new_subtest_signatures) new_hash = TalosDataAdapter.get_series_signature(new_props) print "%s -> %s" % (signature_hash, new_hash) jm.set_series_signature(new_hash, new_props) for time_interval in PerformanceTimeInterval.all_valid_time_intervals(): series_list = jm.get_performance_series_from_signatures( [signature_hash], time_interval) series = utils.decompress_if_needed(series_list[0]['blob']) jm.store_performance_series(time_interval, 'talos_data', str(new_hash), series) jm.execute(proc='jobs.deletes.delete_performance_series', placeholders=[signature_hash]) jm.execute(proc='jobs.deletes.delete_series_signature', placeholders=[signature_hash]) return new_hash
def _rewrite_series(self, jm, signature_hash, signature_properties, subtest_signature_mapping, extra_subtest_signatures): new_props = TalosDataAdapter._transform_signature_properties( signature_properties, significant_keys=Command.SIGNIFICANT_KEYS) if 'subtest_signatures' in new_props: suitekey = self._get_suitekey(new_props) # rewrite a new set of subtest signatures old_subtest_signatures = new_props['subtest_signatures'] new_subtest_signatures = set() for old_signature in old_subtest_signatures: try: new_subtest_signatures.add( subtest_signature_mapping[old_signature]) except: # key may not exist if script interrupted, get # suite signatures via extra_subtest_signatures for sig in extra_subtest_signatures.get(suitekey, []): new_subtest_signatures.add(sig) new_props['subtest_signatures'] = sorted(new_subtest_signatures) new_hash = TalosDataAdapter.get_series_signature(new_props) print "%s -> %s" % (signature_hash, new_hash) jm.set_series_signature(new_hash, new_props) for time_interval in PerformanceTimeInterval.all_valid_time_intervals( ): series_list = jm.get_performance_series_from_signatures( [signature_hash], time_interval) series = series_list[0]['blob'] jm.store_performance_series(time_interval, 'talos_data', str(new_hash), series) jm.jobs_execute(proc='jobs.deletes.delete_performance_series', placeholders=[signature_hash]) jm.jobs_execute(proc='jobs.deletes.delete_series_signature', placeholders=[signature_hash]) return new_hash
def _signature_needs_rewriting(signature_properties, signature_hash): return (not set(signature_properties.keys()).issubset( Command.SIGNIFICANT_KEYS) or signature_hash != TalosDataAdapter.get_series_signature( signature_properties))
def _get_suitekey(signature_props): suite_signature_props = copy.copy(signature_props) for k in ['test', 'subtest_signatures']: if suite_signature_props.get(k): del suite_signature_props[k] return TalosDataAdapter.get_series_signature(suite_signature_props)
def _signature_needs_rewriting(signature_properties, signature_hash): return (not set(signature_properties.keys()).issubset( Command.SIGNIFICANT_KEYS) or signature_hash != TalosDataAdapter.get_series_signature(signature_properties))