// OrkestraKule saf yardımcıları: nodeId üretimi + yerel ilan alanları + defterle // uçtan uca (ilan → Online, task → Busy). Win32/kopru gerekmez (inline saf kısım). #include "fiko_test.hpp" #include "orkestra_kule.hpp" using namespace fiko; using namespace fiko::orkestra; FIKO_TEST(orkestra_node_id_deterministik) { const uint64_t a1 = orkestraNodeId("ATOLYE-PC"); const uint64_t a2 = orkestraNodeId("ATOLYE-PC"); const uint64_t b = orkestraNodeId("RENDER-PC"); FIKO_KONTROL(a1 == a2); FIKO_KONTROL(a1 != b); FIKO_KONTROL(a1 != 0); // 0 = yerel kısayol adresi, kimlik olamaz FIKO_KONTROL(orkestraNodeId("") != 0); } FIKO_TEST(orkestra_yerel_ilan_alanlari) { const NodeBilgi n = yerelIlanKur(42, "makine", "0.5.0", 3, 1); FIKO_KONTROL(n.nodeId == 42); FIKO_KONTROL(n.ad == "makine"); FIKO_KONTROL(n.surum == "0.5.0"); FIKO_KONTROL(n.runtimeSayisi == 3); FIKO_KONTROL(n.aktifTask == 1); FIKO_KONTROL(n.dogrulanmis); // kendi makinemiz — eşleştirme gerekmez FIKO_KONTROL(yerelIlanKur(1, "x", nullptr, 0, 0).surum.empty()); // null sürüm güvenli } FIKO_TEST(orkestra_yerel_ilan_defterde) { NodeKayitDefteri defter; const uint64_t id = orkestraNodeId("makine"); defter.ilanIsle(yerelIlanKur(id, "makine", "0.5.0", 1, 0), 1000); FIKO_KONTROL(defter.bul(id) && defter.bul(id)->durum == NodeDurum::Online); // Görev başladı → Busy; bitti → Online'a döner (metrik akışı henüz yok). defter.aktifTaskAyarla(id, 2); FIKO_KONTROL(defter.bul(id)->durum == NodeDurum::Busy); defter.aktifTaskAyarla(id, 0); FIKO_KONTROL(defter.bul(id)->durum == NodeDurum::Online); // Eşik canlı güncelleme (AyarSistemi köprüsü): kısa eşikle hemen Yanıtsız. defter.esikAyarla(100, 200); defter.tazele(1150); FIKO_KONTROL(defter.bul(id)->durum == NodeDurum::Yanitsiz); }