def test_affinity_linux_any(): arch = get_preferred_affinity( ['amd64', 'sparc', 'armhf'], ["linux-any"], valid_arches ) assert arch.name == 'amd64'
def test_affinity_any_arm(): arch = get_preferred_affinity( ['amd64', 'sparc', 'armhf'], ["any-arm"], valid_arches ) assert arch.name == 'armhf'
def test_affinity_out_of_order(): arch = get_preferred_affinity( ['amd64', 'sparc', 'armhf'], ["ppc64", "sparc", "amd64"], valid_arches ) assert arch.name == 'amd64'
def test_affinity_secondary(): arch = get_preferred_affinity( ['amd64', 'sparc', 'armhf'], ["ppc64", "sparc"], valid_arches ) assert arch.name == 'sparc'
def test_get_preferred_affinity(self, mock): affinity = ['amd64'] valid = ['i386'] arch = get_preferred_affinity(affinity, valid, self.arches) self.assertEquals(arch.name, 'amd64')
def test_affinity_fail(): try: arch = get_preferred_affinity(['amd64', 'sparc', 'armhf'], ["ppc64", "armel"], valid_arches) assert False == True, "Didn't bomb out as expected." except ValueError: pass
def test_affinity_fail(): try: arch = get_preferred_affinity( ['amd64', 'sparc', 'armhf'], ["ppc64", "armel"], valid_arches ) assert False == True, "Didn't bomb out as expected." except ValueError: pass
def create_source(dsc, group_suite, component, uploader, affinity_preference, valid_affinities): source = Source( name=dsc['Source'], version=dsc['Version'], group_suite=group_suite, component=component, uploader=uploader, uploaded_at=datetime.utcnow() ) source.arches = get_source_arches(dsc['Architecture'].split(), group_suite.arches) # Sources building arch-dependent packages should build any # arch-independent packages on an architecture it is building # arch-dependent packages on. source.affinity = get_preferred_affinity( affinity_preference, valid_affinities.split(), [x for x in source.arches if x.name not in ["source", "all"]] or [x for x in source.group_suite.arches if x.name not in ["source", "all"]] ) MAINTAINER = re.compile("(?P<name>.*) \<(?P<email>.*)\>") source.maintainers.append(Maintainer( comaintainer=False, original_maintainer=False, **MAINTAINER.match(dsc.get('Maintainer')).groupdict() )) if dsc.get('XSBC-Original-Maintainer', None): source.maintainers.append(Maintainer( comaintainer=False, original_maintainer=True, **MAINTAINER.match(dsc.get('XSBC-Original-Maintainer')).groupdict() )) whos = re.findall(r'(?:[^,"]|"(?:\\.|[^"])*")+', dsc.get("Uploaders", "")) for who in [x.strip() for x in whos if x.strip() != ""]: source.maintainers.append(Maintainer( comaintainer=True, original_maintainer=False, **MAINTAINER.match(who).groupdict() )) return source
def create_source(dsc, group_suite, component, uploader, affinity_preference, valid_affinities): source = Source(name=dsc['Source'], version=dsc['Version'], group_suite=group_suite, component=component, uploader=uploader, uploaded_at=datetime.utcnow()) source.arches = get_source_arches(dsc['Architecture'].split(), group_suite.arches) # Sources building arch-dependent packages should build any # arch-independent packages on an architecture it is building # arch-dependent packages on. source.affinity = get_preferred_affinity( affinity_preference, valid_affinities.split(), [x for x in source.arches if x.name not in ["source", "all"]] or [ x for x in source.group_suite.arches if x.name not in ["source", "all"] ]) MAINTAINER = re.compile("(?P<name>.*) \<(?P<email>.*)\>") source.maintainers.append( Maintainer(comaintainer=False, original_maintainer=False, **MAINTAINER.match(dsc.get('Maintainer')).groupdict())) if dsc.get('XSBC-Original-Maintainer', None): source.maintainers.append( Maintainer(comaintainer=False, original_maintainer=True, **MAINTAINER.match( dsc.get('XSBC-Original-Maintainer')).groupdict())) whos = re.findall(r'(?:[^,"]|"(?:\\.|[^"])*")+', dsc.get("Uploaders", "")) for who in [x.strip() for x in whos if x.strip() != ""]: source.maintainers.append( Maintainer(comaintainer=True, original_maintainer=False, **MAINTAINER.match(who).groupdict())) return source
def create_jobs(source, valid_affinities, externally_blocked=False): """ Create jobs for Source `source`, using the an architecture matching `valid_affinities` for any arch "all" jobs. """ aall = None for arch in source.group_suite.arches: if arch.name == "all": aall = arch break else: raise ValueError("Can't find arch:all in the suite arches.") # Sources building arch-dependent packages should build any # arch-independent packages on an architecture it is building # arch-dependent packages on. valid_arches = [x for x in source.arches if x.name != "all"] or \ [x for x in source.group_suite.arches if x.name != "all"] affinity = get_preferred_affinity( debile.master.core.config["affinity_preference"], valid_affinities.split(), valid_arches ) for check in source.group_suite.get_source_checks(): j = Job(name="%s [%s]" % (check.name, "source"), check=check, arch=aall, affinity=affinity, source=source, binary=None, externally_blocked=externally_blocked, builder=None, assigned_at=None, finished_at=None, failed=None) source.jobs.append(j) builds = {} for check in source.group_suite.get_build_checks(): for arch in source.arches: jobaffinity = affinity if arch == aall else arch j = Job(name="%s [%s]" % (check.name, arch.name), check=check, arch=arch, affinity=jobaffinity, source=source, binary=None, externally_blocked=externally_blocked, builder=None, assigned_at=None, finished_at=None, failed=None) builds[arch] = j source.jobs.append(j) for check in source.group_suite.get_binary_checks(): for arch in source.arches: jobaffinity = affinity if arch == aall else arch deps = [] deps.append(builds[arch]) if aall in builds and aall != arch: deps.append(builds[aall]) j = Job(name="%s [%s]" % (check.name, arch.name), check=check, arch=arch, affinity=jobaffinity, source=source, binary=None, externally_blocked=externally_blocked, builder=None, assigned_at=None, finished_at=None, failed=None) source.jobs.append(j) jds = [JobDependencies(blocked_job=j, blocking_job=x) for x in deps] for dep in jds: j.depedencies.append(dep)