############################################################################## # WL#4677 Unique Server Ids for Replication Topology (UUIDs) # # # Each server has a UUID generated by server itself. It is stored in auto.cnf # in @@DATADIR directory. # # @@SERVER_UUID is a readonly system variable, it is initialized as the # server's UUID when starting. Users can get the server's UUID from # @@SERVER_UUID. # # This test case tests whether the server's UUID can be generated, stored, # initialized correctly. ############################################################################## CALL mtr.add_suppression("Master's UUID has changed, its old UUID is"); --let $uuid_file= auto.cnf --let $original_server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1) --let $datadir= query_get_value(SELECT @@DATADIR, @@DATADIR, 1) --copy_file $datadir/$uuid_file $datadir/original_$uuid_file --echo --echo # Case 1: --echo # @@SERVER_UUID is readonly. --echo ----------------------------------------------------------------------------- --error 1238 SET GLOBAL SERVER_UUID= UUID(); --echo --echo # Case 2: --echo # If the file does not exists, mysqld generates it automatically. --echo ----------------------------------------------------------------------------- --remove_file $datadir/$uuid_file --source include/restart_mysqld.inc --let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1) if (`SELECT '$server_uuid' = '' OR '$server_uuid' = 'NULL'`) { --die server's UUID is null } --echo --echo # Case 3: --echo # If there is no UUID in the file, mysqld generates it automatically. --echo ----------------------------------------------------------------------------- --remove_file $datadir/$uuid_file # There is a blank line in the file --write_file $datadir/$uuid_file [auto] EOF --source include/restart_mysqld.inc --let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1) if (`SELECT '$server_uuid' = '' OR '$server_uuid' = 'NULL'`) { --die server's UUID is null } --echo --echo # Case 4: --echo # If there is a UUID in the file, it will be loaded into SERVER_UUID. --echo ----------------------------------------------------------------------------- --remove_file $datadir/$uuid_file --move_file $datadir/original_$uuid_file $datadir/$uuid_file --source include/restart_mysqld.inc --let $server_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1) if ($server_uuid != $original_server_uuid) { --echo $server_uuid != $original_server_uuid --die wrong server_uuid }