Skip to content

Commit 9869e14

Browse files
committed
feat: attempt to fix schema tests.
1 parent 1faf45e commit 9869e14

File tree

5 files changed

+47
-31
lines changed

5 files changed

+47
-31
lines changed

core/server/ClientWorker.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ ClientWorker::procSchemaCreateRequest(const std::string &a_uid,
754754
LogContext log_context) {
755755
log_context.correlation_id =
756756
std::get<std::string>(msg_request->get(MessageAttribute::CORRELATION_ID));
757-
PROC_MSG_BEGIN(SchemaCreateRequest, AckReply, log_context)
757+
PROC_MSG_BEGIN(SchemaCreateRequest, SchemaDataReply, log_context)
758758

759759
m_db_client.setClient(a_uid);
760760

@@ -771,7 +771,8 @@ ClientWorker::procSchemaCreateRequest(const std::string &a_uid,
771771

772772
validator.set_root_schema(schema);
773773

774-
m_db_client.schemaCreate(*request, log_context);
774+
m_db_client.schemaCreate(*request, reply, log_context);
775+
775776
} catch (exception &e) {
776777
DL_ERROR(log_context, "Invalid metadata schema: " << e.what());
777778
EXCEPT_PARAM(1, "Invalid metadata schema: " << e.what());
@@ -809,7 +810,7 @@ ClientWorker::procSchemaReviseRequest(const std::string &a_uid,
809810
}
810811
}
811812

812-
m_db_client.schemaRevise(*request, log_context);
813+
m_db_client.schemaRevise(*request, reply, log_context);
813814

814815
PROC_MSG_END(log_context);
815816
}

core/server/DatabaseAPI.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2928,6 +2928,7 @@ void DatabaseAPI::schemaView(const SDMS::SchemaViewRequest &a_request,
29282928
}
29292929

29302930
void DatabaseAPI::schemaCreate(const SDMS::SchemaCreateRequest &a_request,
2931+
SDMS::SchemaDataReply &a_reply,
29312932
LogContext log_context) {
29322933
libjson::Value result;
29332934

@@ -2941,9 +2942,11 @@ void DatabaseAPI::schemaCreate(const SDMS::SchemaCreateRequest &a_request,
29412942
string body = payload.dump(-1, ' ', true);
29422943

29432944
dbPost("schema/create", {}, &body, result, log_context);
2945+
setSchemaDataReply(a_reply, result, log_context);
29442946
}
29452947

29462948
void DatabaseAPI::schemaRevise(const SDMS::SchemaReviseRequest &a_request,
2949+
SDMS::SchemaDataReply &a_reply,
29472950
LogContext log_context) {
29482951
libjson::Value result;
29492952

@@ -2967,6 +2970,7 @@ void DatabaseAPI::schemaRevise(const SDMS::SchemaReviseRequest &a_request,
29672970
string body = payload.dump(-1, ' ', true);
29682971

29692972
dbPost("schema/revise", {{"id", a_request.id()}}, &body, result, log_context);
2973+
setSchemaDataReply(a_reply, result, log_context);
29702974
}
29712975

29722976
void DatabaseAPI::schemaUpdate(const SDMS::SchemaUpdateRequest &a_request,

core/server/DatabaseAPI.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,10 @@ class DatabaseAPI {
312312
void schemaView(const std::string &a_id, libjson::Value &a_result,
313313
LogContext log_context);
314314
void schemaCreate(const SDMS::SchemaCreateRequest &a_request,
315+
SDMS::SchemaDataReply &a_reply,
315316
LogContext log_context);
316317
void schemaRevise(const SDMS::SchemaReviseRequest &a_request,
318+
SDMS::SchemaDataReply &a_reply,
317319
LogContext log_context);
318320
void schemaUpdate(const SDMS::SchemaUpdateRequest &a_request,
319321
LogContext log_context);

tests/end-to-end/test_api_record.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,6 @@ def test_record_with_schema_enforcement(self):
284284
)
285285

286286
schema_id = schema_result[0].data[0].id # should be "test_rec_schema:1"
287-
schema_id = schema_result[0].data[0].id
288287
self.assertIn(":", schema_id, f"Expected versioned schema ID, got: {schema_id}")
289288
# --- Record create with valid metadata and schema enforce ---
290289
valid_metadata = json.dumps({

tests/end-to-end/test_api_schema.py

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,18 @@ def setUp(self):
7575
def test_schema_create_view_delete(self):
7676
"""Test basic schema lifecycle: create, view, delete."""
7777

78-
schema_id = "test_basic_schema"
78+
schema_name = "test_basic_schema"
7979
definition = json.dumps(self._base_schema_def)
8080

8181
# Create
8282
create_result = self._df_api.schemaCreate(
83-
schema_id,
83+
schema_name,
8484
definition=definition,
8585
description="Basic test schema",
8686
)
87+
schema_id = create_result[0].data[0].id
8788
# schemaCreate returns AckReply
88-
self.assertEqual(create_result[1], "AckReply")
89+
self.assertEqual(create_result[1], "SchemaDataReply")
8990

9091
# View
9192
view_result = self._df_api.schemaView(schema_id)
@@ -142,15 +143,16 @@ def test_schema_create_both_definition_sources(self):
142143
def test_schema_update(self):
143144
"""Test updating a schema in place."""
144145

145-
schema_id = "test_update_schema"
146+
schema_name = "test_update_schema"
146147
definition = json.dumps(self._base_schema_def)
147148

148-
self._df_api.schemaCreate(
149-
schema_id,
149+
create_result = self._df_api.schemaCreate(
150+
schema_name,
150151
definition=definition,
151152
description="Before update",
152153
)
153154

155+
schema_id = create_result[0].data[0].id
154156
# Update description
155157
self._df_api.schemaUpdate(
156158
schema_id,
@@ -190,29 +192,31 @@ def test_schema_update(self):
190192
def test_schema_revise(self):
191193
"""Test creating a new revision of a schema."""
192194

193-
schema_id = "test_revise_schema"
195+
schema_name = "test_revise_schema"
194196
definition = json.dumps(self._base_schema_def)
195197

196-
self._df_api.schemaCreate(
197-
schema_id,
198+
create_result = self._df_api.schemaCreate(
199+
schema_name,
198200
definition=definition,
199201
description="Revision 1",
200202
)
201203

204+
schema_id = create_result[0].data[0].id
202205
view_v1 = self._df_api.schemaView(schema_id)
203206
ver_1 = view_v1[0].schema[0].ver
204207

205208
# Revise with updated definition
206209
revised_def = self._base_schema_def.copy()
207210
revised_def["properties"]["revision_field"] = {"type": "boolean"}
208211

209-
self._df_api.schemaRevise(
212+
create_result = self._df_api.schemaRevise(
210213
schema_id,
211214
definition=json.dumps(revised_def),
212215
description="Revision 2",
213216
)
217+
schema_id2 = create_result[0].data[0].id
214218

215-
view_v2 = self._df_api.schemaView(schema_id)
219+
view_v2 = self._df_api.schemaView(schema_id2)
216220
ver_2 = view_v2[0].schema[0].ver
217221

218222
self.assertGreater(ver_2, ver_1)
@@ -223,6 +227,7 @@ def test_schema_revise(self):
223227

224228
# Cleanup
225229
self._df_api.schemaDelete(schema_id)
230+
self._df_api.schemaDelete(schema_id2)
226231

227232
def test_schema_search(self):
228233
"""Test schema search functionality."""
@@ -231,13 +236,14 @@ def test_schema_search(self):
231236
schemas_to_cleanup = []
232237

233238
for i in range(3):
234-
sid = "{}_{}".format(prefix, i)
235-
schemas_to_cleanup.append(sid)
236-
self._df_api.schemaCreate(
237-
sid,
239+
s_name = "{}_{}".format(prefix, i)
240+
create_result = self._df_api.schemaCreate(
241+
s_name,
238242
definition=json.dumps(self._base_schema_def),
239243
description="Searchable schema number {}".format(i),
240244
)
245+
schema_id = create_result[0].data[0].id
246+
schemas_to_cleanup.append(schema_id)
241247

242248
# Search by ID prefix
243249
search_result = self._df_api.schemaSearch(schema_id=prefix)
@@ -267,16 +273,17 @@ def test_schema_search(self):
267273
def test_schema_public_flag(self):
268274
"""Test creating a public schema."""
269275

270-
schema_id = "test_public_schema"
276+
schema_name = "test_public_schema"
271277
definition = json.dumps(self._base_schema_def)
272278

273-
self._df_api.schemaCreate(
274-
schema_id,
279+
create_result = self._df_api.schemaCreate(
280+
schema_name,
275281
definition=definition,
276282
description="Public schema test",
277283
public=True,
278284
)
279285

286+
schema_id = create_result[0].data[0].id
280287
view_result = self._df_api.schemaView(schema_id)
281288
self.assertTrue(view_result[0].schema[0].pub)
282289

@@ -286,13 +293,14 @@ def test_schema_public_flag(self):
286293
def test_metadata_validate_pass(self):
287294
"""Test metadata validation with valid metadata."""
288295

289-
schema_id = "test_validate_schema"
296+
schema_name = "test_validate_schema"
290297
definition = json.dumps(self._base_schema_def)
291298

292-
self._df_api.schemaCreate(
293-
schema_id,
299+
create_result = self._df_api.schemaCreate(
300+
schema_name,
294301
definition=definition,
295302
)
303+
schema_id = create_result[0].data[0].id
296304

297305
valid_metadata = json.dumps({
298306
"name": "widget",
@@ -309,13 +317,14 @@ def test_metadata_validate_pass(self):
309317
def test_metadata_validate_fail(self):
310318
"""Test metadata validation with invalid metadata."""
311319

312-
schema_id = "test_validate_fail_schema"
320+
schema_name = "test_validate_fail_schema"
313321
definition = json.dumps(self._base_schema_def)
314322

315-
self._df_api.schemaCreate(
316-
schema_id,
323+
create_result = self._df_api.schemaCreate(
324+
schema_name,
317325
definition=definition,
318326
)
327+
schema_id = create_result[0].data[0].id
319328

320329
# Missing required "name" field, wrong type for "value"
321330
invalid_metadata = json.dumps({
@@ -350,19 +359,20 @@ def test_metadata_validate_requires_input(self):
350359
def test_schema_create_from_file(self):
351360
"""Test creating a schema from a definition file."""
352361

353-
schema_id = "test_file_schema"
362+
schema_name = "test_file_schema"
354363
tmp_file = "/tmp/test_schema_def.json"
355364

356365
try:
357366
with open(tmp_file, "w") as f:
358367
json.dump(self._base_schema_def, f)
359368

360369
create_result = self._df_api.schemaCreate(
361-
schema_id,
370+
schema_name,
362371
definition_file=tmp_file,
363372
description="Created from file",
364373
)
365-
self.assertEqual(create_result[1], "AckReply")
374+
schema_id = create_result[0].data[0].id
375+
self.assertEqual(create_result[1], "SchemaDataReply")
366376

367377
view_result = self._df_api.schemaView(schema_id)
368378
returned_def = json.loads(getattr(view_result[0].schema[0], 'def'))

0 commit comments

Comments
 (0)