refactor(dynamic): enhance event recording across brokers, improve SQL migration handling for frameworks, update runtime dependency management, and add test coverage

This commit is contained in:
elipeter 2026-05-27 08:23:48 -05:00
parent 9bf085ee48
commit 0903231189
9 changed files with 225 additions and 9 deletions

View file

@ -79,6 +79,28 @@ fn make_spec(lang: Lang, queue: &str, handler: &str, fixture: &str) -> HarnessSp
}
}
fn make_spec_with_adapter(
lang: Lang,
queue: &str,
handler: &str,
fixture: &str,
adapter: &str,
) -> HarnessSpec {
let mut spec = make_spec(lang, queue, handler, fixture);
spec.framework = Some(FrameworkBinding {
adapter: adapter.to_owned(),
kind: EntryKind::MessageHandler {
queue: queue.to_owned(),
message_schema: None,
},
route: None,
request_params: vec![],
response_writer: None,
middleware: vec![],
});
spec
}
// ── Supported-set assertions ──────────────────────────────────────────────────
#[test]
@ -205,6 +227,62 @@ fn message_handler_go_uses_nyx_handlers_registry() {
assert!(h.source.contains("nyxRecordBrokerPublish"));
}
#[test]
fn message_handler_remaining_brokers_emit_delivery_and_ack_events() {
let cases = [
(
Lang::Python,
"pubsub_python",
"projects/p/subscriptions/s",
"callback",
"pubsub-python",
"NYX_PUBSUB_LOG",
),
(
Lang::Python,
"rabbit_python",
"work",
"on_message",
"rabbit-python",
"NYX_RABBIT_LOG",
),
(
Lang::Java,
"rabbit_java",
"work",
"onMessage",
"rabbit-java",
"NYX_RABBIT_LOG",
),
(
Lang::Go,
"nats_go",
"events",
"OnMessage",
"nats-go",
"NYX_NATS_LOG",
),
];
for (lang, fixture, queue, handler, adapter, log_env) in cases {
let spec = make_spec_with_adapter(lang, queue, handler, entry_file(fixture), adapter);
let h = lang::emit(&spec).expect("emit ok");
assert!(
h.source.contains(log_env),
"{adapter} harness must write the broker log env var",
);
assert!(
h.source.contains("\"deliver\"") || h.source.contains("'deliver'"),
"{adapter} harness must record delivery events: {}",
h.source
);
assert!(
h.source.contains("\"ack\"") || h.source.contains("'ack'"),
"{adapter} harness must record ack events: {}",
h.source
);
}
}
// ── Framework-adapter assertions ──────────────────────────────────────────────
fn ts_language_for(lang: Lang) -> tree_sitter::Language {

View file

@ -909,6 +909,7 @@ fn migration_python_harness_carries_sentinel_and_handler() {
assert!(h.source.contains("__NYX_MIGRATION__"));
assert!(h.source.contains("\"upgrade\""));
assert!(h.source.contains("__nyx_stub_sql_record"));
assert!(h.source.contains("MigrationContext.configure"));
assert!(h.source.contains("NYX_SQL_ENDPOINT"));
}
@ -924,6 +925,8 @@ fn migration_js_harness_carries_sentinel_and_handler() {
assert!(h.source.contains("__NYX_MIGRATION__"));
assert!(h.source.contains("\"up\""));
assert!(h.source.contains("__nyx_stub_sql_record"));
assert!(h.source.contains("require('sequelize')"));
assert!(h.source.contains("getQueryInterface"));
assert!(h.source.contains("global.__nyx_prisma"));
assert!(h.source.contains("node:sqlite"));
assert!(h.source.contains("NYX_SQL_ENDPOINT"));
@ -941,6 +944,7 @@ fn migration_ruby_harness_carries_sentinel_and_handler() {
assert!(h.source.contains("__NYX_MIGRATION__"));
assert!(h.source.contains("AddIndex"));
assert!(h.source.contains("__nyx_stub_sql_record"));
assert!(h.source.contains("ActiveRecord::Base.establish_connection"));
assert!(h.source.contains("SQLite3::Database"));
assert!(h.source.contains("NYX_SQL_ENDPOINT"));
}
@ -957,6 +961,7 @@ fn migration_php_harness_carries_sentinel_and_handler() {
assert!(h.source.contains("__NYX_MIGRATION__"));
assert!(h.source.contains("AddUsers"));
assert!(h.source.contains("__nyx_stub_sql_record"));
assert!(h.source.contains("vendor/autoload.php"));
assert!(h.source.contains("new SQLite3"));
assert!(h.source.contains("NYX_SQL_ENDPOINT"));
}