'Analyse all job results by platform, return:
False: if any platform has more than one failure
None:  if any platform has more than one machine not yet Good.
True:  if all platforms have at least all-but-one machines Good.'

def poll_job_results(self, tko, job, debug=False):

    self._job_test_results(tko, job, debug)
    if (job.test_status == {}):
        return None
    self._job_results_platform_map(job, debug)
    good_platforms = []
    failed_platforms = []
    aborted_platforms = []
    unknown_platforms = []
    platform_map = job.results_platform_map
    for platform in platform_map:
        if (not job.platform_results.has_key(platform)):
            job.platform_results[platform] = None
        total = len(platform_map[platform]['Total'])
        completed = len(platform_map[platform].get('Completed', []))
        failed = len(platform_map[platform].get('Failed', []))
        aborted = len(platform_map[platform].get('Aborted', []))
        if (aborted or failed):
            bad = (aborted + failed)
            if ((bad > 1) or ((bad * 2) >= total)):
                platform_test_result = 'FAIL'
            else:
                platform_test_result = 'WARN'
        if (aborted > 1):
            aborted_platforms.append(platform)
            self.set_platform_results(job, platform, platform_test_result)
        elif (((failed * 2) >= total) or (failed > 1)):
            failed_platforms.append(platform)
            self.set_platform_results(job, platform, platform_test_result)
        elif ((completed >= 1) and ((completed + 1) >= total)):
            good_platforms.append(platform)
            self.set_platform_results(job, platform, 'GOOD')
        else:
            unknown_platforms.append(platform)
        detail = []
        for status in platform_map[platform]:
            if (status == 'Total'):
                continue
            detail.append(('%s=%s' % (status, platform_map[platform][status])))
        if debug:
            print ('%20s    %d/%d    %s' % (platform, completed, total, '    '.join(detail)))
            print
    if (len(aborted_platforms) > 0):
        if debug:
            print 'Result    aborted    -    platforms:    ',
            print '    '.join(aborted_platforms)
        return 'Abort'
    if (len(failed_platforms) > 0):
        if debug:
            print ('Result    bad    -    platforms:    ' + '    '.join(failed_platforms))
        return False
    if (len(unknown_platforms) > 0):
        if debug:
            platform_list = '    '.join(unknown_platforms)
            print 'Result    unknown    -    platforms:    ', platform_list
        return None
    if debug:
        platform_list = '    '.join(good_platforms)
        print 'Result    good    -    all    platforms    passed:    ', platform_list
    return True
