diff --git a/.woodpecker.yml b/.woodpecker.yml
index 2fed1d2..197b8b3 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -2,6 +2,8 @@ steps:
backend:
image: rust
commands:
+ - apt update
+ - apt-get install -y --no-install-recommends protobuf-compiler
- cargo build
# - make migrate
# - make
diff --git a/Cargo.lock b/Cargo.lock
index 63f8203..393e1e4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,7 +10,7 @@ checksum = "f728064aca1c318585bf4bb04ffcfac9e75e508ab4e8b1bd9ba5dfe04e2cbed5"
dependencies = [
"actix-rt",
"actix_derive",
- "bitflags",
+ "bitflags 1.3.2",
"bytes",
"crossbeam-channel",
"futures-core",
@@ -26,214 +26,27 @@ dependencies = [
"tokio-util",
]
-[[package]]
-name = "actix-codec"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8"
-dependencies = [
- "bitflags",
- "bytes",
- "futures-core",
- "futures-sink",
- "memchr",
- "pin-project-lite",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
-name = "actix-http"
-version = "3.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2079246596c18b4a33e274ae10c0e50613f4d32a4198e09c7b93771013fed74"
-dependencies = [
- "actix-codec",
- "actix-rt",
- "actix-service",
- "actix-utils",
- "ahash 0.8.3",
- "base64 0.21.1",
- "bitflags",
- "brotli",
- "bytes",
- "bytestring",
- "derive_more",
- "encoding_rs",
- "flate2",
- "futures-core",
- "h2",
- "http",
- "httparse",
- "httpdate",
- "itoa",
- "language-tags",
- "local-channel",
- "mime",
- "percent-encoding",
- "pin-project-lite",
- "rand",
- "sha1",
- "smallvec",
- "tokio",
- "tokio-util",
- "tracing",
- "zstd",
-]
-
[[package]]
name = "actix-macros"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6"
+checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
dependencies = [
"quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "actix-router"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d66ff4d247d2b160861fa2866457e85706833527840e4133f8f49aa423a38799"
-dependencies = [
- "bytestring",
- "http",
- "regex",
- "serde 1.0.163",
- "tracing",
+ "syn 2.0.16",
]
[[package]]
name = "actix-rt"
-version = "2.8.0"
+version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e"
+checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d"
dependencies = [
"actix-macros",
"futures-core",
"tokio",
]
-[[package]]
-name = "actix-server"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327"
-dependencies = [
- "actix-rt",
- "actix-service",
- "actix-utils",
- "futures-core",
- "futures-util",
- "mio",
- "num_cpus",
- "socket2",
- "tokio",
- "tracing",
-]
-
-[[package]]
-name = "actix-service"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a"
-dependencies = [
- "futures-core",
- "paste",
- "pin-project-lite",
-]
-
-[[package]]
-name = "actix-utils"
-version = "3.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8"
-dependencies = [
- "local-waker",
- "pin-project-lite",
-]
-
-[[package]]
-name = "actix-web"
-version = "4.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd3cb42f9566ab176e1ef0b8b3a896529062b4efc6be0123046095914c4c1c96"
-dependencies = [
- "actix-codec",
- "actix-http",
- "actix-macros",
- "actix-router",
- "actix-rt",
- "actix-server",
- "actix-service",
- "actix-utils",
- "actix-web-codegen",
- "ahash 0.7.6",
- "bytes",
- "bytestring",
- "cfg-if",
- "cookie",
- "derive_more",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "http",
- "itoa",
- "language-tags",
- "log",
- "mime",
- "once_cell",
- "pin-project-lite",
- "regex",
- "serde 1.0.163",
- "serde_json",
- "serde_urlencoded",
- "smallvec",
- "socket2",
- "time",
- "url",
-]
-
-[[package]]
-name = "actix-web-codegen"
-version = "4.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9"
-dependencies = [
- "actix-router",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "actix-web-codegen-const-routes"
-version = "0.1.0"
-source = "git+https://github.com/realaravinth/actix-web-codegen-const-routes?tag=0.1.0#1cc9b8dbaaef4b3634dabbf537f313200dd91bd9"
-dependencies = [
- "actix-router",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "actix-web-httpauth"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dda62cf04bc3a9ad2ea8f314f721951cfdb4cdacec4e984d20e77c7bb170991"
-dependencies = [
- "actix-utils",
- "actix-web",
- "base64 0.13.1",
- "futures-core",
- "futures-util",
- "log",
- "pin-project-lite",
-]
-
[[package]]
name = "actix_derive"
version = "0.6.0"
@@ -245,35 +58,6 @@ dependencies = [
"syn 1.0.109",
]
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "ahash"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
-dependencies = [
- "getrandom",
- "once_cell",
- "version_check",
-]
-
-[[package]]
-name = "ahash"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
-dependencies = [
- "cfg-if",
- "getrandom",
- "once_cell",
- "version_check",
-]
-
[[package]]
name = "aho-corasick"
version = "1.0.1"
@@ -283,21 +67,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "alloc-no-stdlib"
-version = "2.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
-
-[[package]]
-name = "alloc-stdlib"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
-dependencies = [
- "alloc-no-stdlib",
-]
-
[[package]]
name = "anstream"
version = "0.3.2"
@@ -374,6 +143,28 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+[[package]]
+name = "async-stream"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+dependencies = [
+ "async-stream-impl",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-stream-impl"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.16",
+]
+
[[package]]
name = "async-trait"
version = "0.1.68"
@@ -402,6 +193,51 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+[[package]]
+name = "axum"
+version = "0.6.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "bitflags 1.3.2",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde 1.0.163",
+ "sync_wrapper",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "mime",
+ "rustversion",
+ "tower-layer",
+ "tower-service",
+]
+
[[package]]
name = "base64"
version = "0.13.1"
@@ -429,6 +265,12 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+[[package]]
+name = "bitflags"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+
[[package]]
name = "block-buffer"
version = "0.10.4"
@@ -438,33 +280,6 @@ dependencies = [
"generic-array",
]
-[[package]]
-name = "brotli"
-version = "3.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
- "brotli-decompressor",
-]
-
-[[package]]
-name = "brotli-decompressor"
-version = "2.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
-
[[package]]
name = "byte-unit"
version = "4.0.19"
@@ -487,24 +302,6 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-[[package]]
-name = "bytestring"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae"
-dependencies = [
- "bytes",
-]
-
-[[package]]
-name = "cc"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
-dependencies = [
- "jobserver",
-]
-
[[package]]
name = "cfg-if"
version = "1.0.0"
@@ -530,7 +327,7 @@ checksum = "4f423e341edefb78c9caba2d9c7f7687d0e72e89df3ce3394554754393ac3990"
dependencies = [
"anstream",
"anstyle",
- "bitflags",
+ "bitflags 1.3.2",
"clap_lex",
"strsim",
]
@@ -595,33 +392,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-[[package]]
-name = "cookie"
-version = "0.16.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
-dependencies = [
- "percent-encoding",
- "time",
- "version_check",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
-
[[package]]
name = "cpufeatures"
version = "0.2.7"
@@ -637,15 +407,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff"
-[[package]]
-name = "crc32fast"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-dependencies = [
- "cfg-if",
-]
-
[[package]]
name = "crossbeam-channel"
version = "0.5.8"
@@ -716,10 +477,8 @@ version = "0.1.0"
dependencies = [
"actix",
"actix-rt",
- "actix-web",
- "actix-web-codegen-const-routes",
- "actix-web-httpauth",
"anyhow",
+ "async-stream",
"async-trait",
"base64 0.13.1",
"byteorder",
@@ -733,10 +492,13 @@ dependencies = [
"maplit",
"openraft",
"pretty_env_logger 0.4.0",
- "reqwest",
+ "prost",
"serde 1.0.163",
"serde_json",
"tokio",
+ "tokio-stream",
+ "tonic",
+ "tonic-build",
"tracing",
"tracing-subscriber",
"url",
@@ -829,13 +591,10 @@ dependencies = [
]
[[package]]
-name = "encoding_rs"
-version = "0.8.32"
+name = "either"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
-dependencies = [
- "cfg-if",
-]
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "env_logger"
@@ -864,24 +623,19 @@ dependencies = [
]
[[package]]
-name = "errno"
-version = "0.3.1"
+name = "equivalent"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
-dependencies = [
- "errno-dragonfly",
- "libc",
- "windows-sys 0.48.0",
-]
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
+name = "errno"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
dependencies = [
- "cc",
"libc",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -894,14 +648,10 @@ dependencies = [
]
[[package]]
-name = "flate2"
-version = "1.0.26"
+name = "fixedbitset"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
-dependencies = [
- "crc32fast",
- "miniz_oxide",
-]
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "fnv"
@@ -909,21 +659,6 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
[[package]]
name = "form_urlencoded"
version = "1.1.0"
@@ -1055,7 +790,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http",
- "indexmap",
+ "indexmap 1.9.3",
"slab",
"tokio",
"tokio-util",
@@ -1068,6 +803,12 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+
[[package]]
name = "heck"
version = "0.4.1"
@@ -1098,6 +839,15 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "http"
version = "0.2.9"
@@ -1172,16 +922,15 @@ dependencies = [
]
[[package]]
-name = "hyper-tls"
-version = "0.5.0"
+name = "hyper-timeout"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
dependencies = [
- "bytes",
"hyper",
- "native-tls",
+ "pin-project-lite",
"tokio",
- "tokio-native-tls",
+ "tokio-io-timeout",
]
[[package]]
@@ -1207,7 +956,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
- "hashbrown",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.3",
]
[[package]]
@@ -1230,12 +989,6 @@ dependencies = [
"windows-sys 0.48.0",
]
-[[package]]
-name = "ipnet"
-version = "2.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f"
-
[[package]]
name = "is-terminal"
version = "0.4.7"
@@ -1244,40 +997,25 @@ checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
dependencies = [
"hermit-abi 0.3.1",
"io-lifetimes",
- "rustix",
+ "rustix 0.37.19",
"windows-sys 0.48.0",
]
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
-[[package]]
-name = "jobserver"
-version = "0.1.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "js-sys"
-version = "0.3.63"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "language-tags"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
-
[[package]]
name = "lazy_static"
version = "1.4.0"
@@ -1291,7 +1029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
dependencies = [
"arrayvec",
- "bitflags",
+ "bitflags 1.3.2",
"cfg-if",
"ryu",
"static_assertions",
@@ -1299,9 +1037,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.144"
+version = "0.2.151"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
+checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
[[package]]
name = "libmcaptcha"
@@ -1336,22 +1074,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
-name = "local-channel"
-version = "0.1.3"
+name = "linux-raw-sys"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c"
-dependencies = [
- "futures-core",
- "futures-sink",
- "futures-util",
- "local-waker",
-]
-
-[[package]]
-name = "local-waker"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1"
+checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
[[package]]
name = "lock_api"
@@ -1387,6 +1113,12 @@ dependencies = [
"regex-automata",
]
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
[[package]]
name = "mcaptcha_pow_sha256"
version = "0.4.0"
@@ -1412,15 +1144,6 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-[[package]]
-name = "miniz_oxide"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-dependencies = [
- "adler",
-]
-
[[package]]
name = "mio"
version = "0.8.6"
@@ -1434,22 +1157,10 @@ dependencies = [
]
[[package]]
-name = "native-tls"
-version = "0.2.11"
+name = "multimap"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
+checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
name = "nom"
@@ -1597,50 +1308,6 @@ dependencies = [
"tracing-futures",
]
-[[package]]
-name = "openssl"
-version = "0.10.52"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.16",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
[[package]]
name = "overload"
version = "0.1.1"
@@ -1670,18 +1337,22 @@ dependencies = [
"windows-sys 0.45.0",
]
-[[package]]
-name = "paste"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79"
-
[[package]]
name = "percent-encoding"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+[[package]]
+name = "petgraph"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.1.0",
+]
+
[[package]]
name = "pin-project"
version = "1.1.0"
@@ -1714,12 +1385,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-[[package]]
-name = "pkg-config"
-version = "0.3.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@@ -1746,6 +1411,16 @@ dependencies = [
"log",
]
+[[package]]
+name = "prettyplease"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9825a04601d60621feed79c4e6b56d65db77cdca55cef43b46b0de1096d1c282"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.16",
+]
+
[[package]]
name = "proc-macro2"
version = "1.0.58"
@@ -1755,6 +1430,60 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "prost"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
+dependencies = [
+ "bytes",
+ "heck",
+ "itertools",
+ "log",
+ "multimap",
+ "once_cell",
+ "petgraph",
+ "prettyplease",
+ "prost",
+ "prost-types",
+ "regex",
+ "syn 2.0.16",
+ "tempfile",
+ "which",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+dependencies = [
+ "anyhow",
+ "itertools",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.16",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
+dependencies = [
+ "prost",
+]
+
[[package]]
name = "quick-error"
version = "1.2.3"
@@ -1844,7 +1573,7 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
]
[[package]]
@@ -1853,7 +1582,7 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
]
[[package]]
@@ -1888,43 +1617,6 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
-[[package]]
-name = "reqwest"
-version = "0.11.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55"
-dependencies = [
- "base64 0.21.1",
- "bytes",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-tls",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "serde 1.0.163",
- "serde_json",
- "serde_urlencoded",
- "tokio",
- "tokio-native-tls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "winreg",
-]
-
[[package]]
name = "rust-ini"
version = "0.13.0"
@@ -1946,29 +1638,39 @@ version = "0.37.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d"
dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
"errno",
"io-lifetimes",
"libc",
- "linux-raw-sys",
+ "linux-raw-sys 0.3.8",
"windows-sys 0.48.0",
]
+[[package]]
+name = "rustix"
+version = "0.38.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
+dependencies = [
+ "bitflags 2.4.1",
+ "errno",
+ "libc",
+ "linux-raw-sys 0.4.12",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
[[package]]
name = "ryu"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
-[[package]]
-name = "schannel"
-version = "0.1.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"
-dependencies = [
- "windows-sys 0.42.0",
-]
-
[[package]]
name = "scheduled-thread-pool"
version = "0.2.7"
@@ -1984,29 +1686,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-[[package]]
-name = "security-framework"
-version = "2.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8"
-dependencies = [
- "bitflags",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
[[package]]
name = "semver"
version = "1.0.17"
@@ -2062,29 +1741,6 @@ dependencies = [
"serde 1.0.163",
]
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-dependencies = [
- "form_urlencoded",
- "itoa",
- "ryu",
- "serde 1.0.163",
-]
-
-[[package]]
-name = "sha1"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest",
-]
-
[[package]]
name = "sha1_smol"
version = "1.0.0"
@@ -2179,6 +1835,12 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
[[package]]
name = "tempfile"
version = "3.5.0"
@@ -2188,7 +1850,7 @@ dependencies = [
"cfg-if",
"fastrand",
"redox_syscall 0.3.5",
- "rustix",
+ "rustix 0.37.19",
"windows-sys 0.45.0",
]
@@ -2231,33 +1893,6 @@ dependencies = [
"once_cell",
]
-[[package]]
-name = "time"
-version = "0.3.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc"
-dependencies = [
- "itoa",
- "serde 1.0.163",
- "time-core",
- "time-macros",
-]
-
-[[package]]
-name = "time-core"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
-
-[[package]]
-name = "time-macros"
-version = "0.2.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b"
-dependencies = [
- "time-core",
-]
-
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -2292,6 +1927,16 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "tokio-io-timeout"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
+dependencies = [
+ "pin-project-lite",
+ "tokio",
+]
+
[[package]]
name = "tokio-macros"
version = "2.1.0"
@@ -2303,16 +1948,6 @@ dependencies = [
"syn 2.0.16",
]
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
[[package]]
name = "tokio-retry"
version = "0.3.0"
@@ -2324,6 +1959,17 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "tokio-stream"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
[[package]]
name = "tokio-util"
version = "0.7.8"
@@ -2347,6 +1993,72 @@ dependencies = [
"serde 1.0.163",
]
+[[package]]
+name = "tonic"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e"
+dependencies = [
+ "async-stream",
+ "async-trait",
+ "axum",
+ "base64 0.21.1",
+ "bytes",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-timeout",
+ "percent-encoding",
+ "pin-project",
+ "prost",
+ "tokio",
+ "tokio-stream",
+ "tower",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tonic-build"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889"
+dependencies = [
+ "prettyplease",
+ "proc-macro2",
+ "prost-build",
+ "quote",
+ "syn 2.0.16",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "indexmap 1.9.3",
+ "pin-project",
+ "pin-project-lite",
+ "rand",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
[[package]]
name = "tower-service"
version = "0.3.2"
@@ -2498,12 +2210,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
[[package]]
name = "version_check"
version = "0.9.4"
@@ -2527,79 +2233,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
-name = "wasm-bindgen"
-version = "0.2.86"
+name = "which"
+version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.86"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb"
-dependencies = [
- "bumpalo",
- "log",
+ "either",
+ "home",
"once_cell",
- "proc-macro2",
- "quote",
- "syn 2.0.16",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.86"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.86"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.16",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.86"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93"
-
-[[package]]
-name = "web-sys"
-version = "0.3.63"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
+ "rustix 0.38.28",
]
[[package]]
@@ -2633,21 +2275,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-[[package]]
-name = "windows-sys"
-version = "0.42.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
[[package]]
name = "windows-sys"
version = "0.45.0"
@@ -2666,6 +2293,15 @@ dependencies = [
"windows-targets 0.48.0",
]
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
[[package]]
name = "windows-targets"
version = "0.42.2"
@@ -2696,6 +2332,21 @@ dependencies = [
"windows_x86_64_msvc 0.48.0",
]
+[[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.2"
@@ -2708,6 +2359,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
@@ -2720,6 +2377,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
@@ -2732,6 +2395,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
@@ -2744,6 +2413,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
@@ -2756,6 +2431,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
@@ -2768,6 +2449,12 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
@@ -2781,13 +2468,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
-name = "winreg"
-version = "0.10.1"
+name = "windows_x86_64_msvc"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
-dependencies = [
- "winapi",
-]
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
[[package]]
name = "yaml-rust"
@@ -2797,33 +2481,3 @@ checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]
-
-[[package]]
-name = "zstd"
-version = "0.12.3+zstd.1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806"
-dependencies = [
- "zstd-safe",
-]
-
-[[package]]
-name = "zstd-safe"
-version = "6.0.5+zstd.1.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b"
-dependencies = [
- "libc",
- "zstd-sys",
-]
-
-[[package]]
-name = "zstd-sys"
-version = "2.0.8+zstd.1.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
-]
diff --git a/Cargo.toml b/Cargo.toml
index 9206b7d..e5e6d72 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,6 +2,7 @@
name = "dcache"
version = "0.1.0"
edition = "2021"
+build = "build.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -15,30 +16,31 @@ tracing = { version = "0.1.37", features = ["log"] }
serde_json = "1.0.96"
serde = { version = "1.0.163", features = ["derive"] }
byteorder = "1.4.3"
-actix-web = "4"
-actix-web-httpauth = "0.8.0"
futures-util = { version = "0.3.17", default-features = false, features = ["std"] }
lazy_static = "1.4.0"
pretty_env_logger = "0.4.0"
uuid = { version = "1", features = ["v4"] }
-actix-web-codegen-const-routes = { version = "0.1.0", tag = "0.1.0", git = "https://github.com/realaravinth/actix-web-codegen-const-routes" }
derive_builder = "0.11.2"
config = { version = "0.11", features = ["toml"] }
derive_more = "0.99.17"
url = { version = "2.2.2", features = ["serde"]}
async-trait = "0.1.36"
clap = { version = "4.1.11", features = ["derive", "env"] }
-reqwest = { version = "0.11.9", features = ["json"] }
-tokio = { version = "1.0", default-features = false, features = ["sync"] }
+tokio = { version = "1.0", default-features = false, features = ["sync", "macros", "rt-multi-thread"] }
tracing-subscriber = { version = "0.3.0", features = ["env-filter"] }
actix = "0.13.0"
+tonic = { version = "0.10.2", features = ["transport", "channel"] }
+prost = "0.12.3"
+tokio-stream = "0.1.14"
+async-stream = "0.3.5"
+actix-rt = "2.9.0"
[build-dependencies]
serde_json = "1"
+tonic-build = "0.10.2"
[dev-dependencies]
-actix-rt = "2.7.0"
base64 = "0.13.0"
anyhow = "1.0.63"
maplit = "1.0.2"
diff --git a/Dockerfile b/Dockerfile
index 5d5636b..21aeea4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,6 +4,7 @@
FROM rust:latest as rust
WORKDIR /src
+RUN apt update && apt-get install -y --no-install-recommends protobuf-compiler
COPY . .
RUN cargo build --release
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..c31aece
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,6 @@
+python.gen:
+ . venv/bin/activate && cd dcache_py
+ python -m grpc_tools.protoc \
+ -I=./proto/dcache/ --python_out=dcache_py/ \
+ --pyi_out=dcache_py/ \
+ --grpc_python_out=dcache_py/ ./proto/dcache/dcache.proto
diff --git a/bench/adaptor.py b/bench/adaptor.py
new file mode 100644
index 0000000..78b4b5c
--- /dev/null
+++ b/bench/adaptor.py
@@ -0,0 +1,64 @@
+import time
+from typing import Any, Callable
+import grpc
+import grpc.experimental.gevent as grpc_gevent
+from grpc_interceptor import ClientInterceptor
+from locust import User
+from locust.exception import LocustError
+
+# patch grpc so that it uses gevent instead of asyncio
+grpc_gevent.init_gevent()
+
+
+class LocustInterceptor(ClientInterceptor):
+ def __init__(self, environment, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+
+ self.env = environment
+
+ def intercept(
+ self,
+ method: Callable,
+ request_or_iterator: Any,
+ call_details: grpc.ClientCallDetails,
+ ):
+ response = None
+ exception = None
+ start_perf_counter = time.perf_counter()
+ response_length = 0
+ try:
+ response = method(request_or_iterator, call_details)
+ response_length = response.result().ByteSize()
+ except grpc.RpcError as e:
+ exception = e
+
+ self.env.events.request.fire(
+ request_type="grpc",
+ name=call_details.method,
+ response_time=(time.perf_counter() - start_perf_counter) * 1000,
+ response_length=response_length,
+ response=response,
+ context=None,
+ exception=exception,
+ )
+ return response
+
+
+class GrpcUser(User):
+ abstract = True
+ stub_class = None
+
+ def __init__(self, environment):
+ super().__init__(environment)
+ for attr_value, attr_name in (
+ (self.host, "host"),
+ (self.stub_class, "stub_class"),
+ ):
+ if attr_value is None:
+ raise LocustError(f"You must specify the {attr_name}.")
+
+ self._channel = grpc.insecure_channel(self.host)
+ interceptor = LocustInterceptor(environment=environment)
+ self._channel = grpc.intercept_channel(self._channel, interceptor)
+
+ self.stub = self.stub_class(self._channel)
diff --git a/bench/locustfile.py b/bench/locustfile.py
index 1645bb0..98259fd 100644
--- a/bench/locustfile.py
+++ b/bench/locustfile.py
@@ -1,95 +1,69 @@
+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
-password = "fooobarasdfasdf"
-username = "realaravinth"
+from dcache_py import dcache_pb2 as dcache
+from dcache_py.dcache_pb2 import RaftRequest
+from dcache_py.dcache_pb2_grpc import DcacheServiceStub
+
+import adaptor
+
+host = "localhost:9001"
+captcha_id = "locust"
-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 add_captcha(stub: DcacheServiceStub, captcha_id: str):
+ msg = dcache.AddCaptchaRequest(
+ id=captcha_id,
+ mcaptcha=dcache.MCaptcha(
+ duration=30,
+ defense=dcache.Defense(
+ levels=[
+ dcache.Level(visitor_threshold=50, difficulty_factor=500),
+ dcache.Level(visitor_threshold=5000, difficulty_factor=50000),
+ ]
+ ),
+ ),
+ )
+ resp = stub.AddCaptcha(msg)
+ pprint(f"Captcha added {captcha_id}: {resp}")
-
- 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
+with grpc.insecure_channel(host) as channel:
+ stub = DcacheServiceStub(channel)
+ add_captcha(stub=stub, captcha_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)
+
+#def pipeline_generate_messages():
+# for msg in pipeline_msgs:
+# yield msg
+
+
+class HelloGrpcUser(adaptor.GrpcUser):
+ stub_class = DcacheServiceStub
+ host = host
+ captcha_id = captcha_id
+ msg = dcache.CaptchaID(id=captcha_id)
def add_vote(self, captcha_id: str):
- resp = self.write(data={"AddVisitor": captcha_id})
- pprint(resp)
+ resp = self.stub.AddVisitor(self.msg)
- 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}")
+ def add_vote_pipeline(self):
+ res = self.stub.PipelineDcacheOps(pipeline_msgs)
+# @task
+# def addVote(self):
+# self.add_vote(self.captcha_id)
@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)
+ def addVotePipeline(self):
+ self.add_vote_pipeline()
diff --git a/bench/results/v2/grpc-no-conn-pool-single/bench.sh b/bench/results/v2/grpc-no-conn-pool-single/bench.sh
new file mode 100755
index 0000000..af9b270
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/bench.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+ ghz --insecure --proto ./proto/dcache/dcache.proto --call dcache.DcacheService.Write \
+ -c 300 -n 30000 --rps 4000 -O html -o out.html \
+ -d '{"data":"{\"AddVisitor\": \"test_1\"}"}' \
+ localhost:9001
+# -d '{"data":"{\"AddCaptcha\":{\"id\":\"test_1\",\"mcaptcha\":{\"defense\":{\"current_visitor_threshold\":0,\"levels\":[{\"difficulty_factor\":500,\"visitor_threshold\":50},{\"difficulty_factor\":50000,\"visitor_threshold\":5000}]},\"duration\":30,\"visitor_threshold\":0}}}"}' \
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 @@
+
+
+
+ Test Report for locustfile.py
+
+
+
+
+
+
Locust Test Report
+
+
+
+
During: 2023-12-29 10:34:29 - 2023-12-29 10:35:33
+
Target Host: localhost:9001
+
Script: locustfile.py
+
+
+
+
Request Statistics
+
+
+
+ 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 |
+
+
+
+
+
+
+
+
Response Time Statistics
+
+
+
+ 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 |
+
+
+
+
+
+
+
+
+
+
+
+
+
Charts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/requests_1703846136.072447.csv b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/requests_1703846136.072447.csv
new file mode 100644
index 0000000..51e1b08
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/grpc-no-conn-pool-batch/requests_1703846136.072447.csv
@@ -0,0 +1,3 @@
+Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100%
+grpc,/dcache.DcacheService/PipelineDcacheOps,41383,0,140.0,99.16818701259079,5.581609002547339,182.89305199868977,40.0,650.896214047811,0.0,140,150,150,150,160,160,160,170,180,180,180
+,Aggregated,41383,0,140.0,99.16818701259079,5.581609002547339,182.89305199868977,40.0,650.896214047811,0.0,140,150,150,150,160,160,160,170,180,180,180
diff --git a/bench/results/v2/grpc-no-conn-pool-single/json/exceptions_1703750739.8121767.csv b/bench/results/v2/grpc-no-conn-pool-single/json/exceptions_1703750739.8121767.csv
new file mode 100644
index 0000000..5e0e870
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/json/exceptions_1703750739.8121767.csv
@@ -0,0 +1 @@
+Count,Message,Traceback,Nodes
diff --git a/bench/results/v2/grpc-no-conn-pool-single/json/failures_1703750736.2690804.csv b/bench/results/v2/grpc-no-conn-pool-single/json/failures_1703750736.2690804.csv
new file mode 100644
index 0000000..f87ff75
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/json/failures_1703750736.2690804.csv
@@ -0,0 +1 @@
+Method,Name,Error,Occurrences
diff --git a/bench/results/v2/grpc-no-conn-pool-single/json/report_1703750744.1268215.html b/bench/results/v2/grpc-no-conn-pool-single/json/report_1703750744.1268215.html
new file mode 100644
index 0000000..bddb3a0
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/json/report_1703750744.1268215.html
@@ -0,0 +1,592 @@
+
+
+
+ Test Report for locustfile.py
+
+
+
+
+
+
Locust Test Report
+
+
+
+
During: 2023-12-28 08:02:42 - 2023-12-28 08:04:54
+
Target Host: localhost:9001
+
Script: locustfile.py
+
+
+
+
Request Statistics
+
+
+
+ Method |
+ Name |
+ # Requests |
+ # Fails |
+ Average (ms) |
+ Min (ms) |
+ Max (ms) |
+ Average size (bytes) |
+ RPS |
+ Failures/s |
+
+
+
+
+
+ grpc |
+ /dcache.DcacheService/Write |
+ 96465 |
+ 0 |
+ 530 |
+ 3 |
+ 2860 |
+ 130 |
+ 732.3 |
+ 0.0 |
+
+
+
+ |
+ Aggregated |
+ 96465 |
+ 0 |
+ 530 |
+ 3 |
+ 2860 |
+ 130 |
+ 732.3 |
+ 0.0 |
+
+
+
+
+
+
+
+
Response Time Statistics
+
+
+
+ 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/Write |
+ 600 |
+ 670 |
+ 770 |
+ 880 |
+ 1100 |
+ 1200 |
+ 1500 |
+ 2900 |
+
+
+
+ |
+ Aggregated |
+ 600 |
+ 670 |
+ 770 |
+ 880 |
+ 1100 |
+ 1200 |
+ 1500 |
+ 2900 |
+
+
+
+
+
+
+
+
+
+
+
+
+
Charts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bench/results/v2/grpc-no-conn-pool-single/json/requests_1703750722.6138687.csv b/bench/results/v2/grpc-no-conn-pool-single/json/requests_1703750722.6138687.csv
new file mode 100644
index 0000000..85ebcbd
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/json/requests_1703750722.6138687.csv
@@ -0,0 +1,3 @@
+Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100%
+grpc,/dcache.DcacheService/Write,96465,0,600.0,530.5241670541676,3.931416000114041,2860.153126999876,130.11822940963043,732.274667601832,0.0,600,720,830,880,1100,1200,1300,1500,2300,2900,2900
+,Aggregated,96465,0,600.0,530.5241670541676,3.931416000114041,2860.153126999876,130.11822940963043,732.274667601832,0.0,600,720,830,880,1100,1200,1300,1500,2300,2900,2900
diff --git a/bench/results/v2/grpc-no-conn-pool-single/nojson/exceptions_1703752024.3059587.csv b/bench/results/v2/grpc-no-conn-pool-single/nojson/exceptions_1703752024.3059587.csv
new file mode 100644
index 0000000..5e0e870
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/nojson/exceptions_1703752024.3059587.csv
@@ -0,0 +1 @@
+Count,Message,Traceback,Nodes
diff --git a/bench/results/v2/grpc-no-conn-pool-single/nojson/failures_1703752021.1710336.csv b/bench/results/v2/grpc-no-conn-pool-single/nojson/failures_1703752021.1710336.csv
new file mode 100644
index 0000000..f87ff75
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/nojson/failures_1703752021.1710336.csv
@@ -0,0 +1 @@
+Method,Name,Error,Occurrences
diff --git a/bench/results/v2/grpc-no-conn-pool-single/nojson/report_1703752029.4987965.html b/bench/results/v2/grpc-no-conn-pool-single/nojson/report_1703752029.4987965.html
new file mode 100644
index 0000000..3f2fea7
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/nojson/report_1703752029.4987965.html
@@ -0,0 +1,592 @@
+
+
+
+ Test Report for locustfile.py
+
+
+
+
+
+
Locust Test Report
+
+
+
+
During: 2023-12-28 08:25:29 - 2023-12-28 08:26:43
+
Target Host: localhost:9001
+
Script: locustfile.py
+
+
+
+
Request Statistics
+
+
+
+ Method |
+ Name |
+ # Requests |
+ # Fails |
+ Average (ms) |
+ Min (ms) |
+ Max (ms) |
+ Average size (bytes) |
+ RPS |
+ Failures/s |
+
+
+
+
+
+ grpc |
+ /dcache.DcacheService/AddVisitor |
+ 358924 |
+ 0 |
+ 77 |
+ 3 |
+ 123 |
+ 0 |
+ 4843.0 |
+ 0.0 |
+
+
+
+ |
+ Aggregated |
+ 358924 |
+ 0 |
+ 77 |
+ 3 |
+ 123 |
+ 0 |
+ 4843.0 |
+ 0.0 |
+
+
+
+
+
+
+
+
Response Time Statistics
+
+
+
+ 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/AddVisitor |
+ 79 |
+ 82 |
+ 85 |
+ 88 |
+ 92 |
+ 96 |
+ 100 |
+ 120 |
+
+
+
+ |
+ Aggregated |
+ 79 |
+ 82 |
+ 85 |
+ 88 |
+ 92 |
+ 96 |
+ 100 |
+ 120 |
+
+
+
+
+
+
+
+
+
+
+
+
+
Charts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bench/results/v2/grpc-no-conn-pool-single/nojson/requests_1703752009.4098575.csv b/bench/results/v2/grpc-no-conn-pool-single/nojson/requests_1703752009.4098575.csv
new file mode 100644
index 0000000..2ddf854
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/nojson/requests_1703752009.4098575.csv
@@ -0,0 +1,3 @@
+Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100%
+grpc,/dcache.DcacheService/AddVisitor,358924,0,79,77.86313645947614,3.354386999944836,123.28810700000759,0.0,4842.970815301002,0.0,79,84,86,88,92,96,100,100,110,120,120
+,Aggregated,358924,0,79,77.86313645947614,3.354386999944836,123.28810700000759,0.0,4842.970815301002,0.0,79,84,86,88,92,96,100,100,110,120,120
diff --git a/bench/results/v2/grpc-no-conn-pool-single/out.html b/bench/results/v2/grpc-no-conn-pool-single/out.html
new file mode 100644
index 0000000..5ffc5e7
--- /dev/null
+++ b/bench/results/v2/grpc-no-conn-pool-single/out.html
@@ -0,0 +1,413 @@
+
+
+
+
+
+
+ ghz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Mon Dec 25 2023 @ 21:02:15
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Summary
+
+
+
+
+ Count |
+ 30000 |
+
+
+ Total |
+ 7.50 s |
+
+
+ Slowest |
+ 3.60 ms |
+
+
+ Fastest |
+ 0.13 ms |
+
+
+ Average |
+ 0.53 ms |
+
+
+ Requests / sec |
+ 3999.44 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Latency distribution
+
+
+
+
+
+ 10 % |
+
+ 25 % |
+
+ 50 % |
+
+ 75 % |
+
+ 90 % |
+
+ 95 % |
+
+ 99 % |
+
+
+
+
+
+
+ 0.43 ms |
+
+ 0.45 ms |
+
+ 0.50 ms |
+
+ 0.58 ms |
+
+ 0.65 ms |
+
+ 0.71 ms |
+
+ 0.89 ms |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Options
+
+
+
+
{
+ "call": "dcache.DcacheService.Write",
+ "host": "localhost:9001",
+ "proto": "./proto/dcache/dcache.proto",
+ "import-paths": [
+ "proto/dcache",
+ "."
+ ],
+ "insecure": true,
+ "rps": 4000,
+ "load-schedule": "const",
+ "load-start": 0,
+ "load-end": 0,
+ "load-step": 0,
+ "load-step-duration": 0,
+ "load-max-duration": 0,
+ "concurrency": 300,
+ "concurrency-schedule": "const",
+ "concurrency-start": 0,
+ "concurrency-end": 0,
+ "concurrency-step": 1,
+ "concurrency-step-duration": 0,
+ "concurrency-max-duration": 0,
+ "total": 30000,
+ "connections": 1,
+ "timeout": 20000000000,
+ "dial-timeout": 10000000000,
+ "data": {
+ "data": "{\"AddVisitor\": \"test_1\"}"
+ },
+ "binary": false,
+ "CPUs": 12
+}
+
+
+
+
+
+
+
+
+
+ Generated by ghz
+
+
+
+
+
+
+
+
+
+
+
+
+
+