debug: pipeline dump
This commit is contained in:
parent
565ffec3c6
commit
0f5762536b
7 changed files with 391 additions and 33 deletions
|
@ -1,4 +1,5 @@
|
||||||
import json
|
import json
|
||||||
|
import time
|
||||||
import grpc
|
import grpc
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from locust import FastHttpUser, between, task
|
from locust import FastHttpUser, between, task
|
||||||
|
@ -130,23 +131,69 @@ with grpc.insecure_channel(host) as channel:
|
||||||
add_captcha(stub=stub, captcha_id=captcha_id)
|
add_captcha(stub=stub, captcha_id=captcha_id)
|
||||||
|
|
||||||
|
|
||||||
|
#pipeline_msgs = []
|
||||||
|
#for _ in range(0,1000):
|
||||||
|
# pipeline_msgs.append(dcache.DcacheRequest(addVisitor=dcache.CaptchaID(id=captcha_id)))
|
||||||
|
#pipeline_msgs = dcache.DcacheBatchRequest(requests=pipeline_msgs)
|
||||||
|
|
||||||
|
#def pipeline_generate_messages():
|
||||||
|
# for msg in pipeline_msgs:
|
||||||
|
# yield msg
|
||||||
|
|
||||||
|
|
||||||
|
#import threading
|
||||||
|
#threadLock = threading.Lock()
|
||||||
|
#global_counter = 0
|
||||||
|
|
||||||
|
def nothing(r):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class HelloGrpcUser(adaptor.GrpcUser):
|
class HelloGrpcUser(adaptor.GrpcUser):
|
||||||
stub_class = DcacheServiceStub
|
stub_class = DcacheServiceStub
|
||||||
host = host
|
host = host
|
||||||
captcha_id = captcha_id
|
captcha_id = captcha_id
|
||||||
msg = RaftRequest(data=json.dumps({"AddVisitor": captcha_id}))
|
msg = dcache.CaptchaID(id=captcha_id)
|
||||||
|
# pipeline_msgs = []
|
||||||
|
# for _ in range(0,10):
|
||||||
|
# pipeline_msgs.append(dcache.DcacheRequest(addVisitor=dcache.CaptchaID(id=captcha_id)))
|
||||||
|
# pipeline_msgs = dcache.DcacheBatchRequest(requests=pipeline_msgs)
|
||||||
|
|
||||||
|
|
||||||
|
# pipeline_vote = []
|
||||||
|
# for _ in range(0,1000):
|
||||||
|
# pipeline_vote.append(
|
||||||
|
# dcache.DcacheRequest(addVisitor=dcache.CaptchaID(id=captcha_id))
|
||||||
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def add_vote(self, captcha_id: str):
|
def add_vote(self, captcha_id: str):
|
||||||
resp = self.stub.Write(self.msg)
|
resp = self.stub.AddVisitor(self.msg)
|
||||||
|
|
||||||
# def add_vote_pipeline(self, captcha_id: str):
|
# def add_vote_pipeline(self):
|
||||||
# resp = self.pipeline_write(data=self.pipeline_vote)
|
# with threadLock:
|
||||||
# pprint(resp)
|
# global global_counter
|
||||||
|
# global_counter += 1
|
||||||
|
# print(f"count: {global_counter}")
|
||||||
|
|
||||||
|
# res = self.stub.PipelineDcacheOps(pipeline_msgs)
|
||||||
|
# for r in res.responses:
|
||||||
|
# print(r.option_add_visitor_result.result.duration)
|
||||||
|
# resp = self.pipeline_write(data=self.pipeline_vote)
|
||||||
|
# #pprint(resp)
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def addVote(self):
|
def addVote(self):
|
||||||
self.add_vote(self.captcha_id)
|
self.add_vote(self.captcha_id)
|
||||||
|
|
||||||
|
# @task
|
||||||
|
# def addVotePipeline(self):
|
||||||
|
# self.add_vote_pipeline()
|
||||||
|
#self.add_vote(self.captcha_id)
|
||||||
|
#self.stub.PipelineDcacheOps(pipeline_generate_messages()):
|
||||||
|
|
||||||
|
|
||||||
# msg = dcache.CaptchaID(id=captcha_id)
|
# msg = dcache.CaptchaID(id=captcha_id)
|
||||||
# resp = self.stub.AddVisitor(msg)
|
# resp = self.stub.AddVisitor(msg)
|
||||||
|
|
|
@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64\x63\x61\x63he.proto\x12\x06\x64\x63\x61\x63he\"?\n\x05Level\x12\x1a\n\x11visitor_threshold\x18\xad\x02 \x01(\r\x12\x1a\n\x11\x64ifficulty_factor\x18\xae\x02 \x01(\r\")\n\x07\x44\x65\x66\x65nse\x12\x1e\n\x06levels\x18\x91\x03 \x03(\x0b\x32\r.dcache.Level\"@\n\x08MCaptcha\x12\x11\n\x08\x64uration\x18\xf6\x03 \x01(\x04\x12!\n\x07\x64\x65\x66\x65nse\x18\xf7\x03 \x01(\x0b\x32\x0f.dcache.Defense\"E\n\x11\x41\x64\x64\x43\x61ptchaRequest\x12\x0b\n\x02id\x18\xd9\x04 \x01(\t\x12#\n\x08mcaptcha\x18\xda\x04 \x01(\x0b\x32\x10.dcache.MCaptcha\"9\n\x14RenameCaptchaRequest\x12\r\n\x04name\x18\xbd\x05 \x01(\t\x12\x12\n\trename_to\x18\xbe\x05 \x01(\t\"_\n\x0f\x43\x61\x63hePowRequest\x12\x0f\n\x06string\x18\xa1\x06 \x01(\t\x12\x1a\n\x11\x64ifficulty_factor\x18\xa2\x06 \x01(\r\x12\x11\n\x08\x64uration\x18\xa3\x06 \x01(\x04\x12\x0c\n\x03key\x18\xa4\x06 \x01(\t\"E\n\x12\x43\x61\x63heResultRequest\x12\x0e\n\x05token\x18\xb1\x06 \x01(\t\x12\x0c\n\x03key\x18\xb2\x06 \x01(\t\x12\x11\n\x08\x64uration\x18\xb3\x06 \x01(\x04\",\n\x1a\x44\x65leteCaptchaResultRequest\x12\x0e\n\x05token\x18\xb5\x06 \x01(\t\"\x17\n\tCaptchaID\x12\n\n\x02id\x18\x01 \x01(\t\"\x12\n\x04PoID\x12\n\n\x02id\x18\x01 \x01(\t\"A\n\x10\x41\x64\x64VisitorResult\x12\x11\n\x08\x64uration\x18\x85\x07 \x01(\x04\x12\x1a\n\x11\x64ifficulty_factor\x18\x86\x07 \x01(\r\"S\n\x16OptionAddVisitorResult\x12.\n\x06result\x18\x8f\x07 \x01(\x0b\x32\x18.dcache.AddVisitorResultH\x00\x88\x01\x01\x42\t\n\x07_result\"\x1b\n\x0bRaftRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\"(\n\tRaftReply\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"#\n\x07Learner\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t2\xc7\x05\n\rDcacheService\x12<\n\nAddCaptcha\x12\x19.dcache.AddCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x41\n\nAddVisitor\x12\x11.dcache.CaptchaID\x1a\x1e.dcache.OptionAddVisitorResult\"\x00\x12\x42\n\rRenameCaptcha\x12\x1c.dcache.RenameCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rRemoveCaptcha\x12\x11.dcache.CaptchaID\x1a\x11.dcache.RaftReply\"\x00\x12\x38\n\x08\x43\x61\x63hePow\x12\x17.dcache.CachePowRequest\x1a\x11.dcache.RaftReply\"\x00\x12>\n\x0b\x43\x61\x63heResult\x12\x1a.dcache.CacheResultRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x32\n\nAddLearner\x12\x0f.dcache.Learner\x1a\x11.dcache.RaftReply\"\x00\x12\x31\n\x05Write\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x33\n\x07\x46orward\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rAppendEntries\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12\x39\n\x0fInstallSnapshot\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12.\n\x04vote\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReplyb\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64\x63\x61\x63he.proto\x12\x06\x64\x63\x61\x63he\"?\n\x05Level\x12\x1a\n\x11visitor_threshold\x18\xad\x02 \x01(\r\x12\x1a\n\x11\x64ifficulty_factor\x18\xae\x02 \x01(\r\")\n\x07\x44\x65\x66\x65nse\x12\x1e\n\x06levels\x18\x91\x03 \x03(\x0b\x32\r.dcache.Level\"@\n\x08MCaptcha\x12\x11\n\x08\x64uration\x18\xf6\x03 \x01(\x04\x12!\n\x07\x64\x65\x66\x65nse\x18\xf7\x03 \x01(\x0b\x32\x0f.dcache.Defense\"E\n\x11\x41\x64\x64\x43\x61ptchaRequest\x12\x0b\n\x02id\x18\xd9\x04 \x01(\t\x12#\n\x08mcaptcha\x18\xda\x04 \x01(\x0b\x32\x10.dcache.MCaptcha\"9\n\x14RenameCaptchaRequest\x12\r\n\x04name\x18\xbd\x05 \x01(\t\x12\x12\n\trename_to\x18\xbe\x05 \x01(\t\"_\n\x0f\x43\x61\x63hePowRequest\x12\x0f\n\x06string\x18\xa1\x06 \x01(\t\x12\x1a\n\x11\x64ifficulty_factor\x18\xa2\x06 \x01(\r\x12\x11\n\x08\x64uration\x18\xa3\x06 \x01(\x04\x12\x0c\n\x03key\x18\xa4\x06 \x01(\t\"E\n\x12\x43\x61\x63heResultRequest\x12\x0e\n\x05token\x18\xb1\x06 \x01(\t\x12\x0c\n\x03key\x18\xb2\x06 \x01(\t\x12\x11\n\x08\x64uration\x18\xb3\x06 \x01(\x04\",\n\x1a\x44\x65leteCaptchaResultRequest\x12\x0e\n\x05token\x18\xb5\x06 \x01(\t\"\x17\n\tCaptchaID\x12\n\n\x02id\x18\x01 \x01(\t\"\x12\n\x04PoID\x12\n\n\x02id\x18\x01 \x01(\t\"A\n\x10\x41\x64\x64VisitorResult\x12\x11\n\x08\x64uration\x18\x85\x07 \x01(\x04\x12\x1a\n\x11\x64ifficulty_factor\x18\x86\x07 \x01(\r\"S\n\x16OptionAddVisitorResult\x12.\n\x06result\x18\x8f\x07 \x01(\x0b\x32\x18.dcache.AddVisitorResultH\x00\x88\x01\x01\x42\t\n\x07_result\"\x1b\n\x0bRaftRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\"(\n\tRaftReply\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"#\n\x07Learner\x12\n\n\x02id\x18\x01 \x01(\x04\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t\"\xbd\x02\n\rDcacheRequest\x12/\n\naddCaptcha\x18\x01 \x01(\x0b\x32\x19.dcache.AddCaptchaRequestH\x00\x12\'\n\naddVisitor\x18\x02 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12\x35\n\rrenameCaptcha\x18\x03 \x01(\x0b\x32\x1c.dcache.RenameCaptchaRequestH\x00\x12*\n\rremoveCaptcha\x18\x04 \x01(\x0b\x32\x11.dcache.CaptchaIDH\x00\x12+\n\x08\x63\x61\x63hePow\x18\x05 \x01(\x0b\x32\x17.dcache.CachePowRequestH\x00\x12\x31\n\x0b\x63\x61\x63heResult\x18\x06 \x01(\x0b\x32\x1a.dcache.CacheResultRequestH\x00\x42\x0f\n\rDcacheRequest\"\x8b\x01\n\x0e\x44\x63\x61\x63heResponse\x12\x43\n\x19option_add_visitor_result\x18\x01 \x01(\x0b\x32\x1e.dcache.OptionAddVisitorResultH\x00\x12\"\n\x05other\x18\x02 \x01(\x0b\x32\x11.dcache.RaftReplyH\x00\x42\x10\n\x0e\x44\x63\x61\x63heResponse2\xc7\x05\n\rDcacheService\x12<\n\nAddCaptcha\x12\x19.dcache.AddCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x41\n\nAddVisitor\x12\x11.dcache.CaptchaID\x1a\x1e.dcache.OptionAddVisitorResult\"\x00\x12\x42\n\rRenameCaptcha\x12\x1c.dcache.RenameCaptchaRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rRemoveCaptcha\x12\x11.dcache.CaptchaID\x1a\x11.dcache.RaftReply\"\x00\x12\x38\n\x08\x43\x61\x63hePow\x12\x17.dcache.CachePowRequest\x1a\x11.dcache.RaftReply\"\x00\x12>\n\x0b\x43\x61\x63heResult\x12\x1a.dcache.CacheResultRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x32\n\nAddLearner\x12\x0f.dcache.Learner\x1a\x11.dcache.RaftReply\"\x00\x12\x31\n\x05Write\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x33\n\x07\x46orward\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\"\x00\x12\x37\n\rAppendEntries\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12\x39\n\x0fInstallSnapshot\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReply\x12.\n\x04vote\x12\x13.dcache.RaftRequest\x1a\x11.dcache.RaftReplyb\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
|
@ -51,6 +51,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
_globals['_RAFTREPLY']._serialized_end=808
|
_globals['_RAFTREPLY']._serialized_end=808
|
||||||
_globals['_LEARNER']._serialized_start=810
|
_globals['_LEARNER']._serialized_start=810
|
||||||
_globals['_LEARNER']._serialized_end=845
|
_globals['_LEARNER']._serialized_end=845
|
||||||
_globals['_DCACHESERVICE']._serialized_start=848
|
_globals['_DCACHEREQUEST']._serialized_start=848
|
||||||
_globals['_DCACHESERVICE']._serialized_end=1559
|
_globals['_DCACHEREQUEST']._serialized_end=1165
|
||||||
|
_globals['_DCACHERESPONSE']._serialized_start=1168
|
||||||
|
_globals['_DCACHERESPONSE']._serialized_end=1307
|
||||||
|
_globals['_DCACHESERVICE']._serialized_start=1310
|
||||||
|
_globals['_DCACHESERVICE']._serialized_end=2021
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|
|
@ -118,3 +118,27 @@ class Learner(_message.Message):
|
||||||
id: int
|
id: int
|
||||||
addr: str
|
addr: str
|
||||||
def __init__(self, id: _Optional[int] = ..., addr: _Optional[str] = ...) -> None: ...
|
def __init__(self, id: _Optional[int] = ..., addr: _Optional[str] = ...) -> None: ...
|
||||||
|
|
||||||
|
class DcacheRequest(_message.Message):
|
||||||
|
__slots__ = ("addCaptcha", "addVisitor", "renameCaptcha", "removeCaptcha", "cachePow", "cacheResult")
|
||||||
|
ADDCAPTCHA_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
ADDVISITOR_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
RENAMECAPTCHA_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
REMOVECAPTCHA_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
CACHEPOW_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
CACHERESULT_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
addCaptcha: AddCaptchaRequest
|
||||||
|
addVisitor: CaptchaID
|
||||||
|
renameCaptcha: RenameCaptchaRequest
|
||||||
|
removeCaptcha: CaptchaID
|
||||||
|
cachePow: CachePowRequest
|
||||||
|
cacheResult: CacheResultRequest
|
||||||
|
def __init__(self, addCaptcha: _Optional[_Union[AddCaptchaRequest, _Mapping]] = ..., addVisitor: _Optional[_Union[CaptchaID, _Mapping]] = ..., renameCaptcha: _Optional[_Union[RenameCaptchaRequest, _Mapping]] = ..., removeCaptcha: _Optional[_Union[CaptchaID, _Mapping]] = ..., cachePow: _Optional[_Union[CachePowRequest, _Mapping]] = ..., cacheResult: _Optional[_Union[CacheResultRequest, _Mapping]] = ...) -> None: ...
|
||||||
|
|
||||||
|
class DcacheResponse(_message.Message):
|
||||||
|
__slots__ = ("option_add_visitor_result", "other")
|
||||||
|
OPTION_ADD_VISITOR_RESULT_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
OTHER_FIELD_NUMBER: _ClassVar[int]
|
||||||
|
option_add_visitor_result: OptionAddVisitorResult
|
||||||
|
other: RaftReply
|
||||||
|
def __init__(self, option_add_visitor_result: _Optional[_Union[OptionAddVisitorResult, _Mapping]] = ..., other: _Optional[_Union[RaftReply, _Mapping]] = ...) -> None: ...
|
||||||
|
|
|
@ -6,7 +6,15 @@ import dcache_py.dcache_pb2 as dcache__pb2
|
||||||
|
|
||||||
|
|
||||||
class DcacheServiceStub(object):
|
class DcacheServiceStub(object):
|
||||||
"""Missing associated documentation comment in .proto file."""
|
"""message DcacheBatchRequest {
|
||||||
|
repeated DcacheRequest requests = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DcacheBatchResponse {
|
||||||
|
repeated DcacheResponse responses = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, channel):
|
def __init__(self, channel):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
|
@ -77,7 +85,15 @@ class DcacheServiceStub(object):
|
||||||
|
|
||||||
|
|
||||||
class DcacheServiceServicer(object):
|
class DcacheServiceServicer(object):
|
||||||
"""Missing associated documentation comment in .proto file."""
|
"""message DcacheBatchRequest {
|
||||||
|
repeated DcacheRequest requests = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DcacheBatchResponse {
|
||||||
|
repeated DcacheResponse responses = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
def AddCaptcha(self, request, context):
|
def AddCaptcha(self, request, context):
|
||||||
"""Missing associated documentation comment in .proto file."""
|
"""Missing associated documentation comment in .proto file."""
|
||||||
|
@ -116,7 +132,9 @@ class DcacheServiceServicer(object):
|
||||||
raise NotImplementedError('Method not implemented!')
|
raise NotImplementedError('Method not implemented!')
|
||||||
|
|
||||||
def AddLearner(self, request, context):
|
def AddLearner(self, request, context):
|
||||||
"""Missing associated documentation comment in .proto file."""
|
""" rpc PipelineDcacheOps(DcacheBatchRequest) returns (DcacheBatchResponse) {}
|
||||||
|
|
||||||
|
"""
|
||||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||||
context.set_details('Method not implemented!')
|
context.set_details('Method not implemented!')
|
||||||
raise NotImplementedError('Method not implemented!')
|
raise NotImplementedError('Method not implemented!')
|
||||||
|
@ -225,7 +243,15 @@ def add_DcacheServiceServicer_to_server(servicer, server):
|
||||||
|
|
||||||
# This class is part of an EXPERIMENTAL API.
|
# This class is part of an EXPERIMENTAL API.
|
||||||
class DcacheService(object):
|
class DcacheService(object):
|
||||||
"""Missing associated documentation comment in .proto file."""
|
"""message DcacheBatchRequest {
|
||||||
|
repeated DcacheRequest requests = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DcacheBatchResponse {
|
||||||
|
repeated DcacheResponse responses = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def AddCaptcha(request,
|
def AddCaptcha(request,
|
||||||
|
|
|
@ -60,25 +60,6 @@ message PoID{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//message DcacheRequest {
|
|
||||||
// oneof DcacheRequest {
|
|
||||||
// string AddVisitor = 1;
|
|
||||||
// AddCaptchaRequest add_captcha = 2;
|
|
||||||
// RenameCaptchaRequest rename_captcha = 3;
|
|
||||||
// string remove_captcha = 4;
|
|
||||||
// CachePoWRequest cache_pow = 5;
|
|
||||||
// string delete_pow = 6;
|
|
||||||
// CacheResultRequest cache_result = 7;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//message AddVisitorRequest {
|
|
||||||
// string id = 1;
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
message AddVisitorResult {
|
message AddVisitorResult {
|
||||||
uint64 duration = 901;
|
uint64 duration = 901;
|
||||||
uint32 difficulty_factor = 902;
|
uint32 difficulty_factor = 902;
|
||||||
|
@ -118,6 +99,40 @@ message Learner {
|
||||||
string addr = 2;
|
string addr = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//message AddVisitorRequest {
|
||||||
|
// string id = 1;
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
message DcacheRequest {
|
||||||
|
oneof DcacheRequest {
|
||||||
|
AddCaptchaRequest addCaptcha = 1;
|
||||||
|
CaptchaID addVisitor = 2;
|
||||||
|
RenameCaptchaRequest renameCaptcha = 3;
|
||||||
|
CaptchaID removeCaptcha = 4;
|
||||||
|
CachePowRequest cachePow = 5;
|
||||||
|
CacheResultRequest cacheResult = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message DcacheResponse {
|
||||||
|
oneof DcacheResponse {
|
||||||
|
OptionAddVisitorResult option_add_visitor_result = 1;
|
||||||
|
RaftReply other = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//message DcacheBatchRequest {
|
||||||
|
// repeated DcacheRequest requests = 1;
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//message DcacheBatchResponse {
|
||||||
|
// repeated DcacheResponse responses = 1;
|
||||||
|
//}
|
||||||
|
|
||||||
service DcacheService {
|
service DcacheService {
|
||||||
rpc AddCaptcha(AddCaptchaRequest) returns (RaftReply) {}
|
rpc AddCaptcha(AddCaptchaRequest) returns (RaftReply) {}
|
||||||
rpc AddVisitor(CaptchaID) returns (OptionAddVisitorResult) {}
|
rpc AddVisitor(CaptchaID) returns (OptionAddVisitorResult) {}
|
||||||
|
@ -126,11 +141,11 @@ service DcacheService {
|
||||||
rpc CachePow(CachePowRequest) returns (RaftReply) {}
|
rpc CachePow(CachePowRequest) returns (RaftReply) {}
|
||||||
rpc CacheResult(CacheResultRequest) returns (RaftReply) {}
|
rpc CacheResult(CacheResultRequest) returns (RaftReply) {}
|
||||||
|
|
||||||
|
// rpc PipelineDcacheOps(DcacheBatchRequest) returns (DcacheBatchResponse) {}
|
||||||
|
|
||||||
|
|
||||||
rpc AddLearner(Learner) returns (RaftReply) {}
|
rpc AddLearner(Learner) returns (RaftReply) {}
|
||||||
rpc Write(RaftRequest) returns (RaftReply) {}
|
rpc Write(RaftRequest) returns (RaftReply) {}
|
||||||
// rpc Get(GetRequest) returns (GetReply) {}
|
|
||||||
|
|
||||||
/// Forward a request to other
|
/// Forward a request to other
|
||||||
rpc Forward(RaftRequest) returns (RaftReply) {}
|
rpc Forward(RaftRequest) returns (RaftReply) {}
|
||||||
|
|
220
src/protobuf.rs
220
src/protobuf.rs
|
@ -9,7 +9,10 @@ use serde::de::DeserializeOwned;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use tonic::Response;
|
use tonic::Response;
|
||||||
|
|
||||||
|
use dcache::dcache_request::DcacheRequest as PipelineReq;
|
||||||
|
use dcache::dcache_response::DcacheResponse as InnerPipelineRes;
|
||||||
use dcache::dcache_service_server::DcacheService;
|
use dcache::dcache_service_server::DcacheService;
|
||||||
|
use dcache::DcacheResponse as OuterPipelineRes;
|
||||||
use dcache::{Learner, RaftReply, RaftRequest};
|
use dcache::{Learner, RaftReply, RaftRequest};
|
||||||
|
|
||||||
use crate::app::DcacheApp;
|
use crate::app::DcacheApp;
|
||||||
|
@ -139,6 +142,223 @@ impl DcacheService for MyDcacheImpl {
|
||||||
Ok(Response::new(res.into()))
|
Ok(Response::new(res.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// type PipelineDcacheOpsStream =
|
||||||
|
// Pin<Box<dyn Stream<Item = Result<OuterPipelineRes, tonic::Status>> + Send + 'static>>;
|
||||||
|
|
||||||
|
// async fn pipeline_dcache_ops(
|
||||||
|
// &self,
|
||||||
|
// request: tonic::Request<tonic::Streaming<dcache::DcacheRequest>>,
|
||||||
|
// ) -> std::result::Result<tonic::Response<Self::PipelineDcacheOpsStream>, tonic::Status> {
|
||||||
|
|
||||||
|
//// async fn pipeline_dcache_ops(
|
||||||
|
//// &self,
|
||||||
|
//// request: tonic::Request<dcache::DcacheBatchRequest>,
|
||||||
|
//// ) -> Result<Response<dcache::DcacheBatchResponse>, tonic::Status> {
|
||||||
|
//// let mut reqs = request.into_inner();
|
||||||
|
//// let mut responses = Vec::with_capacity(reqs.requests.len());
|
||||||
|
//// for req in reqs.requests.drain(0..) {
|
||||||
|
//// let res = match req.dcache_request.unwrap() {
|
||||||
|
//// PipelineReq::AddCaptcha(add_captcha_req) => {
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::AddCaptcha(add_captcha_req.into()))
|
||||||
|
//// .await;
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// PipelineReq::AddVisitor(add_visitor_req) => {
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::AddVisitor(MasterMessages::AddVisitor(
|
||||||
|
//// add_visitor_req.id,
|
||||||
|
//// )))
|
||||||
|
//// .await;
|
||||||
|
//// match res {
|
||||||
|
//// Err(_) => OuterPipelineRes {
|
||||||
|
//// dcache_response: None,
|
||||||
|
//// },
|
||||||
|
//// Ok(res) => match res.data {
|
||||||
|
//// DcacheResponse::AddVisitorResult(res) => {
|
||||||
|
//// let res = dcache::OptionAddVisitorResult {
|
||||||
|
//// result: res.map(|f| f.into()),
|
||||||
|
//// };
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(
|
||||||
|
//// InnerPipelineRes::OptionAddVisitorResult(res),
|
||||||
|
//// ),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
////
|
||||||
|
//// _ => unimplemented!(),
|
||||||
|
//// },
|
||||||
|
//// }
|
||||||
|
//// // if res.is_err() {
|
||||||
|
//// // OuterPipelineRes {
|
||||||
|
//// // dcache_response: None,
|
||||||
|
//// // }
|
||||||
|
//// // } else {
|
||||||
|
//// // let res = res.unwrap();
|
||||||
|
//// // match res.data {
|
||||||
|
//// // DcacheResponse::AddVisitorResult(res) => {
|
||||||
|
//// // let res = dcache::OptionAddVisitorResult {
|
||||||
|
//// // result: res.map(|f| f.into()),
|
||||||
|
//// // };
|
||||||
|
//// // OuterPipelineRes {
|
||||||
|
//// // dcache_response: Some(
|
||||||
|
//// // InnerPipelineRes::OptionAddVisitorResult(res),
|
||||||
|
//// // ),
|
||||||
|
//// // }
|
||||||
|
//// // }
|
||||||
|
//// //
|
||||||
|
//// // _ => unimplemented!(),
|
||||||
|
//// // }
|
||||||
|
//// // }
|
||||||
|
//// }
|
||||||
|
//// PipelineReq::RenameCaptcha(rename_captcha_req) => {
|
||||||
|
//// // let x: u8 = rename_visitor_req;
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::RenameCaptcha(rename_captcha_req.into()))
|
||||||
|
//// .await;
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// PipelineReq::RemoveCaptcha(remove_captcha_req) => {
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::RemoveCaptcha(MasterMessages::RemoveCaptcha(
|
||||||
|
//// remove_captcha_req.id,
|
||||||
|
//// )))
|
||||||
|
//// .await;
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// PipelineReq::CachePow(cache_pow_req) => {
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::CachePoW(cache_pow_req.into()))
|
||||||
|
//// .await;
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// PipelineReq::CacheResult(cache_result_req) => {
|
||||||
|
//// let res = self
|
||||||
|
//// .app
|
||||||
|
//// .raft
|
||||||
|
//// .client_write(DcacheRequest::CacheResult(cache_result_req.into()))
|
||||||
|
//// .await;
|
||||||
|
//// OuterPipelineRes {
|
||||||
|
//// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// };
|
||||||
|
//// responses.push(res);
|
||||||
|
//// }
|
||||||
|
//// Ok(Response::new(dcache::DcacheBatchResponse { responses }))
|
||||||
|
//// }
|
||||||
|
|
||||||
|
// let mut reqs = request.into_inner().requests;
|
||||||
|
// let mut responses = Vec::with_capacity(reqs.len());
|
||||||
|
// for req in reqs.drain(0..) {
|
||||||
|
// let res = match req.dcache_request.unwrap() {
|
||||||
|
// PipelineReq::AddCaptcha(add_captcha_req) => {
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::AddCaptcha(add_captcha_req.into()))
|
||||||
|
// .await;
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// PipelineReq::AddVisitor(add_visitor_req) => {
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::AddVisitor(MasterMessages::AddVisitor(
|
||||||
|
// add_visitor_req.id,
|
||||||
|
// )))
|
||||||
|
// .await
|
||||||
|
// .map_err(|e| {
|
||||||
|
// tonic::Status::new(
|
||||||
|
// tonic::Code::Internal,
|
||||||
|
// serde_json::to_string(&e).unwrap(),
|
||||||
|
// )
|
||||||
|
// })?;
|
||||||
|
// match res.data {
|
||||||
|
// DcacheResponse::AddVisitorResult(res) => {
|
||||||
|
// let res = dcache::OptionAddVisitorResult {
|
||||||
|
// result: res.map(|f| f.into()),
|
||||||
|
// };
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::OptionAddVisitorResult(
|
||||||
|
// res,
|
||||||
|
// )),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// _ => unimplemented!(),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// PipelineReq::RenameCaptcha(rename_captcha_req) => {
|
||||||
|
// // let x: u8 = rename_visitor_req;
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::RenameCaptcha(rename_captcha_req.into()))
|
||||||
|
// .await;
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// PipelineReq::RemoveCaptcha(remove_captcha_req) => {
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::RemoveCaptcha(MasterMessages::RemoveCaptcha(
|
||||||
|
// remove_captcha_req.id,
|
||||||
|
// )))
|
||||||
|
// .await;
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// PipelineReq::CachePow(cache_pow_req) => {
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::CachePoW(cache_pow_req.into()))
|
||||||
|
// .await;
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// PipelineReq::CacheResult(cache_result_req) => {
|
||||||
|
// let res = self
|
||||||
|
// .app
|
||||||
|
// .raft
|
||||||
|
// .client_write(DcacheRequest::CacheResult(cache_result_req.into()))
|
||||||
|
// .await;
|
||||||
|
// OuterPipelineRes {
|
||||||
|
// dcache_response: Some(InnerPipelineRes::Other(res.into())),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// responses.push(res);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Ok(Response::new(dcache::DcacheBatchResponse { responses }))
|
||||||
|
// }
|
||||||
|
|
||||||
async fn write(
|
async fn write(
|
||||||
&self,
|
&self,
|
||||||
request: tonic::Request<RaftRequest>,
|
request: tonic::Request<RaftRequest>,
|
||||||
|
|
24
test.py
24
test.py
|
@ -145,11 +145,33 @@ def grpc_add_captcha(stub: DcacheServiceStub, captcha_id: str):
|
||||||
pprint(f"Captcha added {captcha_id}: {resp}")
|
pprint(f"Captcha added {captcha_id}: {resp}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
msgs = []
|
||||||
|
for _ in range(0,1000):
|
||||||
|
msgs.append(
|
||||||
|
dcache.DcacheRequest(addVisitor=dcache.CaptchaID(id=captcha_id)),
|
||||||
|
)
|
||||||
|
|
||||||
|
msgs = dcache.DcacheBatchRequest(requests=msgs)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def grpc_pipeline_add_vote(stub):
|
||||||
|
responses = stub.PipelineDcacheOps(msgs)
|
||||||
|
for r in responses.responses:
|
||||||
|
print(f"received respo: {r}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def grpc_run():
|
def grpc_run():
|
||||||
with grpc.insecure_channel(host) as channel:
|
with grpc.insecure_channel(host) as channel:
|
||||||
stub = DcacheServiceStub(channel)
|
stub = DcacheServiceStub(channel)
|
||||||
grpc_add_captcha(stub, captcha_id)
|
grpc_add_captcha(stub, captcha_id)
|
||||||
grpc_add_vote(stub, captcha_id)
|
grpc_pipeline_add_vote(stub)
|
||||||
|
|
||||||
|
#grpc_add_vote(stub, captcha_id)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
grpc_run()
|
grpc_run()
|
||||||
|
|
Loading…
Add table
Reference in a new issue