Esempio n. 1
0
def merge_by_range(reason_groups):
  if not reason_groups:
    return []
  by_range = {}
  for group in reason_groups:
    range_key = range_key_for_group(group)
    existing = by_range.get(range_key)
    if not existing:
      # Shallow copy of group.
      by_range[range_key] = dict(group)
      continue

    # We only care about these two keys, the rest should be the same.
    # I guess we could assert that...
    sort_key = string_helpers.longest_substring(existing['sort_key'],
                                                group['sort_key'])
    failure_keys = sorted(set(existing['failure_keys'] + group['failure_keys']))
    by_range[range_key].update({
        'sort_key': sort_key,
        'failure_keys': failure_keys,
    })

  return sorted(by_range.values(), key=operator.itemgetter('sort_key'))
Esempio n. 2
0
def merge_by_range(reason_groups):
    if not reason_groups:
        return []
    by_range = {}
    for group in reason_groups:
        range_key = range_key_for_group(group)
        existing = by_range.get(range_key)
        if not existing:
            # Shallow copy of group.
            by_range[range_key] = dict(group)
            continue

        # We only care about these two keys, the rest should be the same.
        # I guess we could assert that...
        sort_key = string_helpers.longest_substring(existing['sort_key'],
                                                    group['sort_key'])
        failure_keys = sorted(
            set(existing['failure_keys'] + group['failure_keys']))
        by_range[range_key].update({
            'sort_key': sort_key,
            'failure_keys': failure_keys,
        })

    return sorted(by_range.values(), key=operator.itemgetter('sort_key'))
Esempio n. 3
0
 def test_longest_substring(self):
   self.assertEquals(string_helpers.longest_substring('foo', 'bar'), '')
   self.assertEquals(string_helpers.longest_substring('foo', 'foo'), 'foo')
   self.assertEquals(string_helpers.longest_substring('aa', 'aaa'), 'aa')
   self.assertEquals(string_helpers.longest_substring('aaa', 'aa'), 'aa')
Esempio n. 4
0
 def test_longest_substring(self):
   self.assertEquals(string_helpers.longest_substring('foo', 'bar'), '')
   self.assertEquals(string_helpers.longest_substring('foo', 'foo'), 'foo')
   self.assertEquals(string_helpers.longest_substring('aa', 'aaa'), 'aa')
   self.assertEquals(string_helpers.longest_substring('aaa', 'aa'), 'aa')