Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Samostatné linuxové uzly na skutečné síti se navzájem objeví přes multicast, propojí se, sdílejí claimy a předávky a zotaví se z rozdělení sítě i pádu, v laboratoři, kterou CI spouští

Loopbackové testy dokládají protokol; nemohou dokládat síť. Laboratoř meshe spouští čtyři

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Čtyři kontejnery na jednom docker bridge, bez seedů; deset scénářů se změřenými časy zapsanými do target/mesh-lab/evidence.json; úloha CI mesh-lab spustí laboratoř a poté scripts/ci/mesh-lab-evidence, který odmítne záznam, jenž není úplným přejímacím záznamem — laboratoř sama sebe nesoudí. Případ 414 pokrývá tohoto čtenáře a drží jeho požadovanou množinu rovnou scénářům, jichž laboratoř dosahuje. Jeden segment vrstvy 2 a jedno jádro — nikoli směrovaná topologie, topologie s NAT ani WAN; fyzické stroje jsou zdokumentovaný ruční postup.

Co to znamená

Loopback testy dokazují protokol; síť dokázat nemohou. Laboratoř meshe spustí čtyři linuxové kontejnery — tři obsluhují jeden repozitář, jeden jiný — každý s vlastním souborovým systémem, klíčem uzlu, checkoutem a síťovým rozhraním na jednom bridgi, bez deklarovaných seedů. Prostřednictvím HTTP povrchu a příkazové řádky každého uzlu ověřuje, že se uzly navzájem najdou přes UDP multicast, spojí se do plného meshe, zatímco čtvrtý je odmítnut, replikují claim a předávku, sblíží se na jednom digestu, přežijí uzel odpojený od sítě i uzel zabitý a restartovaný, a ověří se přes majordomus mesh verify. Verdikt a časování každého scénáře se zapisuje do souboru důkazů.

Princip

test/mesh-lab/run sestaví spustitelný soubor pro Linux (nebo si jej vezme), sestaví kolem něj image uzlu, vytvoří bridge, spustí uzly přes test/mesh-lab/node-entrypoint a provede deset scénářů: multicast_discovery, handshake, repository_isolation, cross_node_claim, claim_conflict, cross_node_handover, three_node_convergence, network_partition, process_crash_recovery, cli_verify. Při selhání vypíše stav spolupráce a konec logu každého uzlu, zapíše důkazy se selhávajícím verdiktem a skončí s kódem 10. CI úloha mesh-lab jej spouští při každé změně cratu nebo laboratoře.

Laboratoř sama sebe nesoudí. scripts/ci/mesh-lab-evidence si potom přečte target/mesh-lab/evidence.json a odmítne ho, pokud záznam není úplnou akceptací: schéma, které uvádí, celkový passed, všech deset scénářů s verdiktem pass a detailem, který říká, co se měřilo, čtyři uzly, oba transporty a spustitelný soubor a platformu přečtené z uzlu. Úloha CI spouští čtečku jako vlastní krok, takže laboratoř, která skončí s kódem 0, ale tvrdí méně, než slibuje, znamená červenou úlohu. test/cases/414_mesh_lab_evidence.sh tuto čtečku pokrývá — předloží jí jeden úplný záznam a devět neúplných a drží její požadovanou množinu shodnou se scénáři, ke kterým test/mesh-lab/run dosáhne, takže žádná strana se nemůže zmenšit bez selhávajícího případu.

Jak to vidět

test/mesh-lab/run                           # builds, runs, tears down (docker required)
jq . target/mesh-lab/evidence.json
scripts/ci/mesh-lab-evidence                # judges that record; exit 10 if it is not an acceptance
test/run.sh 414_mesh_lab_evidence           # covers the reader, no docker needed
MESH_LAB_KEEP=1 test/mesh-lab/run           # leaves the nodes up for inspection

Co nepokrývá

Jeden bridge je jeden segment vrstvy 2: laboratoř nesměruje mezi podsítěmi, neprochází NAT ani WAN a její uzly sdílejí jedno jádro. Fyzický běh na více strojích je samostatný ruční postup zdokumentovaný v docs/MESH.md.

Proč existuje

Posláním je spolupráce napříč stroji. Tvrzení o ní potřebuje stroje — nebo nejbližší reprodukovatelnou věc — na síti, kterou lze záměrně rozbít.

Detail vykreslený z docs/claims/mesh-network-acceptance.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Samostatné linuxové uzly na skutečné síti se navzájem objeví přes multicast, propojí se, sdílejí claimy a předávky a zotaví se z rozdělení sítě i pádu, v laboratoři, kterou CI spouští

    Vytvořeno na Mesh.

  2. 2 · kanonické tvrzení

    mesh-network-acceptancedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/MESH.md

  3. 3 · implementace

    test/mesh-lab/run

  4. 4 · test a scénáře

    Test: test/cases/414_mesh_lab_evidence.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 414_mesh_lab_evidence

Prohledává názvy a popisy všech stránek, které tento web publikuje.