WL#4771: Online Backup: Test cross-platform compatibility
Affects: Server-5.4 — Status: Complete — Priority: Medium
Create tests that verify cross-platform compatibility of backup and restore. Backup image files created on one platform shall be restorable on other platforms. Ideally it should be tested between all platforms. But at least the most important platforms Linux <-> Windows shall be tested, as well as platforms of different endianess, e.g. x86 <-> PowerPC, and finally different word sizes, e.g. x86 <-> x86_64. These tests should also be done with streams instead of files. E.g. named pipes connected via netcat or ssh tunnel. NOTE ==== 1) This could be implemented as a Nuts perl library that can do SSH to another machine. 2) An important aspect is backups made on a platform with a file system that has different case sensitivity than on the platform restore is performed. The tests should include backup of database/table/view etc names in upper/camel-case, followed by restore on a case insensitive server. BUG#43363 added some testing for this name case problem (backup_namecase.test), but more is needed. Once this WL is complete, it should be considered whether or not backup_namecase can be removed. Depends on BUG#9051 (Stored Functions: Database name in fully qualified name is case sensitive). Depends on BUG#46096 (SHOW CREATE TRIGGER does not respect lower_case_table_names).
Test that backup image files created on a set of relevant platforms can be restored on different platforms. The backup image files shall contain all kinds of objects, which are supported by online BACKUP. The contained tables shall have all possible data types and some rows with extreme values. The files shall be created on these platforms: - Linux/x86 - Linux/x86_64 - Windows/32 - Windows/64 - Solaris/Sparc After every restore, the restored objects shall be tested. We will not test inter-machine streams like sockets or pipes. The streams transport byte-wise the same contents as the files. So we test cross-platform compatibility of the images, and we test streams in form of named pipes in other tests. Combining these tests is not required. At the moment, Nuts is not able to support such inter-machine testing. So we use pre-created backup image files.
Create a test case backup_x_pfm_compat, which creates a test database and backs it up into a file mysql-test/backup_x_pfm_compat.bak, where it is not deleted by mysql-test-run. The test database shall have all kinds of objects, which are supported by online BACKUP. This can be inspired by backup_client.test. The test database shall have a table with all possible data types and some rows with extreme values. This can be inspired by mysqlbinlog_row_engine.inc. The test case shall be pushed and thus the backup image files are implicitly created on all pushbuild platforms. The backup image files from the platforms as specified in the high level specification shall be copied into the repository as mysql-test/suite/backup/std_data/backup_x_pfm_compat-<platform>.bak. Create another test case backup_x_pfm_compat_restore, which restores each of the backup image files, one after the other. After every restore, test the restored objects. Since this task requires two steps, two rounds of reviews are required.
Copyright (c) 2000, 2017, Oracle Corporation and/or its affiliates. All rights reserved.