Esempio n. 1
0
def s3_files_for(r_from, r_to, projects=[], versions=[]):
    for project, version in iter_versions(projects, versions):
        key = 'results:test-methods:{project}:{version}:dev'.format(
                project=project, version=version
        )
        test_methods = r_to.lrange(key, 0, -1)
        print "{project}:{version} has {tms} methods".format(
                project=project, version=version,
                tms=len(test_methods)
        )
        for test_method in test_methods:
            c_name, _, m_name = test_method.partition('::')

            is_class_empty = []
            for tool in ["codecover", "cobertura", "jmockit"]:
                class_key = mk_key('test-classes-cvg', [tool, project, version])
                class_r = json.loads(r_from.hget(class_key, c_name))
                is_class_empty.append(is_empty(tool, class_r))

            if all(is_class_empty):
                continue

            is_method_nonempty = []
            for tool in ["codecover", "cobertura", "jmockit"]:
                method_key = mk_key('test-methods-run-cvg', [tool, project, version])
                try:
                    method_r = json.loads(r_from.hget(method_key, test_method))
                    if not is_empty(tool, method_r):
                        key = ':'.join([tool, project, str(version), test_method])
                        DIR = '/scratch/darioush/files'
                        p = LocalPath(DIR) / '{key}.tar.gz'.format(key=key)
                        assert p.exists()
                        is_method_nonempty.append(True)
                        with open(str(p)) as f:
                            s3_up = put_into_s3('cvg-files', [tool, project, version, 'dev'], test_method, f)
                    else:
                        is_method_nonempty.append(False)
                except TypeError:
                    print "--> Missing result {tool}:{project}:{version}:dev:{test}".format(tool=tool,test=test_method, project=project, version=version)
                except AssertionError:
                    print "--> Missing file {tool}:{project}:{version}:dev:{test}".format(tool=tool,test=test_method, project=project, version=version)

            if any(is_method_nonempty):
                mut_key = mk_key('test-methods-run-cvg', ['major', project, version])
                try:
                    mut_r = json.loads(r_from.hget(mut_key, test_method))
                    if not is_empty('major', mut_r):
                        key = ':'.join(['major', project, str(version), test_method])
                        DIR = '/scratch/darioush/files'
                        p = LocalPath(DIR) / '{key}.tar.gz'.format(key=key)
                        assert p.exists()
                        with open(str(p)) as f:
                            s3_up = put_into_s3('cvg-files', ['major', project, version, 'dev'], test_method, f)
                except TypeError:
                    tool = 'major'
                    print "--> Missing result {tool}:{project}:{version}:dev:{test}".format(tool=tool,test=test_method, project=project, version=version)
                except AssertionError:
                    print "--> Missing file {tool}:{project}:{version}:dev:{test}".format(tool=tool,test=test_method, project=project, version=version)