1
+ import datetime
2
+ import typing
3
+
4
+ from google .protobuf .internal import containers
5
+ from google .protobuf import duration_pb2
6
+
1
7
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
2
22
3
23
4
24
def test_offsets_range_intersected ():
@@ -17,3 +37,72 @@ def test_offsets_range_intersected():
17
37
]:
18
38
assert OffsetsRange (test [0 ], test [1 ]).is_intersected_with (OffsetsRange (test [2 ], test [3 ]))
19
39
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