Skip to content

Commit 11bbaea

Browse files
committed
Add support for storing median statistics
1 parent a85b782 commit 11bbaea

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

codespeed/admin.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ class ExecutableAdmin(admin.ModelAdmin):
3737

3838

3939
class BenchmarkAdmin(admin.ModelAdmin):
40-
list_display = ('name', 'benchmark_type', 'description', 'units_title',
41-
'units', 'lessisbetter', 'default_on_comparison')
42-
list_filter = ('lessisbetter',)
40+
list_display = ('name', 'benchmark_type', 'data_type', 'description',
41+
'units_title', 'units', 'lessisbetter',
42+
'default_on_comparison')
43+
list_filter = ('data_type','lessisbetter')
4344
ordering = ['name']
4445
search_fields = ('name', 'description')
4546

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('codespeed', '0001_initial'),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name='benchmark',
16+
name='data_type',
17+
field=models.CharField(default='U', max_length=1, choices=[('U', 'Mean'), ('M', 'Median')]),
18+
),
19+
migrations.AddField(
20+
model_name='result',
21+
name='q1',
22+
field=models.FloatField(null=True, blank=True),
23+
),
24+
migrations.AddField(
25+
model_name='result',
26+
name='q3',
27+
field=models.FloatField(null=True, blank=True),
28+
),
29+
]

codespeed/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,18 @@ class Benchmark(models.Model):
146146
('C', 'Cross-project'),
147147
('O', 'Own-project'),
148148
)
149+
D_TYPES = (
150+
('U', 'Mean'),
151+
('M', 'Median'),
152+
)
149153

150154
name = models.CharField(unique=True, max_length=100)
151155
parent = models.ForeignKey(
152156
'self', verbose_name="parent",
153157
help_text="allows to group benchmarks in hierarchies",
154158
null=True, blank=True, default=None)
155159
benchmark_type = models.CharField(max_length=1, choices=B_TYPES, default='C')
160+
data_type = models.CharField(max_length=1, choices=D_TYPES, default='U')
156161
description = models.CharField(max_length=300, blank=True)
157162
units_title = models.CharField(max_length=30, default='Time')
158163
units = models.CharField(max_length=20, default='seconds')
@@ -188,6 +193,8 @@ class Result(models.Model):
188193
std_dev = models.FloatField(blank=True, null=True)
189194
val_min = models.FloatField(blank=True, null=True)
190195
val_max = models.FloatField(blank=True, null=True)
196+
q1 = models.FloatField(blank=True, null=True)
197+
q3 = models.FloatField(blank=True, null=True)
191198
date = models.DateTimeField(blank=True, null=True)
192199
revision = models.ForeignKey(Revision, related_name="results")
193200
executable = models.ForeignKey(Executable, related_name="results")

codespeed/results.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ def save_result(data):
122122
r.std_dev = data.get('std_dev')
123123
r.val_min = data.get('min')
124124
r.val_max = data.get('max')
125+
r.q1 = data.get('q1')
126+
r.q3 = data.get('q3')
125127

126128
r.full_clean()
127129
r.save()

0 commit comments

Comments
 (0)