Beispiel #1
0
 def setUp(self):
     DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
     self.branch1 = Branch.objects.get(pk=1)
     self.project1 = Project.objects.get(pk=1)
     self.revision1_data = dict(
         commitid="2a6306432e973cdcfd324e81169bb8029d47b736",
         tag="tag",
         date=datetime.now(),
         message="Commit message\n  - all bugs fixed\n  - code 130% faster",
         project=self.project1,
         author="Alan T. <alan@localhost>",
         branch=self.branch1,
     )
     self.revision1 = Revision(**self.revision1_data)
     self.revision1.save()
     self.revision2_data = dict(
         commitid="4d3bea3cffe4edcd7d70fc46c5e19474cc4bd012",
         tag="v1.0",
         date=datetime.now().strftime(DATETIME_FORMAT),
         message="Commit message\n  - cleanup\n  - all FIXMEs removed",
         project='/api/v1/project/{0}/'.format(self.project1.id),
         author="Chuck N. <chuck@localhost>",
         branch='/api/v1/branch/{0}/'.format(self.branch1.id),
     )
     self.client = Client()
     super(RevisionTest, self).setUp()
Beispiel #2
0
def save_result(data):
    res, error = validate_result(data)
    if error:
        return res, True
    else:
        assert(isinstance(res, Environment))
        env = res

    p, created = Project.objects.get_or_create(name=data["project"])
    branch, created = Branch.objects.get_or_create(name=data["branch"],
                                                    project=p)
    b, created = Benchmark.objects.get_or_create(name=data["benchmark"])
    try:
        rev = branch.revisions.get(commitid=data['commitid'])
    except Revision.DoesNotExist:
        rev_date = data.get("revision_date")
        # "None" (as string) can happen when we urlencode the POST data
        if not rev_date or rev_date in ["", "None"]:
            rev_date = datetime.today()
        rev = Revision(branch=branch, project=p, commitid=data['commitid'],
                       date=rev_date)
        try:
            rev.full_clean()
        except ValidationError as e:
            return str(e), True
        if p.repo_type not in ("N", ""):
            try:
                saverevisioninfo(rev)
            except RuntimeError as e:
                logging.warning("unable to save revision %s info: %s", rev, e,
                                exc_info=True)
        rev.save()

    exe, created = Executable.objects.get_or_create(
        name=data['executable'],
        project=p
    )

    try:
        r = Result.objects.get(
            revision=rev,executable=exe,benchmark=b,environment=env)
    except Result.DoesNotExist:
        r = Result(revision=rev,executable=exe,benchmark=b,environment=env)

    r.value = data["result_value"]
    if 'result_date' in data:
        r.date = data["result_date"]
    elif rev.date:
        r.date = rev.date
    else:
        r.date = datetime.now()

    r.std_dev = data.get('std_dev')
    r.val_min = data.get('min')
    r.val_max = data.get('max')

    r.full_clean()
    r.save()

    return (rev, exe, env), False
Beispiel #3
0
    def make_result(self, value, rev=None, benchmark=None):
        from uuid import uuid4

        if not benchmark:
            benchmark = self.bench

        if not rev:
            commitdate = self.starttime + timedelta(days=self.days)
            cid = str(uuid4())
            Revision(commitid=cid,
                     date=commitdate,
                     branch=self.b,
                     project=self.pro).save()
            rev = Revision.objects.get(commitid=cid)

        Result(value=value,
               revision=rev,
               executable=self.exe,
               environment=self.env,
               benchmark=benchmark).save()
        self.days += 1
        return rev