Skip to content

Commit c3ca151

Browse files
mattipclaude
andcommitted
Thread suite_version and source through save_result; filter home page to legacy
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 044f863 commit c3ca151

3 files changed

Lines changed: 48 additions & 3 deletions

File tree

codespeed/results.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ def save_result(data, update_repo=True):
6969
b.units_title = data["units_title"]
7070
if "lessisbetter" in data:
7171
b.lessisbetter = data["lessisbetter"]
72+
if "source" in data:
73+
b.source = data["source"]
7274
b.full_clean()
7375
b.save()
7476

@@ -127,6 +129,7 @@ def save_result(data, update_repo=True):
127129
r.val_max = data.get('max')
128130
r.q1 = data.get('q1')
129131
r.q3 = data.get('q3')
132+
r.suite_version = data.get('suite_version', '')
130133

131134
r.full_clean()
132135
r.save()

codespeed/tests/test_views.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,44 @@ def test_add_result_with_no_project(self):
161161
self.assertEqual(
162162
response.content.decode(), "Result data saved successfully")
163163

164+
def test_suite_version_is_saved(self):
165+
"""suite_version in the payload should be stored on the Result"""
166+
modified_data = copy.deepcopy(self.data)
167+
modified_data['suite_version'] = '2.3.1'
168+
self.client.post(self.path, modified_data)
169+
res = Result.objects.get(
170+
revision__commitid='23',
171+
benchmark__name='float',
172+
)
173+
self.assertEqual(res.suite_version, '2.3.1')
174+
175+
def test_suite_version_defaults_to_empty(self):
176+
"""Omitting suite_version should store an empty string"""
177+
self.client.post(self.path, self.data)
178+
res = Result.objects.get(
179+
revision__commitid='23',
180+
benchmark__name='float',
181+
)
182+
self.assertEqual(res.suite_version, '')
183+
184+
def test_source_set_on_new_benchmark(self):
185+
"""source in the payload should be set on an auto-created Benchmark"""
186+
modified_data = copy.deepcopy(self.data)
187+
modified_data['benchmark'] = 'newbench'
188+
modified_data['source'] = 'pyperformance'
189+
self.client.post(self.path, modified_data)
190+
b = Benchmark.objects.get(name='newbench')
191+
self.assertEqual(b.source, 'pyperformance')
192+
193+
def test_source_not_changed_on_existing_benchmark(self):
194+
"""source in the payload should not overwrite an existing Benchmark"""
195+
self.client.post(self.path, self.data)
196+
modified_data = copy.deepcopy(self.data)
197+
modified_data['source'] = 'pyperformance'
198+
self.client.post(self.path, modified_data)
199+
b = Benchmark.objects.get(name='float')
200+
self.assertEqual(b.source, 'legacy')
201+
164202

165203
@override_settings(ALLOW_ANONYMOUS_POST=True)
166204
class TestAddJSONResults(TestCase):

codespeed/views.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def gethistoricaldata(request):
114114
rev0 = rev[0]
115115
resname = '{} {}'.format(b['executable'], rev0.tag)
116116
baseline_results.append((resname, Result.objects.filter(
117-
executable=baseline_exe, revision=rev0, environment=env)))
117+
executable=baseline_exe, revision=rev0, environment=env,
118+
benchmark__source='legacy')))
118119
if not baseline_results[-1][1]:
119120
logger.error('Could not find results for {} rev="{}" env="{}"'.format(
120121
baseline_exe, rev0, env))
@@ -135,8 +136,10 @@ def gethistoricaldata(request):
135136
).exclude(tag="").order_by('date')
136137
all_taggedrevs += default_taggedrevs
137138
for rev in default_taggedrevs:
139+
# Filter to legacy only; pyperformance history can get its own panel later
138140
res = Result.objects.filter(
139-
executable=_default_exe, revision=rev, environment=env)
141+
executable=_default_exe, revision=rev, environment=env,
142+
benchmark__source='legacy')
140143
if not res:
141144
logger.info("no results for '%s' '%s' '%s'" % (str(_default_exe), str(rev), str(env)))
142145
continue
@@ -160,7 +163,8 @@ def gethistoricaldata(request):
160163
default_lastrev = None
161164
if default_lastrev is not None:
162165
default_results['latest'] = Result.objects.filter(
163-
executable=default_exe, revision=default_lastrev, environment=env)
166+
executable=default_exe, revision=default_lastrev, environment=env,
167+
benchmark__source='legacy')
164168

165169
# Collect data
166170
benchmarks = []

0 commit comments

Comments
 (0)