Skip to content

Commit 99d96f2

Browse files
nmoosciscoNathan Moos
andauthored
feat: add the ability to build a server (#101)
In order to support Determinstic Simulation Testing (DST) via the `turmoil` crate, this patch introduces a new feature flag, `build-server`, which builds a server variant of the etcd protobuf and re-exports it under the same `proto` package as the `pub-response-field` feature flag does. This enables a downstream user to implement various mock etcd scenarios within a Turmoil environment, allowing for more precise testing. Co-authored-by: Nathan Moos <nmoos@cisco.com>
1 parent cc8c002 commit 99d96f2

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ tls-openssl = ["openssl", "hyper-openssl", "hyper", "hyper-util"]
1818
tls-openssl-vendored = ["tls-openssl", "openssl/vendored"]
1919
tls-roots = ["tls", "tonic/tls-roots"]
2020
pub-response-field = ["visible"]
21+
build-server = ["pub-response-field"]
2122

2223
[dependencies]
2324
tonic = "0.12.3"

build.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
1+
#[cfg(feature = "build-server")]
2+
fn should_build_server() -> bool {
3+
true
4+
}
5+
6+
#[cfg(not(feature = "build-server"))]
7+
fn should_build_server() -> bool {
8+
false
9+
}
10+
111
fn main() {
212
let proto_root = "proto";
313
println!("cargo:rerun-if-changed={}", proto_root);
414

515
tonic_build::configure()
6-
.build_server(false)
16+
.build_server(should_build_server())
717
.compile_protos(
818
&[
919
"proto/auth.proto",

src/lib.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,46 @@ pub mod proto {
161161
pub use crate::rpc::pb::v3lockpb::{
162162
LockResponse as PbLockResponse, UnlockResponse as PbUnlockResponse,
163163
};
164+
165+
#[cfg(feature = "build-server")]
166+
pub use crate::rpc::pb::etcdserverpb::{
167+
auth_server::{Auth as PbAuthService, AuthServer as PbAuthServer},
168+
cluster_server::{Cluster as PbClusterService, ClusterServer as PbClusterServer},
169+
kv_server::{Kv as PbKvService, KvServer as PbKvServer},
170+
lease_server::{Lease as PbLeaseService, LeaseServer as PbLeaseServer},
171+
maintenance_server::{
172+
Maintenance as PbMaintenanceService, MaintenanceServer as PbMaintenanceServer,
173+
},
174+
watch_server::{Watch as PbWatchService, WatchServer as PbWatchServer},
175+
};
176+
177+
#[cfg(feature = "build-server")]
178+
pub use crate::rpc::pb::etcdserverpb::{
179+
AlarmRequest as PbAlarmRequest, AuthDisableRequest as PbAuthDisableRequest,
180+
AuthEnableRequest as PbAuthEnableRequest, AuthRoleAddRequest as PbAuthRoleAddRequest,
181+
AuthRoleDeleteRequest as PbAuthRoleDeleteRequest,
182+
AuthRoleGetRequest as PbAuthRoleGetRequest,
183+
AuthRoleGrantPermissionRequest as PbAuthRoleGrantPermissionRequest,
184+
AuthRoleListRequest as PbAuthRoleListRequest,
185+
AuthRoleRevokePermissionRequest as PbAuthRoleRevokePermissionRequest,
186+
AuthUserAddRequest as PbAuthUserAddRequest,
187+
AuthUserChangePasswordRequest as PbAuthUserChangePasswordRequest,
188+
AuthUserDeleteRequest as PbAuthUserDeleteRequest,
189+
AuthUserGetRequest as PbAuthUserGetRequest,
190+
AuthUserGrantRoleRequest as PbAuthUserGrantRoleRequest,
191+
AuthUserListRequest as PbAuthUserListRequest,
192+
AuthUserRevokeRoleRequest as PbAuthUserRevokeRoleRequest,
193+
AuthenticateRequest as PbAuthenticateRequest, CompactionRequest as PbCompactionRequest,
194+
DefragmentRequest as PbDefragmentRequest, DeleteRangeRequest as PbDeleteRequest,
195+
HashKvRequest as PbHashKvRequest, HashRequest as PbHashRequest,
196+
LeaseGrantRequest as PbLeaseGrantRequest, LeaseKeepAliveRequest as PbLeaseKeepAliveRequest,
197+
LeaseLeasesRequest as PbLeaseLeasesRequest, LeaseRevokeRequest as PbLeaseRevokeRequest,
198+
LeaseTimeToLiveRequest as PbLeaseTimeToLiveRequest, MemberAddRequest as PbMemberAddRequest,
199+
MemberListRequest as PbMemberListRequest, MemberPromoteRequest as PbMemberPromoteRequest,
200+
MemberRemoveRequest as PbMemberRemoveRequest, MemberUpdateRequest as PbMemberUpdateRequest,
201+
MoveLeaderRequest as PbMoveLeaderRequest, PutRequest as PbPutRequest,
202+
RangeRequest as PbRangeRequest, SnapshotRequest as PbSnapshotRequest,
203+
StatusRequest as PbStatusRequest, TxnRequest as PbTxnRequest,
204+
WatchRequest as PbWatchRequest,
205+
};
164206
}

0 commit comments

Comments
 (0)