@@ -664,6 +664,32 @@ def test_json_update(self):
664664 ),
665665 self .assertEqual (event .rows [0 ]["after_values" ]["setting" ], {b"btn" : True }),
666666
667+ def test_format_description_event (self ):
668+ self .stream .close ()
669+ self .stream = BinLogStreamReader (
670+ self .database ,
671+ server_id = 1024 ,
672+ blocking = False ,
673+ only_events = [FormatDescriptionEvent ],
674+ )
675+
676+ event = self .stream .fetchone ()
677+ self .assertIsInstance (event , FormatDescriptionEvent )
678+ self .assertIsInstance (event .binlog_version , tuple )
679+ self .assertIsInstance (event .mysql_version_str , str )
680+ self .assertTrue (
681+ event .mysql_version_str .startswith ("5." )
682+ or event .mysql_version_str .startswith ("8." )
683+ ) # Example check
684+ self .assertIsInstance (event .common_header_len , int )
685+ self .assertIsInstance (event .post_header_len , tuple )
686+ self .assertIsInstance (event .mysql_version , tuple )
687+ self .assertEqual (len (event .mysql_version ), 3 )
688+ self .assertEqual (event .dbms , "mysql" )
689+ self .assertIsInstance (event .server_version_split , tuple )
690+ self .assertEqual (len (event .server_version_split ), 3 )
691+ self .assertIsInstance (event .number_of_event_types , int )
692+
667693
668694class TestMultipleRowBinLogStreamReader (base .PyMySQLReplicationTestCase ):
669695 def setUp (self ):
@@ -1485,6 +1511,30 @@ def test_gtid_list_event(self):
14851511 self .assertEqual (event .event_type , 163 )
14861512 self .assertEqual (event .gtid_list [0 ].gtid , "0-1-15" )
14871513
1514+ def test_format_description_event (self ):
1515+ self .stream .close ()
1516+ self .stream = BinLogStreamReader (
1517+ self .database ,
1518+ server_id = 1024 ,
1519+ blocking = False ,
1520+ only_events = [FormatDescriptionEvent ],
1521+ is_mariadb = True ,
1522+ )
1523+
1524+ event = self .stream .fetchone ()
1525+ self .assertIsInstance (event , FormatDescriptionEvent )
1526+ self .assertIsInstance (event .binlog_version , tuple )
1527+ self .assertIsInstance (event .mysql_version_str , str )
1528+ self .assertTrue (event .mysql_version_str .startswith ("10." ))
1529+ self .assertIsInstance (event .common_header_len , int )
1530+ self .assertIsInstance (event .post_header_len , tuple )
1531+ self .assertIsInstance (event .mysql_version , tuple )
1532+ self .assertEqual (len (event .mysql_version ), 3 )
1533+ self .assertEqual (event .dbms , "mariadb" )
1534+ self .assertIsInstance (event .server_version_split , tuple )
1535+ self .assertEqual (len (event .server_version_split ), 3 )
1536+ self .assertIsInstance (event .number_of_event_types , int )
1537+
14881538
14891539class TestRowsQueryLogEvents (base .PyMySQLReplicationTestCase ):
14901540 def setUp (self ):
0 commit comments