def replication_testcase(self, ps_node, master, slave, comment, master_socket, slave_socket):
        if comment == "mtr":
            self.start_pxc('--slave-parallel-workers=5')
            self.start_ps(ps_node, '--slave-parallel-workers=5')
            comment = 'none'
        else:
            self.start_pxc()
            self.start_ps(ps_node)
        if comment == "msr":
            utility_cmd.invoke_replication(BASEDIR, PS1_SOCKET,
                                           slave_socket, 'GTID', "for channel 'master1'")
            utility_cmd.invoke_replication(BASEDIR, PS2_SOCKET,
                                           slave_socket, 'GTID', "for channel 'master2'")
        else:
            utility_cmd.invoke_replication(BASEDIR, master_socket,
                                           slave_socket, 'GTID', comment)

        replication_run.sysbench_run(master_socket, 'sbtest', master)
        replication_run.data_load('ps_dataload_db', master_socket, master)
        rqg_dataload = rqg_datagen.RQGDataGen(BASEDIR, WORKDIR, USER, debug)
        rqg_dataload.pxc_dataload(master_socket)

        if comment == "msr":
            utility_cmd.replication_io_status(BASEDIR, slave_socket, slave, 'master1')
            utility_cmd.replication_sql_status(BASEDIR, slave_socket, slave, 'master1')
            utility_cmd.replication_io_status(BASEDIR, slave_socket, slave, 'master2')
            utility_cmd.replication_sql_status(BASEDIR, slave_socket, slave, 'master2')
        else:
            utility_cmd.replication_io_status(BASEDIR, slave_socket, slave, comment)
            utility_cmd.replication_sql_status(BASEDIR, slave_socket, slave, comment)

        utility_cmd.stop_pxc(WORKDIR, BASEDIR, NODE)
        utility_cmd.stop_ps(WORKDIR, BASEDIR, ps_node)
Exemple #2
0
        if os.path.isfile(parent_dir + '/util/createsql.py'):
            generate_sql = createsql.GenerateSQL('/tmp/dataload.sql', 1000)
            generate_sql.OutFile()
            generate_sql.CreateTable()
            sys.stdout = sys.__stdout__
            create_db = self.basedir + "/bin/mysql --user=root --socket=" + \
                socket + ' -Bse"drop database if exists ' + db + \
                ';create database ' + db + ';" 2>&1'
            result = os.system(create_db)
            utility_cmd.check_testcase(result, "SSL QA sample DB creation")
            data_load_query = self.basedir + "/bin/mysql --user=root --socket=" + \
                socket + ' ' + db + ' -f <  /tmp/dataload.sql >/dev/null 2>&1'
            result = os.system(data_load_query)
            utility_cmd.check_testcase(result, "SSL QA sample data load")


print("\nPXC SSL test")
print("--------------")
ssl_run = SSLCheck(basedir, workdir, user, node1_socket, node)
ssl_run.start_pxc()
ssl_run.sysbench_run(node1_socket, 'test')
ssl_run.data_load('pxc_dataload_db', node1_socket)
rqg_dataload = rqg_datagen.RQGDataGen(basedir, workdir, 'examples', user)
rqg_dataload.initiate_rqg('test', node1_socket)
result = utility_cmd.check_table_count(basedir, 'test', 'sbtest1', node1_socket, node2_socket)
utility_cmd.check_testcase(result, "SSL QA table test.sbtest1 checksum between nodes")
utility_cmd.check_testcase(result, "SSL QA table pxc_dataload_db.t1 checksum between nodes")
checksum = table_checksum.TableChecksum(pt_basedir, basedir, workdir, node, node1_socket)
checksum.sanity_check()
checksum.data_consistency('test,pxc_dataload_db')
Exemple #3
0
                socket + ' -Bse"drop database if exists ' + db + \
                ';create database ' + db + ';" 2>&1'
            if debug == 'YES':
                print(create_db)
            result = os.system(create_db)
            utility_cmd.check_testcase(result, "Sample DB creation")
            data_load_query = self.basedir + "/bin/mysql --user=root --socket=" + \
                socket + ' ' + db + ' -f <  /tmp/dataload.sql >/dev/null 2>&1'
            if debug == 'YES':
                print(data_load_query)
            result = os.system(data_load_query)
            utility_cmd.check_testcase(result, "Sample data load")


print("\nPXC data consistency test between nodes")
print("----------------------------------------")
consistency_run = ConsistencyCheck(BASEDIR, WORKDIR, USER, WORKDIR + '/node1/mysql.sock', PT_BASEDIR, NODE)
rqg_dataload = rqg_datagen.RQGDataGen(BASEDIR, WORKDIR, USER, debug)
consistency_run.start_pxc()
consistency_run.sysbench_run(WORKDIR + '/node1/mysql.sock', 'test')
consistency_run.data_load('pxc_dataload_db', WORKDIR + '/node1/mysql.sock')
rqg_dataload.pxc_dataload(WORKDIR + '/node1/mysql.sock')
version = utility_cmd.version_check(BASEDIR)
time.sleep(5)
result = utility_cmd.check_table_count(BASEDIR, 'test', WORKDIR + '/node1/mysql.sock',
                                       WORKDIR + '/node2/mysql.sock')
utility_cmd.check_testcase(result, "Checksum run for DB: test")
result = utility_cmd.check_table_count(BASEDIR, 'pxc_dataload_db', WORKDIR + '/node1/mysql.sock',
                                       WORKDIR + '/node2/mysql.sock')
utility_cmd.check_testcase(result, "Checksum run for DB: pxc_dataload_db")
Exemple #4
0
        replication_run.sysbench_run(master_socket, 'sbtest', master)
        replication_run.data_load('ps_dataload_db', master_socket, master)
        rqg_dataload.initiate_rqg('rqg_test', master_socket)

        if comment == "msr":
            utility_cmd.replication_io_status(basedir, slave_socket, slave, 'master1')
            utility_cmd.replication_sql_status(basedir, slave_socket, slave, 'master1')
            utility_cmd.replication_io_status(basedir, slave_socket, slave, 'master2')
            utility_cmd.replication_sql_status(basedir, slave_socket, slave, 'master2')
        else:
            utility_cmd.replication_io_status(basedir, slave_socket, slave, comment)
            utility_cmd.replication_sql_status(basedir, slave_socket, slave, comment)


replication_run = SetupReplication(basedir, workdir, node)
rqg_dataload = rqg_datagen.RQGDataGen(basedir, workdir,
                                      'replication', user)
print("\nGTID PXC Node as Master and PS node as Slave")
print("----------------------------------------------")
replication_run.replication_testcase('1', 'PXC', 'PS', 'none', node1_socket, ps1_socket)
print("\nGTID PXC Node as Slave and PS node as Master")
print("----------------------------------------------")
replication_run.replication_testcase('1', 'PS', 'PXC', 'none', ps1_socket, node1_socket)

if int(version) > int("050700"):
    print("\nGTID PXC multi source replication")
    print("-----------------------------------")
    replication_run.replication_testcase('2', 'PS', 'PXC', 'msr', ps1_socket, node1_socket)
    print("\nGTID PXC multi thread replication")
    print("-----------------------------------")
    replication_run.replication_testcase('1', 'PS', 'PXC', 'mtr', ps1_socket, node1_socket)
Exemple #5
0
            utility_cmd.check_testcase(
                result,
                "Starting cluster node" + str(i) + " after upgrade run")
            self.startup_check(i)


query = pxc_lower_base + "/bin/mysqld --version 2>&1 | grep -oe '[0-9]\.[0-9][\.0-9]*' | head -n1"
lower_version = os.popen(query).read().rstrip()
query = pxc_upper_base + "/bin/mysqld --version 2>&1 | grep -oe '[0-9]\.[0-9][\.0-9]*' | head -n1"
upper_version = os.popen(query).read().rstrip()
print("\nPXC Upgrade test : Upgrading from PXC-" + lower_version + " to PXC-" +
      upper_version)
print(
    "------------------------------------------------------------------------------"
)
checksum = table_checksum.TableChecksum(pt_basedir, pxc_upper_base, workdir,
                                        node, socket)
upgrade_qa = PXCUpgrade()
upgrade_qa.startup()
rqg_dataload = rqg_datagen.RQGDataGen(pxc_lower_base, workdir, 'galera', user)
rqg_dataload.initiate_rqg('rqg_galera', socket)
rqg_dataload = rqg_datagen.RQGDataGen(pxc_lower_base, workdir, 'transactions',
                                      user)
rqg_dataload.initiate_rqg('rqg_transactions', socket)
rqg_dataload = rqg_datagen.RQGDataGen(pxc_lower_base, workdir, 'partitioning',
                                      user)
rqg_dataload.initiate_rqg('rqg_partitioning', socket)
upgrade_qa.upgrade()
checksum.sanity_check()
checksum.data_consistency('test,rqg_galera,rqg_transactions,rqg_partitioning')
Exemple #6
0
    def encryption_qa(self):
        # Encryption QA
        # Create data insert procedure
        rqg_dataload = rqg_datagen.RQGDataGen(BASEDIR, WORKDIR, USER)

        encryption_tmp_ts = [
            'innodb_temp_tablespace_encrypt=ON',
            'innodb_temp_tablespace_encrypt=OFF'
        ]
        encryption_bin_log = ['binlog_encryption=ON', 'binlog_encryption=OFF']
        encryption_default_tbl = [
            'default_table_encryption=ON', 'default_table_encryption=OFF'
        ]
        encryption_redo_log = [
            'innodb_redo_log_encrypt=ON', 'innodb_redo_log_encrypt=OFF'
        ]
        encryption_undo_log = [
            'innodb_undo_log_encrypt=ON', 'innodb_undo_log_encrypt=OFF'
        ]
        encryption_sys_ts = [
            'innodb_sys_tablespace_encrypt=ON',
            'innodb_sys_tablespace_encrypt=OFF'
        ]

        for encryption_tmp_ts_value, encryption_bin_log_value, encryption_default_tbl_value, \
            encryption_redo_log_value, encryption_undo_log_value, encryption_sys_ts_value in \
            itertools.product(encryption_tmp_ts, encryption_bin_log, encryption_default_tbl,
                              encryption_redo_log, encryption_undo_log, encryption_sys_ts):
            encryption_combination = encryption_tmp_ts_value + " " + encryption_bin_log_value + \
                                     " " + encryption_default_tbl_value + " " + encryption_redo_log_value + \
                                     " " + encryption_undo_log_value + " " + encryption_sys_ts_value
            utility_cmd.check_testcase(
                0, "Encryption options : " + encryption_combination)
            # Start PXC cluster for encryption test
            dbconnection_check = db_connection.DbConnection(
                USER, WORKDIR + '/node1/mysql.sock')
            server_startup = pxc_startup.StartCluster(parent_dir,
                                                      WORKDIR, BASEDIR,
                                                      int(NODE), debug)
            result = server_startup.sanity_check()
            utility_cmd.check_testcase(result, "Startup sanity check")
            result = server_startup.create_config('encryption')
            utility_cmd.check_testcase(result, "Configuration file creation")
            cnf_name = open(WORKDIR + '/conf/random_encryption.cnf', 'w+')
            cnf_name.write('[mysqld]\n')
            cnf_name.write("early-plugin-load=keyring_file.so" + '\n')
            cnf_name.write("keyring_file_data=keyring" + '\n')
            cnf_name.write(encryption_tmp_ts_value + '\n')
            cnf_name.write(encryption_bin_log_value + '\n')
            cnf_name.write(encryption_default_tbl_value + '\n')
            cnf_name.write(encryption_redo_log_value + '\n')
            cnf_name.write(encryption_undo_log_value + '\n')
            cnf_name.write(encryption_sys_ts_value + '\n')
            cnf_name.close()
            for i in range(1, int(NODE) + 1):
                os.system(
                    "sed -i 's#pxc_encrypt_cluster_traffic = OFF#pxc_encrypt_cluster_traffic = ON#g' "
                    + WORKDIR + '/conf/node' + str(i) + '.cnf')
                n_name = open(WORKDIR + '/conf/node' + str(i) + '.cnf', 'a+')
                n_name.write('!include ' + WORKDIR +
                             '/conf/random_encryption.cnf\n')
                n_name.close()

            if encryption_sys_ts_value == "innodb_sys_tablespace_encrypt=ON":
                init_extra = "--innodb_sys_tablespace_encrypt=ON " \
                             "--early-plugin-load=keyring_file.so " \
                             " --keyring_file_data=keyring"
                result = server_startup.initialize_cluster(init_extra)

            else:
                result = server_startup.initialize_cluster()
            utility_cmd.check_testcase(result, "Initializing cluster")
            result = server_startup.start_cluster()
            utility_cmd.check_testcase(result, "Cluster startup")
            result = dbconnection_check.connection_check()
            utility_cmd.check_testcase(result, "Database connection")
            self.sysbench_run(WORKDIR + '/node1/mysql.sock', 'test')
            rqg_dataload.pxc_dataload(WORKDIR + '/node1/mysql.sock')
            # Add prepared statement SQLs
            create_ps = BASEDIR + "/bin/mysql --user=root --socket=" + \
                WORKDIR + '/node1/mysql.sock' + ' < ' + parent_dir + \
                '/util/prepared_statements.sql > /dev/null 2>&1'
            if debug == 'YES':
                print(create_ps)
            result = os.system(create_ps)
            utility_cmd.check_testcase(result, "Creating prepared statements")
            # Random data load
            if os.path.isfile(parent_dir + '/util/createsql.py'):
                generate_sql = createsql.GenerateSQL('/tmp/dataload.sql', 1000)
                generate_sql.OutFile()
                generate_sql.CreateTable()
                sys.stdout = sys.__stdout__
                data_load_query = BASEDIR + "/bin/mysql --user=root --socket=" + \
                    WORKDIR + '/node1/mysql.sock' + ' test -f <  /tmp/dataload.sql >/dev/null 2>&1'
                if debug == 'YES':
                    print(data_load_query)
                result = os.system(data_load_query)
                utility_cmd.check_testcase(result, "Sample data load")
            utility_cmd.stop_pxc(WORKDIR, BASEDIR, NODE)
Exemple #7
0
        # Random dataload for consistency test
        if os.path.isfile(parent_dir + '/util/createsql.py'):
            generate_sql = createsql.GenerateSQL('/tmp/dataload.sql', 1000)
            generate_sql.OutFile()
            generate_sql.CreateTable()
            sys.stdout = sys.__stdout__
            create_db = self.basedir + "/bin/mysql --user=root --socket=" + \
                socket + ' -Bse"drop database if exists ' + db + \
                ';create database ' + db + ';" 2>&1'
            result = os.system(create_db)
            utility_cmd.check_testcase(result, "Sample DB creation")
            data_load_query = self.basedir + "/bin/mysql --user=root --socket=" + \
                socket + ' ' + db + ' -f <  /tmp/dataload.sql >/dev/null 2>&1'
            result = os.system(data_load_query)
            utility_cmd.check_testcase(result, "Sample data load")


print("\nPXC data consistency test between nodes")
print("----------------------------------------")
consistency_run = ConsistencyCheck(basedir, workdir, user, socket, pt_basedir,
                                   node)
rqg_dataload = rqg_datagen.RQGDataGen(basedir, workdir, 'galera', user)
consistency_run.start_pxc()
consistency_run.sysbench_run(socket, 'test')
consistency_run.data_load('pxc_dataload_db', socket)
rqg_dataload.initiate_rqg('rqg_test', socket)
checksum = table_checksum.TableChecksum(pt_basedir, basedir, workdir, node,
                                        socket)
checksum.sanity_check()
checksum.data_consistency('test,pxc_dataload_db,rqg_test')
Exemple #8
0
print(
    '------------------------------------------------------------------------------------'
)
print("\nPXC Upgrade test : Upgrading from PXC-" + lower_version + " to PXC-" +
      upper_version)
print(
    '------------------------------------------------------------------------------------'
)
print(datetime.now().strftime("%H:%M:%S ") +
      " Rolling upgrade without active workload")
print(
    '------------------------------------------------------------------------------------'
)
upgrade_qa = PXCUpgrade()
upgrade_qa.startup()
rqg_dataload = rqg_datagen.RQGDataGen(PXC_LOWER_BASE, WORKDIR, USER, debug)
rqg_dataload.pxc_dataload(WORKDIR + '/node1/mysql.sock')
upgrade_qa.rolling_upgrade('none')
print(
    '------------------------------------------------------------------------------------'
)
print(datetime.now().strftime("%H:%M:%S ") +
      " Rolling upgrade with active readonly workload")
print(
    '------------------------------------------------------------------------------------'
)
upgrade_qa.startup()
rqg_dataload = rqg_datagen.RQGDataGen(PXC_LOWER_BASE, WORKDIR, USER, debug)
rqg_dataload.pxc_dataload(WORKDIR + '/node1/mysql.sock')
upgrade_qa.rolling_upgrade('readonly')
print(