@@ -776,8 +776,8 @@ Y_UNIT_TEST(ProduceRequestData_Record_v0) {
776776 UNIT_ASSERT_EQUAL (r0.BaseOffset , 0 );
777777 UNIT_ASSERT_EQUAL (r0.BatchLength , 0 );
778778 UNIT_ASSERT_EQUAL (r0.PartitionLeaderEpoch , -1 );
779- UNIT_ASSERT_EQUAL (r0.Magic , 0 );
780- UNIT_ASSERT_EQUAL (r0.Crc , 544167206 );
779+ UNIT_ASSERT_EQUAL (r0.Magic , 2 );
780+ UNIT_ASSERT_EQUAL (r0.Crc , 0 );
781781 UNIT_ASSERT_EQUAL (r0.Attributes , 0 );
782782 UNIT_ASSERT_EQUAL (r0.LastOffsetDelta , 0 );
783783 UNIT_ASSERT_EQUAL (r0.BaseTimestamp , -1 );
@@ -793,19 +793,70 @@ Y_UNIT_TEST(ProduceRequestData_Record_v0) {
793793 UNIT_ASSERT_EQUAL (r0.Records [0 ].Headers .size (), (size_t )0 );
794794}
795795
796- char Hex (const unsigned char c) {
797- return c < 10 ? ' 0' + c : ' A' + c - 10 ;
796+ //
797+
798+ Y_UNIT_TEST (ProduceRequestData_Record_v0_manyMessages) {
799+ ui8 reference[] = { 0x00 , 0x00 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x05 , 0x00 , 0x07 , 0x72 , 0x64 ,
800+ 0x6B , 0x61 , 0x66 , 0x6B , 0x61 , 0x00 , 0x00 , 0xFF , 0xFF , 0x00 , 0x00 , 0x75 , 0x30 , 0x02 ,
801+ 0x05 , 0x61 , 0x61 , 0x61 , 0x61 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x7D , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
802+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x13 , 0x5F , 0x1B , 0x4F , 0x8D , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF ,
803+ 0xFF , 0x00 , 0x00 , 0x00 , 0x05 , 0x61 , 0x61 , 0x61 , 0x61 , 0x61 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
804+ 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x13 , 0xBA , 0x6C , 0x26 , 0x93 , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF ,
805+ 0x00 , 0x00 , 0x00 , 0x05 , 0x62 , 0x62 , 0x62 , 0x62 , 0x62 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
806+ 0x02 , 0x00 , 0x00 , 0x00 , 0x13 , 0x50 , 0x6E , 0x03 , 0xA6 , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 ,
807+ 0x00 , 0x00 , 0x05 , 0x63 , 0x63 , 0x63 , 0x63 , 0x63 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 ,
808+ 0x00 , 0x00 , 0x00 , 0x13 , 0xAB , 0xF3 , 0xF2 , 0xEE , 0x00 , 0x00 , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 ,
809+ 0x00 , 0x05 , 0x64 , 0x64 , 0x64 , 0x64 , 0x64 , 0x00 , 0x00 , 0x00 };
810+
811+ TBuffer buffer ((char *)reference, sizeof (reference));
812+ TKafkaReadable readable (buffer);
813+
814+ Cerr << " >>>>> Buffer size: " << buffer.Size () << Endl;
815+
816+ TRequestHeaderData header;
817+ header.Read (readable, 2 );
818+
819+ TProduceRequestData result;
820+ result.Read (readable, header.RequestApiVersion );
821+
822+ UNIT_ASSERT_EQUAL (result.Acks , -1 );
823+ UNIT_ASSERT_EQUAL (result.TimeoutMs , 30000 );
824+
825+ auto & r0 = *result.TopicData [0 ].PartitionData [0 ].Records ;
826+ UNIT_ASSERT_EQUAL (r0.BaseOffset , 0 );
827+ UNIT_ASSERT_EQUAL (r0.BatchLength , 0 );
828+ UNIT_ASSERT_EQUAL (r0.PartitionLeaderEpoch , -1 );
829+ UNIT_ASSERT_EQUAL (r0.Magic , 2 );
830+ UNIT_ASSERT_EQUAL (r0.Crc , 0 );
831+ UNIT_ASSERT_EQUAL (r0.Attributes , 0 );
832+ UNIT_ASSERT_EQUAL (r0.LastOffsetDelta , 0 );
833+ UNIT_ASSERT_EQUAL (r0.BaseTimestamp , -1 );
834+ UNIT_ASSERT_EQUAL (r0.MaxTimestamp , -1 );
835+ UNIT_ASSERT_EQUAL (r0.ProducerId , -1 );
836+ UNIT_ASSERT_EQUAL (r0.ProducerEpoch , -1 );
837+ UNIT_ASSERT_EQUAL (r0.BaseSequence , -1 );
838+
839+ UNIT_ASSERT_VALUES_EQUAL (r0.Records .size (), (size_t )4 );
840+
841+ // UNIT_ASSERT_EQUAL(r0.Records[0].Key, TKafkaRawBytes("", 0));
842+ UNIT_ASSERT_EQUAL (r0.Records [0 ].Value , TKafkaRawBytes (" aaaaa" , 5 ));
843+ UNIT_ASSERT_EQUAL (r0.Records [0 ].Headers .size (), (size_t )0 );
844+
845+ // UNIT_ASSERT_EQUAL(r0.Records[0].Key, TKafkaRawBytes("", 0));
846+ UNIT_ASSERT_EQUAL (r0.Records [1 ].Value , TKafkaRawBytes (" bbbbb" , 5 ));
847+ UNIT_ASSERT_EQUAL (r0.Records [1 ].Headers .size (), (size_t )0 );
848+
849+ // UNIT_ASSERT_EQUAL(r0.Records[0].Key, TKafkaRawBytes("", 0));
850+ UNIT_ASSERT_EQUAL (r0.Records [2 ].Value , TKafkaRawBytes (" ccccc" , 5 ));
851+ UNIT_ASSERT_EQUAL (r0.Records [2 ].Headers .size (), (size_t )0 );
852+
853+ // UNIT_ASSERT_EQUAL(r0.Records[0].Key, TKafkaRawBytes("", 0));
854+ UNIT_ASSERT_EQUAL (r0.Records [3 ].Value , TKafkaRawBytes (" ddddd" , 5 ));
855+ UNIT_ASSERT_EQUAL (r0.Records [3 ].Headers .size (), (size_t )0 );
798856}
799857
800858void Print (std::string& sb) {
801- for (size_t i = 0 ; i < sb.length (); ++i) {
802- char c = sb.at (i);
803- if (i > 0 ) {
804- Cerr << " , " ;
805- }
806- Cerr << " 0x" << Hex (c >> 4 ) << Hex (c & 0x0F );
807- }
808- Cerr << Endl;
859+ Cerr << Hex (sb.begin (), sb.end ()) << Endl;
809860}
810861
811862}
0 commit comments