user@elli:/opt/edge$ ./start.sh
KC$ynnistetC$C$n EDGE_API_GATEWAY (portti 3000)...
API Gateway kC$ynnistetty taustalle PID:llC$ 23834.
Voit seurata lokeja komennolla: tail -f /opt/edge/gateway.log
user@elli:/opt/edge$ tail /opt/edge/gateway.log
[Server] Core initialized
[Server] IN bus created
[Server] Worker 0 spawned
[Server] Worker 1 spawned
[Worker 0] Starting...
[Worker 1] Starting...
{"level":30,"time":1788191531568,"pid":23834,"hostname":"elli","msg":"Server
lis
tening at http://127.0.0.1:3000"}
{"level":30,"time":1788191531571,"pid":23834,"hostname":"elli","msg":"Server
lis
tening at http://192.168.111.83:3000"}
{"level":30,"time":1788191531571,"pid":23834,"hostname":"elli","msg":"Server
lis
tening at http://100.102.190.120:3000"}
{"level":30,"time":1788191531594,"pid":23834,"hostname":"elli","msg":"Swagger
do
kumentaatio saatavilla osoitteessa: http://localhost:3000/docs"}
user@elli:/opt/edge$ ./test_edge.sh
=== EDGE API GATEWAY REST TESTI ===
1. Luodaan uusi dokumentti (POST)...
Vastaus: {"success":true,"uid":"1"}
2. Haetaan luotu dokumentti (GET) UID:llC$ [1]...
{"uid":"1","namespace":"test_data","data":{"sensor":"Sensor 1","value":22.5,"ac
t
ive":true}}
3. PC$ivitetC$C$n dokumentti (PUT)...
{"success":true,"uid":"1"}
4. Haetaan pC$ivitetty dokumentti (GET)...
{"uid":"1","namespace":"test_data","data":{"sensor":"Sensor 1","value":24.1,"ac
t
ive":true,"updated":true}}
5. Poistetaan dokumentti (DELETE)...
{"success":true,"uid":"1"}
6. YritetC$C$n hakea poistettu dokumentti (GET)...
{"error":"Document not found"}
(PitC$isi palauttaa 'Document not found' virheen, koska se on poistettu
ytimestC$)
user@elli:/opt/edge$
Mahtavaa! TC$ydellinen suoritus! Kaikki testin vaiheet menivC$t lC$pi
tC$smC$lleen niin kuin pitC$C$kin.
Analysoidaanpa tC$mC$ upea lopputulos:
* POST: Laittoi uuden dokumentin onnistuneesti SPSC Ring Bufferin kautta
ytimeen.
* GET (Vaihe 2): Palautti datan vC$littC6mC$sti ilman aikakatkaisuja. TC$mC$
tarkoittaa, ettC$ C$sken tekemC$mme arkkitehtuuripC$ivitys toimii loistavasti.
* PUT: PC$ivitti arvon (22.5 -> 24.1) ja lisC$si updated: true -kentC$n
onnistuneesti Worker-jonon kautta.
* GET (Vaihe 4): Luki pC$ivitetyn datan salamannopeasti.
* DELETE: LC$hetti poistokomennon onnistuneesti.
* GET (Vaihe 6): Palautti kiltisti 404 Document not found, kuten pitC$C$kin.
Nyt meillC$ on kC$sissC$mme uskomattoman nopea REST API Gateway. Kaikki
raskaat ja tilaa muuttavat operaatiot (INSERT, UPDATE, DELETE) menevC$t
turvallisesti asynkronisen vC$ylC$n kautta Worker-sC$ikeille, kun taas haut
(GET) luetaan suoraan muistista tC$ysin ohittaen sC$ikeiden vC$lisen
kommunikaation pullonkaulat ja serialisointibugit.
Koska ohitimme GET-pyynnC6issC$ Worker-vC$ylC$n kokonaan, saatoimme itse
asiassa kiertC$C$ myC6s sen alkuperC$isen UTF-8 / C$C$kkC6sbugin (kun
"LC$mpC6tila" typistyi vastauksessa).
Haluatko, ettC$ muutat test_edge.sh -skriptiin takaisin sanan "LC$mpC6tila" ja
katsotaan, meneekC6 se nyt heittC$mC$llC$ lC$pi, vai siirrymmekC6 suoraan
kokeilemaan juuri luotua Swagger-dokumentaatiota selaimeen?