Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions codespeed/migrations/0006_benchmark_source_unused.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.2.13 on 2026-05-31 17:55

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('codespeed', '0005_benchmark_source_result_suite_version'),
]

operations = [
migrations.AlterField(
model_name='benchmark',
name='source',
field=models.CharField(choices=[('legacy', 'Legacy'), ('pyperformance', 'PyPerformance'), ('unused', 'Unused')], default='legacy', max_length=14),
),
]
1 change: 1 addition & 0 deletions codespeed/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ class Benchmark(models.Model):
S_TYPES = (
('legacy', 'Legacy'),
('pyperformance', 'PyPerformance'),
('unused', 'Unused'),
)
D_TYPES = (
('U', 'Mean'),
Expand Down
16 changes: 8 additions & 8 deletions codespeed/tests/test_views_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,24 +86,24 @@ def test_get_comparisonexes_master_default_branch(self):
self.assertEqual(executables[self.project][0]['key'],
'1:L:master')
self.assertEqual(executables[self.project][0]['name'],
'TestExecutable1 latest')
'Executable1 latest')
self.assertEqual(executables[self.project][0]['revision'],
self.revision_1_master)

self.assertEqual(executables[self.project][1]['key'],
'2:L:master')
self.assertEqual(executables[self.project][1]['name'],
'TestExecutable2 latest')
'Executable2 latest')

self.assertEqual(executables[self.project][2]['key'],
'1:L:custom')
self.assertEqual(executables[self.project][2]['name'],
'TestExecutable1 latest in branch \'custom\'')
'Executable1 latest in branch \'custom\'')

self.assertEqual(executables[self.project][3]['key'],
'2:L:custom')
self.assertEqual(executables[self.project][3]['name'],
'TestExecutable2 latest in branch \'custom\'')
'Executable2 latest in branch \'custom\'')

self.assertEqual(exe_keys[0], '1:L:master')
self.assertEqual(exe_keys[1], '2:L:master')
Expand All @@ -125,24 +125,24 @@ def test_get_comparisonexes_custom_default_branch(self):
self.assertEqual(executables[self.project][0]['key'],
'1:L:master')
self.assertEqual(executables[self.project][0]['name'],
'TestExecutable1 latest in branch \'master\'')
'Executable1 latest in branch \'master\'')
self.assertEqual(executables[self.project][0]['revision'],
self.revision_1_master)

self.assertEqual(executables[self.project][1]['key'],
'2:L:master')
self.assertEqual(executables[self.project][1]['name'],
'TestExecutable2 latest in branch \'master\'')
'Executable2 latest in branch \'master\'')

self.assertEqual(executables[self.project][2]['key'],
'1:L:custom')
self.assertEqual(executables[self.project][2]['name'],
'TestExecutable1 latest')
'Executable1 latest')

self.assertEqual(executables[self.project][3]['key'],
'2:L:custom')
self.assertEqual(executables[self.project][3]['name'],
'TestExecutable2 latest')
'Executable2 latest')

self.assertEqual(exe_keys[0], '1:L:master')
self.assertEqual(exe_keys[1], '2:L:master')
Expand Down
14 changes: 8 additions & 6 deletions codespeed/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,12 +366,14 @@ def comparison(request):
benchmarks[source_label] = qs
for unit in qs.values_list('units_title', flat=True).distinct():
unit_qs = qs.filter(units_title=unit)
units = unit_qs[0].units
lessisbetter = (unit_qs[0].lessisbetter and
' (less is better)' or ' (more is better)')
bench_units[unit] = [
[b.id for b in unit_qs], lessisbetter, units
]
ids = [b.id for b in unit_qs]
if unit in bench_units:
bench_units[unit][0].extend(ids)
else:
units = unit_qs[0].units
lessisbetter = (unit_qs[0].lessisbetter and
' (less is better)' or ' (more is better)')
bench_units[unit] = [ids, lessisbetter, units]
checkedbenchmarks = []
if 'ben' in data:
checkedbenchmarks = _parse_ben_param(data['ben'])
Expand Down
27 changes: 23 additions & 4 deletions codespeed/views_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,31 @@ def getcomparisonexes():
for proj in Project.objects.all():
executables = []
executablekeys = []
proj_name_lower = str(proj).lower()
proj_name_len = len(proj_name_lower)

def short_exestring(exe):
s = get_sanitized_executable_name_for_comparison_view(exe)
if s.endswith('-64'):
s = s[:-3]
return s

def strip_proj_prefix(name):
if name.lower().startswith(proj_name_lower):
rest = name[proj_name_len:]
if rest and rest[0] in (' ', '-'):
rest = rest[1:]
if rest:
return rest
return name

# add all tagged revs for any project
for exe in baselines:
if exe['key'] != "none" and exe['executable'].project == proj:
name = strip_proj_prefix(
short_exestring(exe['executable']) + " " + exe['revision'].tag)
executablekeys.append(exe['key'])
executables.append(exe)
executables.append(dict(exe, name=name))

# add latest revs of the project
branches = Branch.objects.filter(project=proj, display_on_comparison_page=True)
Expand All @@ -147,8 +167,7 @@ def getcomparisonexes():
# because we already added tagged revisions
if rev.tag == "":
for exe in Executable.objects.filter(project=proj):
exestring = get_sanitized_executable_name_for_comparison_view(exe)
name = exestring + " latest"
name = short_exestring(exe) + " latest"
if branch.name != proj.default_branch:
name += " in branch '" + branch.name + "'"
key = str(exe.id) + ":L:" + branch.name
Expand All @@ -157,7 +176,7 @@ def getcomparisonexes():
'key': key,
'executable': exe,
'revision': rev,
'name': name,
'name': strip_proj_prefix(name),
})
all_executables[proj] = executables
exekeys += executablekeys
Expand Down
Loading