Skip to content

Commit

Permalink
BIG DB Changes. New Project and Commitlog Models. Revision now has a …
Browse files Browse the repository at this point in the history
…commitid charfield.
  • Loading branch information
tobami committed Apr 4, 2010
1 parent f367838 commit 029f285
Show file tree
Hide file tree
Showing 10 changed files with 211 additions and 187 deletions.
14 changes: 12 additions & 2 deletions speedcenter/codespeed/admin.py
@@ -1,9 +1,19 @@
# -*- coding: utf-8 -*-
from codespeed.models import Revision, Interpreter, Benchmark, Result, Environment
from codespeed.models import Project, Revision, Commitlog, Interpreter, Benchmark, Result, Environment
from django.contrib import admin

class ProjectAdmin(admin.ModelAdmin):
list_display = ('name', 'rcType', 'rcURL', 'isdefault')

admin.site.register(Project, ProjectAdmin)

class CommitlogAdmin(admin.ModelAdmin):
list_display = ('revision', 'commitid', 'author', 'date', 'message')

admin.site.register(Commitlog, CommitlogAdmin)

class RevisionAdmin(admin.ModelAdmin):
list_display = ('number', 'project', 'branch', 'tag', 'date')
list_display = ('commitid', 'project', 'branch', 'tag', 'date')
list_filter = ('project', 'tag')

admin.site.register(Revision, RevisionAdmin)
Expand Down
35 changes: 28 additions & 7 deletions speedcenter/codespeed/models.py
@@ -1,24 +1,46 @@
# -*- coding: utf-8 -*-
from django.db import models

class Project(models.Model):
RC_TYPES = (
('N', 'none'),
('G', 'git'),
('S', 'svn'),
)
def __unicode__(self):
return str(self.name)
name = models.CharField(unique=True, max_length=20)
rcType = models.CharField(max_length=1, choices=RC_TYPES, default='N')
rcURL = models.URLField(blank=True, null=True)
isdefault = models.BooleanField(default=False)


class Revision(models.Model):
def __unicode__(self):
return str(self.number)
number = models.IntegerField()
project = models.CharField(max_length=20)
return str(self.commitid)
commitid = models.CharField(max_length=40)#git's SHA-1 length is 40
project = models.ForeignKey(Project)
branch = models.CharField(max_length=20, default='trunk')
tag = models.CharField(max_length=20, blank=True)
message = models.CharField(max_length=100, blank=True)
date = models.DateTimeField(blank=True, null=True)
date = models.DateTimeField(null=True)
class Meta:
unique_together = ("number", "project", "branch")
unique_together = ("commitid", "branch", "project")


class Commitlog(models.Model):
commitid = models.CharField(max_length=40)#git's SHA-1 length is 40
author = models.CharField(max_length=20)
date = models.DateTimeField()
message = models.CharField(max_length=200, blank=True)
revision = models.ForeignKey(Revision)


class Interpreter(models.Model):
def __unicode__(self):
return str(self.name + " " + str(self.coptions))
name = models.CharField(max_length=50)
coptions = models.CharField("compile options", max_length=100)
project = models.ForeignKey(Project)

class Meta:
unique_together = ("name", "coptions")
Expand Down Expand Up @@ -61,4 +83,3 @@ class Result(models.Model):

class Meta:
unique_together = ("revision", "interpreter", "benchmark", "environment")

37 changes: 17 additions & 20 deletions speedcenter/codespeed/tests.py
Expand Up @@ -2,7 +2,7 @@
from django.test import TestCase
from datetime import datetime
from django.test.client import Client
from codespeed.models import Benchmark, Revision, Interpreter, Environment, Result
from codespeed.models import Project, Benchmark, Revision, Interpreter, Environment, Result
from django.core.urlresolvers import reverse

class AddResultTest(TestCase):
Expand All @@ -13,12 +13,12 @@ def setUp(self):
self.e.save()
self.cdate = datetime.today()
self.data = {
'revision_number': '23232',
'revision_project': 'pypy',
'revision_branch': 'trunk',
'commitid': '23232',
'project': 'pypy',
'branch': 'trunk',
'interpreter_name': 'pypy-c',
'interpreter_coptions': 'gc=Böhm',
'benchmark_name': 'Richards',
'benchmark': 'Richards',
'environment': 'bigdog',
'result_value': 456,
'result_date': self.cdate,
Expand All @@ -35,23 +35,25 @@ def test_add_default_result(self):
self.assertEquals(b.benchmark_type, "C")
self.assertEquals(b.units, "seconds")
self.assertEquals(b.lessisbetter, True)
r = Revision.objects.get(number='23232', project='pypy', branch="trunk")
p = Project.objects.get(name='pypy')
r = Revision.objects.get(commitid='23232', project=p, branch="trunk")
self.assertEquals(r.date, self.cdate)
i = Interpreter.objects.get(name='pypy-c', coptions='gc=Böhm')
self.assertTrue(Result.objects.get(
value=456,
date=self.cdate,
res = Result.objects.get(
revision=r,
interpreter=i,
benchmark=b,
environment=e
))
)
self.assertTrue(res.value, 456)
self.assertTrue(res.date, self.cdate)

def test_add_non_default_result(self):
"""
Add result data with non-default options
"""
modified_data = self.data
modified_data['revision_branch'] = "experimental"
modified_data['branch'] = "experimental"
modified_data['benchmark_type'] = "O"
modified_data['units'] = "fps"
modified_data['lessisbetter'] = False
Expand All @@ -61,18 +63,13 @@ def test_add_non_default_result(self):
response = self.client.post(self.path, modified_data)
self.assertEquals(response.status_code, 200)
self.assertEquals(response.content, "Result data saved succesfully")
e = Environment.objects.get(name='bigdog')
b = Benchmark.objects.get(name='Richards')
self.assertEquals(b.benchmark_type, "O")
self.assertEquals(b.units, "fps")
self.assertEquals(b.lessisbetter, False)
r = Revision.objects.get(number='23232', project='pypy', branch='experimental')
e = Environment.objects.get(name='bigdog')
p = Project.objects.get(name='pypy')
r = Revision.objects.get(commitid='23232', project=p, branch='experimental')
self.assertEquals(r.branch, "experimental")
i = Interpreter.objects.get(name='pypy-c', coptions='gc=Böhm')

b = Benchmark.objects.get(name='Richards')
res = Result.objects.get(
value=456,
date=self.cdate,
revision=r,
interpreter=i,
benchmark=b,
Expand Down

0 comments on commit 029f285

Please sign in to comment.