Skip to content

Commit ab66f36

Browse files
committed
tests
1 parent a4588fb commit ab66f36

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

ydb/_grpc/grpcwrapper/ydb_topic_test.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,24 @@
1+
import datetime
2+
import typing
3+
4+
from google.protobuf.internal import containers
5+
from google.protobuf import duration_pb2
6+
17
from ydb._grpc.grpcwrapper.ydb_topic import OffsetsRange
8+
from .ydb_topic import AlterTopicRequest
9+
from .ydb_topic_public_types import (
10+
AlterTopicRequestParams,
11+
PublicAlterConsumer,
12+
PublicConsumer,
13+
PublicMeteringMode,
14+
PublicCodec
15+
)
16+
17+
# Workaround for good IDE and universal for runtime
18+
if typing.TYPE_CHECKING:
19+
from ..v4.protos import ydb_topic_pb2
20+
else:
21+
from ..common.protos import ydb_topic_pb2
222

323

424
def test_offsets_range_intersected():
@@ -17,3 +37,72 @@ def test_offsets_range_intersected():
1737
]:
1838
assert OffsetsRange(test[0], test[1]).is_intersected_with(OffsetsRange(test[2], test[3]))
1939
assert OffsetsRange(test[2], test[3]).is_intersected_with(OffsetsRange(test[0], test[1]))
40+
41+
42+
def test_alter_topic_request_from_public_to_proto():
43+
# Specify all fields with all possible input ways
44+
params = {
45+
"path": "topic_name",
46+
"add_consumers": [
47+
"new_consumer_1",
48+
PublicConsumer("new_consumer_2"),
49+
],
50+
"alter_consumers": [
51+
"old_consumer_1",
52+
PublicAlterConsumer("old_consumer_2"),
53+
],
54+
"drop_consumers": ["redundant_consumer"],
55+
"set_retention_period": datetime.timedelta(weeks=4),
56+
"set_retention_storage_mb": 4,
57+
"set_supported_codecs": [
58+
1,
59+
PublicCodec(2)
60+
],
61+
"set_partition_write_burst_bytes": 8,
62+
"set_partition_write_speed_bytes_per_second": 15,
63+
"alter_attributes": {'key': 'value'},
64+
"set_metering_mode": 1,
65+
"set_min_active_partitions": 2,
66+
"set_partition_count_limit": 4,
67+
}
68+
69+
params_public = AlterTopicRequestParams(**params)
70+
request = AlterTopicRequest.from_public(params_public)
71+
request_proto = request.to_proto()
72+
73+
# Check that everything was converted right
74+
assert type(request_proto) == ydb_topic_pb2.AlterTopicRequest
75+
76+
assert request_proto.path == params['path']
77+
78+
assert type(request_proto.drop_consumers) == containers.RepeatedScalarFieldContainer
79+
assert len(request_proto.drop_consumers) == len(params["drop_consumers"])
80+
assert request_proto.drop_consumers[0] == params["drop_consumers"][0]
81+
82+
assert type(request_proto.add_consumers) == containers.RepeatedCompositeFieldContainer
83+
assert len(request_proto.add_consumers) == len(params['add_consumers'])
84+
for consumer in request_proto.add_consumers:
85+
assert type(consumer) == ydb_topic_pb2.Consumer
86+
87+
assert type(request_proto.alter_consumers) == containers.RepeatedCompositeFieldContainer
88+
assert len(request_proto.alter_consumers) == len(params['alter_consumers'])
89+
for consumer in request_proto.alter_consumers:
90+
assert type(consumer) == ydb_topic_pb2.AlterConsumer
91+
92+
assert type(request_proto.alter_attributes) == containers.ScalarMap
93+
assert request_proto.alter_attributes == params['alter_attributes']
94+
95+
assert type(request_proto.alter_partitioning_settings) == ydb_topic_pb2.AlterPartitioningSettings
96+
assert request_proto.alter_partitioning_settings.set_min_active_partitions == params['set_min_active_partitions']
97+
assert request_proto.alter_partitioning_settings.set_partition_count_limit == params['set_partition_count_limit']
98+
99+
assert request_proto.set_partition_write_burst_bytes == params['set_partition_write_burst_bytes']
100+
assert request_proto.set_partition_write_speed_bytes_per_second == params['set_partition_write_speed_bytes_per_second']
101+
102+
assert type(request_proto.set_retention_period) == duration_pb2.Duration
103+
assert request_proto.set_retention_storage_mb == params['set_retention_storage_mb']
104+
105+
assert int(request_proto.set_metering_mode) == params['set_metering_mode']
106+
assert type(request_proto.set_supported_codecs) == ydb_topic_pb2.SupportedCodecs
107+
assert len(request_proto.set_supported_codecs.codecs) == len(params['set_supported_codecs'])
108+
# TODO: finish

0 commit comments

Comments
 (0)