Skip to content

Commit 7d67229

Browse files
committed
update agreggate and error per node errors
1 parent 7d985fe commit 7d67229

File tree

9 files changed

+161
-59
lines changed

9 files changed

+161
-59
lines changed

scripts/print_aggregated_errors.py

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -182,38 +182,40 @@ def print_all_errors():
182182

183183
if errors:
184184
print(f"🔧 {node_name}")
185+
186+
# Group errors by type and count them
187+
error_counts = {}
188+
185189
for attempt_key, attempt_data in errors.items():
186190
# Handle both old and new error formats
187191
if isinstance(attempt_data, dict) and 'ka_label' in attempt_data:
188192
# New format with structured error data per attempt
189-
ka_label = attempt_data.get('ka_label', 'Unknown KA')
190-
attempt_number = attempt_data.get('attempt', 1)
191193
publish_error = attempt_data.get('publish_error')
192194
query_error = attempt_data.get('query_error')
193195
publisher_get_error = attempt_data.get('publisher_get_error')
194196
non_publisher_get_error = attempt_data.get('non_publisher_get_error')
195197

196-
# Show actual error messages for each error type
197-
error_lines = []
198+
# Count each error type
198199
if publish_error:
199-
error_lines.append(f" • publishing — {publish_error}")
200+
error_key = f"publishing — {publish_error}"
201+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
200202
if query_error:
201-
error_lines.append(f" • querying — {query_error}")
203+
error_key = f"querying — {query_error}"
204+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
202205
if publisher_get_error:
203-
error_lines.append(f" • local get — {publisher_get_error}")
206+
error_key = f"local get — {publisher_get_error}"
207+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
204208
if non_publisher_get_error:
205-
error_lines.append(f" • remote get — {non_publisher_get_error}")
206-
207-
if error_lines:
208-
print(f" • {ka_label} (attempt {attempt_number}):")
209-
for line in error_lines:
210-
print(line)
211-
else:
212-
print(f" • {ka_label} (attempt {attempt_number}): no errors")
209+
error_key = f"remote get — {non_publisher_get_error}"
210+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
213211
else:
214212
# Old format - simple count
215213
count = attempt_data if isinstance(attempt_data, int) else 1
216214
print(f" • {count}x {attempt_key}")
215+
216+
# Print summed up errors
217+
for error_type, count in error_counts.items():
218+
print(f" • {count}x {error_type}")
217219
print()
218220
else:
219221
print(f"✅ {node_name}: No errors\n")
@@ -231,34 +233,36 @@ def print_error_for_node():
231233
if not errors:
232234
print(" ✅ No errors\n")
233235
else:
236+
# Group errors by type and count them
237+
error_counts = {}
238+
234239
for attempt_key, attempt_data in errors.items():
235240
if isinstance(attempt_data, dict) and 'ka_label' in attempt_data:
236-
ka_label = attempt_data.get('ka_label', 'Unknown KA')
237-
attempt_number = attempt_data.get('attempt', 1)
238241
publish_error = attempt_data.get('publish_error')
239242
query_error = attempt_data.get('query_error')
240243
publisher_get_error = attempt_data.get('publisher_get_error')
241244
non_publisher_get_error = attempt_data.get('non_publisher_get_error')
242245

243-
error_lines = []
246+
# Count each error type
244247
if publish_error:
245-
error_lines.append(f" • publishing — {publish_error}")
248+
error_key = f"publishing — {publish_error}"
249+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
246250
if query_error:
247-
error_lines.append(f" • querying — {query_error}")
251+
error_key = f"querying — {query_error}"
252+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
248253
if publisher_get_error:
249-
error_lines.append(f" • local get — {publisher_get_error}")
254+
error_key = f"local get — {publisher_get_error}"
255+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
250256
if non_publisher_get_error:
251-
error_lines.append(f" • remote get — {non_publisher_get_error}")
252-
253-
if error_lines:
254-
print(f" • {ka_label} (attempt {attempt_number}):")
255-
for line in error_lines:
256-
print(line)
257-
else:
258-
print(f" • {ka_label} (attempt {attempt_number}): no errors")
257+
error_key = f"remote get — {non_publisher_get_error}"
258+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
259259
else:
260260
count = attempt_data if isinstance(attempt_data, int) else 1
261261
print(f" • {count}x {attempt_key}")
262+
263+
# Print summed up errors
264+
for error_type, count in error_counts.items():
265+
print(f" • {count}x {error_type}")
262266
print()
263267

264268
if __name__ == "__main__":

tests/mainnet/Base_Mainnet.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ def run_test_for_node(node, index):
175175
publish_times.append(end - start)
176176
except Exception as e:
177177
log_error(e, name, "publishing", ka_number=i + 1, attempt_number=i + 1)
178+
print(f"\n❌ Error on {name} during publishing")
179+
print(f"🔺 Type: {type(e).__name__}")
180+
print(f"🧵 Message: {str(e)}")
181+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
178182
ual = "did:dkg:base:8453/0xc28f310a87f7621a087a603e2ce41c22523f11d7/120278"
179183
print(f"⚠️ Using fallback UAL: {ual}")
180184
failed_assets.append(f"KA #{i + 1} (Publish failed — No UAL)")
@@ -197,6 +201,10 @@ def run_test_for_node(node, index):
197201
query_times.append(end - start)
198202
except Exception as e:
199203
log_error(e, name, "querying", ka_number=i + 1, attempt_number=i + 1)
204+
print(f"\n❌ Error on {name} during querying")
205+
print(f"🔺 Type: {type(e).__name__}")
206+
print(f"🧵 Message: {str(e)}")
207+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
200208
query_fail += 1
201209
failed_assets.append(f"KA #{i + 1} (Query failed — UAL: {ual})")
202210

@@ -210,6 +218,10 @@ def run_test_for_node(node, index):
210218
local_get_times.append(end - start)
211219
except Exception as e:
212220
log_error(e, name, "local get", ka_number=i + 1, attempt_number=i + 1)
221+
print(f"\n❌ Error on {name} during local get")
222+
print(f"🔺 Type: {type(e).__name__}")
223+
print(f"🧵 Message: {str(e)}")
224+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
213225
local_get_fail += 1
214226
failed_assets.append(f"KA #{i + 1} (Local Get failed — UAL: {ual})")
215227

@@ -241,6 +253,10 @@ def run_test_for_node(node, index):
241253
remote_get_times.append(end - start)
242254
except Exception as e:
243255
log_error(e, name, "get", remote_name, ka_number=i + 1, attempt_number=i + 1)
256+
print(f"\n❌ Error on {name} during get on {remote_name}")
257+
print(f"🔺 Type: {type(e).__name__}")
258+
print(f"🧵 Message: {str(e)}")
259+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
244260
remote_get_fail += 1
245261
failed_assets.append(f"KA #{i + 1} (Get failed — UAL: {ual})")
246262

tests/mainnet/Gnosis_Mainnet.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ def run_test_for_node(node, index):
171171
publish_times.append(end - start)
172172
except Exception as e:
173173
log_error(e, name, "publishing", ka_number=i + 1, attempt_number=i + 1)
174+
print(f"\n❌ Error on {name} during publishing")
175+
print(f"🔺 Type: {type(e).__name__}")
176+
print(f"🧵 Message: {str(e)}")
177+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
174178
ual = "did:dkg:gnosis:100/0xc28f310a87f7621a087a603e2ce41c22523f11d7/120278"
175179
print(f"⚠️ Using fallback UAL: {ual}")
176180
failed_assets.append(f"KA #{i + 1} (Publish failed — No UAL)")
@@ -193,6 +197,10 @@ def run_test_for_node(node, index):
193197
query_times.append(end - start)
194198
except Exception as e:
195199
log_error(e, name, "querying", ka_number=i + 1, attempt_number=i + 1)
200+
print(f"\n❌ Error on {name} during querying")
201+
print(f"🔺 Type: {type(e).__name__}")
202+
print(f"🧵 Message: {str(e)}")
203+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
196204
query_fail += 1
197205
failed_assets.append(f"KA #{i + 1} (Query failed — UAL: {ual})")
198206

@@ -206,6 +214,10 @@ def run_test_for_node(node, index):
206214
local_get_times.append(end - start)
207215
except Exception as e:
208216
log_error(e, name, "local get", ka_number=i + 1, attempt_number=i + 1)
217+
print(f"\n❌ Error on {name} during local get")
218+
print(f"🔺 Type: {type(e).__name__}")
219+
print(f"🧵 Message: {str(e)}")
220+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
209221
local_get_fail += 1
210222
failed_assets.append(f"KA #{i + 1} (Local Get failed — UAL: {ual})")
211223

@@ -237,6 +249,10 @@ def run_test_for_node(node, index):
237249
remote_get_times.append(end - start)
238250
except Exception as e:
239251
log_error(e, name, "get", remote_name, ka_number=i + 1, attempt_number=i + 1)
252+
print(f"\n❌ Error on {name} during get on {remote_name}")
253+
print(f"🔺 Type: {type(e).__name__}")
254+
print(f"🧵 Message: {str(e)}")
255+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
240256
remote_get_fail += 1
241257
failed_assets.append(f"KA #{i + 1} (Get failed — UAL: {ual})")
242258

tests/mainnet/Neuroweb_Mainnet.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ def run_test_for_node(node, index):
171171
publish_times.append(end - start)
172172
except Exception as e:
173173
log_error(e, name, "publishing", ka_number=i + 1, attempt_number=i + 1)
174+
print(f"\n❌ Error on {name} during publishing")
175+
print(f"🔺 Type: {type(e).__name__}")
176+
print(f"🧵 Message: {str(e)}")
177+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
174178
ual = "did:dkg:neuroweb:2043/0xc28f310a87f7621a087a603e2ce41c22523f11d7/120278"
175179
print(f"⚠️ Using fallback UAL: {ual}")
176180
failed_assets.append(f"KA #{i + 1} (Publish failed — No UAL)")
@@ -193,6 +197,10 @@ def run_test_for_node(node, index):
193197
query_times.append(end - start)
194198
except Exception as e:
195199
log_error(e, name, "querying", ka_number=i + 1, attempt_number=i + 1)
200+
print(f"\n❌ Error on {name} during querying")
201+
print(f"🔺 Type: {type(e).__name__}")
202+
print(f"🧵 Message: {str(e)}")
203+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
196204
query_fail += 1
197205
failed_assets.append(f"KA #{i + 1} (Query failed — UAL: {ual})")
198206

@@ -206,6 +214,10 @@ def run_test_for_node(node, index):
206214
local_get_times.append(end - start)
207215
except Exception as e:
208216
log_error(e, name, "local get", ka_number=i + 1, attempt_number=i + 1)
217+
print(f"\n❌ Error on {name} during local get")
218+
print(f"🔺 Type: {type(e).__name__}")
219+
print(f"🧵 Message: {str(e)}")
220+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
209221
local_get_fail += 1
210222
failed_assets.append(f"KA #{i + 1} (Local Get failed — UAL: {ual})")
211223

@@ -237,6 +249,10 @@ def run_test_for_node(node, index):
237249
remote_get_times.append(end - start)
238250
except Exception as e:
239251
log_error(e, name, "get", remote_name, ka_number=i + 1, attempt_number=i + 1)
252+
print(f"\n❌ Error on {name} during get on {remote_name}")
253+
print(f"🔺 Type: {type(e).__name__}")
254+
print(f"🧵 Message: {str(e)}")
255+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
240256
remote_get_fail += 1
241257
failed_assets.append(f"KA #{i + 1} (Get failed — UAL: {ual})")
242258

tests/mainnet/conftest.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,38 +176,39 @@ def avg_time(times):
176176
errors = get_error_breakdown(node_name)
177177

178178
if errors:
179+
# Group errors by type and count them
180+
error_counts = {}
181+
179182
for attempt_key, attempt_data in errors.items():
180183
# Handle both old and new error formats
181184
if isinstance(attempt_data, dict) and 'ka_label' in attempt_data:
182185
# New format with structured error data per attempt
183-
ka_label = attempt_data.get('ka_label', 'Unknown KA')
184-
attempt_number = attempt_data.get('attempt', 1)
185186
publish_error = attempt_data.get('publish_error')
186187
query_error = attempt_data.get('query_error')
187188
publisher_get_error = attempt_data.get('publisher_get_error')
188189
non_publisher_get_error = attempt_data.get('non_publisher_get_error')
189190

190-
# Show actual error messages for each error type
191-
error_lines = []
191+
# Count each error type
192192
if publish_error:
193-
error_lines.append(f" • publishing — {publish_error}")
193+
error_key = f"publishing — {publish_error}"
194+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
194195
if query_error:
195-
error_lines.append(f" • querying — {query_error}")
196+
error_key = f"querying — {query_error}"
197+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
196198
if publisher_get_error:
197-
error_lines.append(f" • local get — {publisher_get_error}")
199+
error_key = f"local get — {publisher_get_error}"
200+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
198201
if non_publisher_get_error:
199-
error_lines.append(f" • remote get — {non_publisher_get_error}")
200-
201-
if error_lines:
202-
print(f" • {ka_label} (attempt {attempt_number}):")
203-
for line in error_lines:
204-
print(line)
205-
else:
206-
print(f" • {ka_label} (attempt {attempt_number}): no errors")
202+
error_key = f"remote get — {non_publisher_get_error}"
203+
error_counts[error_key] = error_counts.get(error_key, 0) + 1
207204
else:
208205
# Old format - simple count
209206
count = attempt_data if isinstance(attempt_data, int) else 1
210207
print(f" • {count}x {attempt_key}")
208+
209+
# Print summed up errors
210+
for error_type, count in error_counts.items():
211+
print(f" • {count}x {error_type}")
211212
else:
212213
print(" • No errors")
213214

tests/testnet/Base_Testnet.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ def run_test_for_node(node, index):
176176
publish_times.append(end - start)
177177
except Exception as e:
178178
log_error(e, name, "publishing", ka_number=i + 1, attempt_number=i + 1)
179+
print(f"\n❌ Error on {name} during publishing")
180+
print(f"🔺 Type: {type(e).__name__}")
181+
print(f"🧵 Message: {str(e)}")
182+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
179183
ual = "did:dkg:base:8453/0xc28f310a87f7621a087a603e2ce41c22523f11d7/120278"
180184
print(f"⚠️ Using fallback UAL: {ual}")
181185
failed_assets.append(f"KA #{i + 1} (Publish failed — No UAL)")
@@ -198,6 +202,10 @@ def run_test_for_node(node, index):
198202
query_times.append(end - start)
199203
except Exception as e:
200204
log_error(e, name, "querying", ka_number=i + 1, attempt_number=i + 1)
205+
print(f"\n❌ Error on {name} during querying")
206+
print(f"🔺 Type: {type(e).__name__}")
207+
print(f"🧵 Message: {str(e)}")
208+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
201209
query_fail += 1
202210
failed_assets.append(f"KA #{i + 1} (Query failed — UAL: {ual})")
203211

@@ -211,6 +219,10 @@ def run_test_for_node(node, index):
211219
local_get_times.append(end - start)
212220
except Exception as e:
213221
log_error(e, name, "local get", ka_number=i + 1, attempt_number=i + 1)
222+
print(f"\n❌ Error on {name} during local get")
223+
print(f"🔺 Type: {type(e).__name__}")
224+
print(f"🧵 Message: {str(e)}")
225+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
214226
local_get_fail += 1
215227
failed_assets.append(f"KA #{i + 1} (Local Get failed — UAL: {ual})")
216228

@@ -242,6 +254,10 @@ def run_test_for_node(node, index):
242254
remote_get_times.append(end - start)
243255
except Exception as e:
244256
log_error(e, name, "get", remote_name, ka_number=i + 1, attempt_number=i + 1)
257+
print(f"\n❌ Error on {name} during get on {remote_name}")
258+
print(f"🔺 Type: {type(e).__name__}")
259+
print(f"🧵 Message: {str(e)}")
260+
print(f"📍 Location: {traceback.format_exc().splitlines()[-1]}")
245261
remote_get_fail += 1
246262
failed_assets.append(f"KA #{i + 1} (Get failed — UAL: {ual})")
247263

0 commit comments

Comments
 (0)