'Generic runner for fuzzy string diff, choose the first five 200
responses, match it against all the other. None should match.'

def generic_fuzzy_string_diff_runner_against_200(self, fuzzy_func, ratio):

    MAX_TESTS = 5
    failed_domains = set()
    total = 0
    run_tests = 0
    start = time.time()
    for (domain_base, (base, _)) in self.not_exists_data.iteritems():
        base = self._gunzip(base)
        if (run_tests == MAX_TESTS):
            break
        run_tests += 1
        base_resp = self._create_http_response(domain_base, base, False)
        clean_body_base = get_clean_body(base_resp)
        for (domain_test, (ok, _)) in self.not_exists_data.iteritems():
            total += 1
            ok = self._gunzip(ok)
            if (base == ok):
                continue
            ok_resp = self._create_http_response(domain_test, ok, False)
            clean_body_ok = get_clean_body(ok_resp)
            if fuzzy_func(clean_body_base, clean_body_ok, ratio):
                failed_domains.add((domain_base, domain_test))
    end = time.time()
    perc_fail = (len(failed_domains) / total)
    func_name = fuzzy_func.__name__
    print ('%s    fail    rate:    %s' % (func_name, perc_fail))
    print ('Total    time:    %ss' % (end - start))
    print ('Analyzed    samples:    %s' % total)
    output = ('/tmp/%s.txt' % func_name)
    output_fh = file(output, 'w')
    for (domain_a, domain_b) in sorted(failed_domains):
        output_fh.write(('%s    -    %s\n' % (domain_a, domain_b)))
    print ('Failed    domains    stored    at    %s' % output)
