From 2d034b6c86cc00391f695c10c4bd64d3f44427ad Mon Sep 17 00:00:00 2001 From: Raycho Mukelov Date: Tue, 12 Sep 2023 14:49:14 +0300 Subject: [PATCH] Tornado frontend --- tests/raft_test_node_standalone.nim | 54 ++++++++++++++++++------ tests/tornado_simple_raft_node_server.py | 6 +-- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/tests/raft_test_node_standalone.nim b/tests/raft_test_node_standalone.nim index f06c73f..f016675 100644 --- a/tests/raft_test_node_standalone.nim +++ b/tests/raft_test_node_standalone.nim @@ -15,19 +15,38 @@ type RaftPeersConfContainer* = seq[RaftPeerConf] -var - conf: RaftPeersConfContainer +proc loadConfig(): RaftPeersConfContainer = + var + conf: RaftPeersConfContainer -proc loadConfig() = let jsonFile = "raft_node_config.json" # read and parse file let jsConf = parseFile(jsonFile) for n in jsConf["raftPeers"]: - conf.add(RaftPeerConf(id: parseUUID(n["id"].astToStr), host: n["host"].astToStr, port: parseInt(n["port"].astToStr))) - debug "Conf", conf=conf - info "Conf", config=repr(conf) + conf.add(RaftPeerConf(id: parseUUID(n["id"].getStr), host: n["host"].getStr, port: n["port"].getInt)) + result = conf -proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback = +proc RaftPipesRead(node: BasicRaftNode, port: int) {.async.}= + var + fifoRead = fmt"RAFTNODERECEIVEMSGPIPE{port}" + fifoWrite = fmt"RAFTNODESENDMSGRESPPIPE{port}" + frFD = open(fifoRead, fmRead) + fwFD = open(fifoWrite, fmAppend) + + var + ss = MsgStream.init(frFD.readAll) + xx: RaftMessageBase + + ss.unpack(xx) #and here too + + var + r: RaftMessageResponseBase = await RaftNodeMessageDeliver(node, xx) + rs = MsgStream.init() + + rs.pack(r) + fwFD.write(rs.data) + +proc TestRaftMessageSendCallbackCreate(conf: RaftPeersConfContainer, node: BasicRaftNode, port: int): RaftMessageSendCallback = proc (msg: RaftMessageBase): Future[RaftMessageResponseBase] {.async, gcsafe.} = var host: string @@ -42,9 +61,12 @@ proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback = s.pack(msg) #here the magic happened + debug "req: ", req=fmt"http://{host}:{port}", data=s.data var resp = client.post(fmt"http://{host}:{port}", s.data) + await RaftPipesRead(node, port) + echo resp.status var @@ -54,8 +76,9 @@ proc TestRaftMessageSendCallbackCreate(): RaftMessageSendCallback = ss.unpack(xx) #and here too result = xx -if isMainModule: - loadConfig() +proc main() {.async.} = + var conf = loadConfig() + var nodesIds: seq[UUID] node: BasicRaftNode @@ -65,9 +88,16 @@ if isMainModule: nodesIds.add(c.id) var - nodeId = parseUUID("f9695ea4-4f37-11ee-8e75-8ff5a48faa42") + nodeId = parseUUID("0edc0976-4f38-11ee-b1ad-5b3b0f690e65") peersIds = nodesIds + port: int + idx = peersIds.find(nodeId) + port = conf[idx].port + peersIds.del(idx) - peersIds.del(peersIds.find(nodeId)) + node = BasicRaftNode.new(nodeId, peersIds, TestRaftMessageSendCallbackCreate(conf, node, port)) + RaftNodeStart(node) - node = BasicRaftNode.new(nodeId, peersIds, TestRaftMessageSendCallbackCreate()) \ No newline at end of file +if isMainModule: + waitFor main() + runForever() \ No newline at end of file diff --git a/tests/tornado_simple_raft_node_server.py b/tests/tornado_simple_raft_node_server.py index ef45bfb..9abba9f 100644 --- a/tests/tornado_simple_raft_node_server.py +++ b/tests/tornado_simple_raft_node_server.py @@ -5,8 +5,8 @@ import sys import errno import msgpack -writeFIFO = '/home/raych/prg/nim-raft/RAFTNODERECEIVEMSGPIPE' -readFIFO = '/home/raych/prg/nim-raft/RAFTNODESENDMSGRESPPIPE' +writeFIFO = 'RAFTNODERECEIVEMSGPIPE' +readFIFO = 'RAFTNODESENDMSGRESPPIPE' def writeFifo(data): with open(writeFIFO, "a") as fw: @@ -25,7 +25,7 @@ def readPipe(): class MainHandler(tornado.web.RequestHandler): def post(self): - s = self.request.body.decode("utf-8") + s = self.request.body writeFifo(s) self.write(readPipe())