Skip to content

Commit 9c6ff00

Browse files
authored
Adding version to eco-ci v3 endpoint (#1470)
* Adding version to eco-ci v3 endpoint * (test-fix): eco-ci version [skip ci]
1 parent 5cc75bf commit 9c6ff00

File tree

6 files changed

+11
-11
lines changed

6 files changed

+11
-11
lines changed

api/eco_ci.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def _insert_ci_measurement(request: Request, measurement, user: User) -> Respons
4242
if used_client_ip is None:
4343
used_client_ip = get_connecting_ip(request)
4444

45-
for field in ["os_name", "cpu_arch", "job_id"]:
45+
for field in ['os_name', 'cpu_arch', 'job_id', 'version']:
4646
params.append(getattr(measurement, field, None))
4747
params.append(used_client_ip)
4848
params.append(user._id)
@@ -77,14 +77,15 @@ def _insert_ci_measurement(request: Request, measurement, user: User) -> Respons
7777
os_name,
7878
cpu_arch,
7979
job_id,
80+
version,
8081
ip_address,
8182
user_id,
8283
note
8384
)
8485
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
8586
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
8687
{tags_replacer},
87-
%s, %s, %s, %s, %s, %s)
88+
%s, %s, %s, %s, %s, %s, %s)
8889
"""
8990

9091
DB().query(query=query, params=params)
@@ -121,7 +122,7 @@ async def post_ci_measurement_add_v3(
121122
user: User = Depends(authenticate) # pylint: disable=unused-argument
122123
):
123124
"""
124-
v3: accepts additional fields (os_name, cpu_arch, job_id) via CI_MeasurementV3.
125+
v3: accepts additional fields (os_name, cpu_arch, job_id, version) via CI_MeasurementV3.
125126
For now, the insert logic is the same as v2 and ignores these extra fields.
126127
"""
127128
return _insert_ci_measurement(request, measurement, user)

api/object_specifications.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class CI_MeasurementV3(CI_MeasurementBase):
102102
os_name: Optional[str] = None
103103
cpu_arch: Optional[str] = None
104104
job_id: Optional[str] = None
105+
version: Optional[str] = None
105106

106107
model_config = ConfigDict(extra='forbid')
107108

@@ -232,4 +233,3 @@ def check_empty_elements(cls, value):
232233
if any(not item or item.strip() == '' for item in value):
233234
raise ValueError("The list contains empty elements.")
234235
return value
235-

docker/structure.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@ CREATE TABLE ci_measurements (
416416
filter_tags text[] NOT NULL,
417417
os_name text,
418418
cpu_arch text,
419+
version text,
419420
job_id text,
420421
user_id integer NOT NULL REFERENCES users(id) ON DELETE RESTRICT ON UPDATE CASCADE,
421422
created_at timestamp with time zone DEFAULT now(),

migrations/2025_11_22_add_fields_to_ci_measurements.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
ALTER TABLE "public"."ci_measurements" ADD COLUMN "os_name" text;
22
ALTER TABLE "public"."ci_measurements" ADD COLUMN "cpu_arch" text;
33
ALTER TABLE "public"."ci_measurements" ADD COLUMN "job_id" text;
4+
ALTER TABLE "public"."ci_measurements" ADD COLUMN "version" text;
45

56
UPDATE users
67
SET capabilities = jsonb_set(

tests/api/test_api_eco_ci.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def test_ci_deprecated_endpoint():
4141
'workflow_name': 'testWorkflowName',
4242
'os_name': 'testOsName',
4343
'cpu_arch': 'testCpuArch',
44-
'job_id': 'testJobID'}
44+
'job_id': 'testJobID',
45+
'version': 'v2.2'}
4546

4647
def test_ci_measurement_add_default_user():
4748

tests/frontend/test_frontend.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,6 @@ def open_and_assert_ci_stats(self):
182182
).text_content()
183183
assert carbon_all_steps.strip() == '0.11 s (± 0.00%)'
184184

185-
186-
@pytest.mark.usefixtures('use_clean_db')
187-
188185
def test_eco_ci_adding_data(self):
189186
for index in range(1,4):
190187
measurement = CI_Measurement(energy_uj=(13_000_000*index),
@@ -209,8 +206,6 @@ def test_eco_ci_adding_data(self):
209206
assert response.status_code == 204, Tests.assertion_info('success', response.text)
210207
self.open_and_assert_ci_stats()
211208

212-
213-
@pytest.mark.usefixtures('use_clean_db')
214209
def test_eco_ci_adding_data_v3(self):
215210
for index in range(1, 4):
216211
measurement = CI_MeasurementV3(energy_uj=(13_000_000 * index),
@@ -232,7 +227,8 @@ def test_eco_ci_adding_data_v3(self):
232227
carbon_ug=323456,
233228
os_name='Linux',
234229
cpu_arch='x86_64',
235-
job_id='testJobID'
230+
job_id='testJobID',
231+
version='v1.2'
236232
)
237233
response = requests.post(f"{API_URL}/v3/ci/measurement/add", json=measurement.model_dump(), timeout=15)
238234
assert response.status_code == 204, Tests.assertion_info('success', response.text)

0 commit comments

Comments
 (0)