blob: 5d38c7a7da408b7169f7906afccd197b97134b85 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from __future__ import annotations
from typing import List, Optional, Sequence
import grpc_fbs
import grpc_fdl
import grpc_pb
def fdl_request(id_value: str, count: int, body: str) -> grpc_fdl.GrpcFdlRequest:
return grpc_fdl.GrpcFdlRequest(id=id_value, count=count, payload=body)
def fdl_response(
request: grpc_fdl.GrpcFdlRequest, tag: str, offset: int
) -> grpc_fdl.GrpcFdlResponse:
return grpc_fdl.GrpcFdlResponse(
id=f"{tag}:{request.id}",
count=request.count + offset,
payload=f"{tag}:{request.payload}",
)
def fdl_aggregate(
requests: Sequence[grpc_fdl.GrpcFdlRequest],
) -> grpc_fdl.GrpcFdlResponse:
return grpc_fdl.GrpcFdlResponse(
id="client:" + "+".join(request.id for request in requests),
count=sum(request.count for request in requests),
payload="client:" + "+".join(request.payload for request in requests),
)
def fdl_union_request(request: grpc_fdl.GrpcFdlRequest) -> grpc_fdl.GrpcFdlUnion:
return grpc_fdl.GrpcFdlUnion.request(request)
def fdl_union_response(
request: grpc_fdl.GrpcFdlRequest, tag: str, offset: int
) -> grpc_fdl.GrpcFdlUnion:
return grpc_fdl.GrpcFdlUnion.response(fdl_response(request, tag, offset))
def fdl_union_aggregate(
requests: Sequence[grpc_fdl.GrpcFdlRequest],
) -> grpc_fdl.GrpcFdlUnion:
return grpc_fdl.GrpcFdlUnion.response(fdl_aggregate(requests))
def fdl_request_from_union(union: grpc_fdl.GrpcFdlUnion) -> grpc_fdl.GrpcFdlRequest:
assert union.is_request()
return union.request_value()
def fdl_message_requests() -> List[grpc_fdl.GrpcFdlRequest]:
return [
fdl_request("fdl-a", 1, "alpha"),
fdl_request("fdl-b", 2, "beta"),
]
def fdl_union_requests() -> List[grpc_fdl.GrpcFdlRequest]:
return [
fdl_request("fdl-u-a", 3, "union-alpha"),
fdl_request("fdl-u-b", 4, "union-beta"),
]
def fbs_request(id_value: str, count: int, body: str) -> grpc_fbs.GrpcFbsRequest:
return grpc_fbs.GrpcFbsRequest(id=id_value, count=count, payload=body)
def fbs_response(
request: grpc_fbs.GrpcFbsRequest, tag: str, offset: int
) -> grpc_fbs.GrpcFbsResponse:
return grpc_fbs.GrpcFbsResponse(
id=f"{tag}:{request.id}",
count=request.count + offset,
payload=f"{tag}:{request.payload}",
)
def fbs_aggregate(
requests: Sequence[grpc_fbs.GrpcFbsRequest],
) -> grpc_fbs.GrpcFbsResponse:
return grpc_fbs.GrpcFbsResponse(
id="client:" + "+".join(request.id for request in requests),
count=sum(request.count for request in requests),
payload="client:" + "+".join(request.payload for request in requests),
)
def fbs_union_request(request: grpc_fbs.GrpcFbsRequest) -> grpc_fbs.GrpcFbsUnion:
return grpc_fbs.GrpcFbsUnion.grpc_fbs_request(request)
def fbs_union_response(
request: grpc_fbs.GrpcFbsRequest, tag: str, offset: int
) -> grpc_fbs.GrpcFbsUnion:
return grpc_fbs.GrpcFbsUnion.grpc_fbs_response(fbs_response(request, tag, offset))
def fbs_union_aggregate(
requests: Sequence[grpc_fbs.GrpcFbsRequest],
) -> grpc_fbs.GrpcFbsUnion:
return grpc_fbs.GrpcFbsUnion.grpc_fbs_response(fbs_aggregate(requests))
def fbs_request_from_union(union: grpc_fbs.GrpcFbsUnion) -> grpc_fbs.GrpcFbsRequest:
assert union.is_grpc_fbs_request()
return union.grpc_fbs_request_value()
def fbs_message_requests() -> List[grpc_fbs.GrpcFbsRequest]:
return [
fbs_request("fbs-a", 5, "alpha"),
fbs_request("fbs-b", 6, "beta"),
]
def fbs_union_requests() -> List[grpc_fbs.GrpcFbsRequest]:
return [
fbs_request("fbs-u-a", 7, "union-alpha"),
fbs_request("fbs-u-b", 8, "union-beta"),
]
def pb_payload_text(value: str) -> grpc_pb.GrpcPbRequest.Payload:
return grpc_pb.GrpcPbRequest.Payload.text(value)
def pb_response_payload(
payload: Optional[grpc_pb.GrpcPbRequest.Payload],
tag: str,
offset: int,
) -> Optional[grpc_pb.GrpcPbResponse.Payload]:
if payload is None:
return None
if payload.is_text():
return grpc_pb.GrpcPbResponse.Payload.text(f"{tag}:{payload.text_value()}")
assert payload.is_number()
return grpc_pb.GrpcPbResponse.Payload.number(payload.number_value() + offset)
def pb_request(
id_value: str, count: int, payload: grpc_pb.GrpcPbRequest.Payload
) -> grpc_pb.GrpcPbRequest:
return grpc_pb.GrpcPbRequest(id=id_value, count=count, payload=payload)
def pb_response(
request: grpc_pb.GrpcPbRequest, tag: str, offset: int
) -> grpc_pb.GrpcPbResponse:
return grpc_pb.GrpcPbResponse(
id=f"{tag}:{request.id}",
count=request.count + offset,
payload=pb_response_payload(request.payload, tag, offset),
)
def pb_aggregate(
requests: Sequence[grpc_pb.GrpcPbRequest],
) -> grpc_pb.GrpcPbResponse:
return grpc_pb.GrpcPbResponse(
id="client:" + "+".join(request.id for request in requests),
count=sum(request.count for request in requests),
payload=grpc_pb.GrpcPbResponse.Payload.text(
"client:" + "+".join(request.id for request in requests)
),
)
def pb_requests() -> List[grpc_pb.GrpcPbRequest]:
return [
pb_request("pb-a", 9, pb_payload_text("alpha")),
pb_request("pb-b", 10, grpc_pb.GrpcPbRequest.Payload.number(42)),
]