예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
 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))
예제 #4
0
 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)
예제 #5
0
 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))
예제 #6
0
 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)