diff --git a/bench/locustfile.py b/bench/locustfile.py index cd688f6..98259fd 100644 --- a/bench/locustfile.py +++ b/bench/locustfile.py @@ -1,109 +1,15 @@ import json import time import grpc +import gevent from pprint import pprint -from locust import FastHttpUser, between, task +from locust import FastHttpUser, between, task, events from dcache_py import dcache_pb2 as dcache from dcache_py.dcache_pb2 import RaftRequest from dcache_py.dcache_pb2_grpc import DcacheServiceStub -# password = "fooobarasdfasdf" -# username = "realaravinth" -# -# -# class Unprotected(FastHttpUser): -# # wait_time = between(5, 15) -# peers = [ -# "http://localhost:9001", -# "http://localhost:9002", -# "http://localhost:9003", -# ] -# leader = "http://localhost:9001" -# host = leader -# captcha_id="locust" -# -# pipeline_vote = [] -# for _ in range(0,1000): -# pipeline_vote.append({"AddVisitor": captcha_id}) -# -## def on_start(self): -## resp = self.client.get(f"{self.leader}/metrics") -## data = resp.json() -## leader = data["Ok"]["membership_config"]["log_id"]["leader_id"]["node_id"] -## self.leader = self.peers[leader - 1] -## self.host = self.leader -## print(f"Leader: {self.host}") -## self.add_captcha(captcha_id="locust") -# -# -# -# def write(self, data): -# resp = self.client.post(f"{self.host}/write", json=data) -# print(f"RPC Status: {resp.status_code}") -# resp = resp.json() -# if "Err" in resp: -# leader = resp["Err"]["APIError"]["ForwardToLeader"]["leader_node"]["addr"] -# print(f"Forwarding write to leader {leader}") -# return write(leader, data) -# return resp["Ok"]["data"] -# -# def pipeline_write(self, data): -# resp = self.client.post(f"{self.host}/pipeline/write", json=data) -## print(f"RPC Status: {resp.status_code}") -# resp = resp.json() -# if "Err" in resp: -# leader = resp["Err"]["APIError"]["ForwardToLeader"]["leader_node"]["addr"] -# print(f"Forwarding write to leader {leader}") -# return write(leader, data) -# return resp -# -# -# -# -# def add_vote(self, captcha_id: str): -# resp = self.write(data={"AddVisitor": captcha_id}) -# pprint(resp) -# -# def add_vote_pipeline(self, captcha_id: str): -# resp = self.pipeline_write(data=self.pipeline_vote) -## pprint(resp) -# -# def add_captcha(self, captcha_id: str): -# params = { -# "AddCaptcha": { -# "id": captcha_id, -# "mcaptcha": { -# "visitor_threshold": 0, -# "defense": { -# "levels": [ -# {"visitor_threshold": 50, "difficulty_factor": 500}, -# {"visitor_threshold": 5000, "difficulty_factor": 50000}, -# ], -# "current_visitor_threshold": 0, -# }, -# "duration": 30, -# }, -# } -# } -# resp = self.write(data=params) -# pprint(f"Captcha added {captcha_id}: {resp}") -# -# -# @task -# def unprotected(self): -# self.add_vote_pipeline(captcha_id=self.captcha_id) -# ##self.add_vote(captcha_id="locust") -## data = { -## "username": username, -## "password": username, -## "confirm_password": username, -## } -## self.client.post("/unprotected", data=data) -# -import gevent import adaptor -from locust import events, task host = "localhost:9001" captcha_id = "locust" @@ -131,70 +37,33 @@ with grpc.insecure_channel(host) as channel: 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) +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) #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): stub_class = DcacheServiceStub host = host captcha_id = 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): resp = self.stub.AddVisitor(self.msg) -# def add_vote_pipeline(self): -# with threadLock: -# 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 - def addVote(self): - self.add_vote(self.captcha_id) + def add_vote_pipeline(self): + res = self.stub.PipelineDcacheOps(pipeline_msgs) # @task -# def addVotePipeline(self): -# self.add_vote_pipeline() - #self.add_vote(self.captcha_id) - #self.stub.PipelineDcacheOps(pipeline_generate_messages()): +# def addVote(self): +# self.add_vote(self.captcha_id) - -# msg = dcache.CaptchaID(id=captcha_id) -# resp = self.stub.AddVisitor(msg) -# pprint(resp) + @task + def addVotePipeline(self): + self.add_vote_pipeline() diff --git a/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/README.md b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/README.md new file mode 100644 index 0000000..89bcbfb --- /dev/null +++ b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/README.md @@ -0,0 +1 @@ +10 messages per batch request diff --git a/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/exceptions_1703846156.5374856.csv b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/exceptions_1703846156.5374856.csv new file mode 100644 index 0000000..5e0e870 --- /dev/null +++ b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/exceptions_1703846156.5374856.csv @@ -0,0 +1 @@ +Count,Message,Traceback,Nodes diff --git a/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/failures_1703846155.0632446.csv b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/failures_1703846155.0632446.csv new file mode 100644 index 0000000..f87ff75 --- /dev/null +++ b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/failures_1703846155.0632446.csv @@ -0,0 +1 @@ +Method,Name,Error,Occurrences diff --git a/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/report_1703846160.6884449.html b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/report_1703846160.6884449.html new file mode 100644 index 0000000..f6dbb7b --- /dev/null +++ b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/report_1703846160.6884449.html @@ -0,0 +1,592 @@ + + +
+During: 2023-12-29 10:34:29 - 2023-12-29 10:35:33
+Target Host: localhost:9001
+Script: locustfile.py
+Method | +Name | +# Requests | +# Fails | +Average (ms) | +Min (ms) | +Max (ms) | +Average size (bytes) | +RPS | +Failures/s | +
---|---|---|---|---|---|---|---|---|---|
grpc | +/dcache.DcacheService/PipelineDcacheOps | +41383 | +0 | +99 | +5 | +182 | +40 | +650.9 | +0.0 | +
+ | Aggregated | +41383 | +0 | +99 | +5 | +182 | +40 | +650.9 | +0.0 | +
Method | +Name | +50%ile (ms) | +60%ile (ms) | +70%ile (ms) | +80%ile (ms) | +90%ile (ms) | +95%ile (ms) | +99%ile (ms) | +100%ile (ms) | +
---|---|---|---|---|---|---|---|---|---|
grpc | +/dcache.DcacheService/PipelineDcacheOps | +140 | +150 | +150 | +150 | +160 | +160 | +170 | +180 | +
+ | Aggregated | +140 | +150 | +150 | +150 | +160 | +160 | +170 | +180 | +