Ejemplo n.º 1
0
def dble_mng_connect_test(context, ip):
    node = get_node("dble-1")
    user = node.manager_user
    passwd = str(node.manager_password)
    port = node.manager_port

    conn = None
    isSuccess = False
    max_try = 5
    while conn is None:
        try:
            conn = DBUtil(ip, user, passwd, '', port, context)
        except MySQLdb.Error as e:
            context.logger.info("connect to {0} err:{1}".format(ip, e))
            conn = None
        finally:
            max_try -= 1
            if max_try < 0 and conn is None: break
            if conn is not None:
                isSuccess = True
                conn.close()
                break

        sleep(5)

    assert_that(
        isSuccess, "connect test to {0}:9066 failed after {1} seconds".format(
            ip, 5 * max_try))
    context.logger.info("create connection to dble 9066 success")
Ejemplo n.º 2
0
def test_schema_permission(context):
    dble_conn = get_dble_conn(context)
    node = get_node("dble-1")
    for row in context.table:
        # prepare table
        test_conn = DBUtil(node.ip, row['user'], row['password'],
                           row['schema'], node.client_port, context)
        sql = "drop table if exists {0}".format(row['table'])
        test_conn.query(sql)
        sql = "create table {0}(id int, data varchar(10))".format(row['table'])
        test_conn.query(sql)
        sql = "insert into {0} values (1,'aaa'),(2,'bbb'),(3,'ccc'),(4,'ddd')".format(
            row['table'])
        dble_conn.query(sql)

        # prepare sql
        value = row['dml']
        LOGGER.info("dml:{0}".format(value))
        del_sql = "delete from {0} where id = 1".format(row['table'])
        sel_sql = "select * from {0}".format(row['table'])
        upd_sql = "update {0} set data='AAA' where id = 1".format(row['table'])
        ins_sql = "insert into {0} values (5, 'eee')".format(row['table'])
        lack_priv_msg = "The statement DML privilege check is not passed"
        sqls_in_priv_order = [ins_sql, upd_sql, sel_sql, del_sql]

        # do test
        for priv, sql in zip(value, sqls_in_priv_order):
            res, errs = test_conn.query(sql)
            if priv == "1":
                assert_that(errs, is_(None))
            else:
                assert_that(errs[1], contains_string(lack_priv_msg))

        test_conn.close()
    dble_conn.close()
Ejemplo n.º 3
0
def step_impl(context, mysqlID, host):
    id = getattr(context, mysqlID)
    node = get_node(host)
    ip = node._ip
    user = node.mysql_user
    passwd = node.mysql_password
    port = node.mysql_port
    db = ''
    sql = "kill {0}".format(id)
    conn = DBUtil(ip, user, passwd, db, port, context)
    res, err = conn.query(sql)
    assert err is None, "kill connection is failed: {0}".format(err)
Ejemplo n.º 4
0
def step_impl(context, cmd, result, host):
    node = get_node(host)
    ip = node._ip
    port = node._mysql_port
    user = "******"
    passwd = "111111"
    db = ""
    conn = DBUtil(ip, user, passwd, db, port, context)
    if hasattr(context, result):
        for r in getattr(context, result):
            adminsql = "{0} {1}".format(cmd, r[3])
            conn.query(adminsql)
Ejemplo n.º 5
0
def test_readonly_schema(context):
    text = json.loads(context.text)
    dble_conn = get_dble_conn(context)
    node = get_node("dble-1")
    for item in text:
        test_conn = DBUtil(node.ip, item['user'], item['password'],
                           item['schema'], node.client_port, context)
        sql = "drop table if exists {0}".format(item['table'])
        dble_conn.query(sql)
        sql = "create table {0}(id int, data varchar(10))".format(
            item['table'])
        dble_conn.query(sql)
        sql = "insert into {0} values (1,'aaa'),(2,'bbb'),(3,'ccc'),(4,'ddd')".format(
            item['table'])
        dble_conn.query(sql)
        permission = []
        value = int(item['dml'])
        LOGGER.info("dml: {0}".format(value / 1))
        for i in range(4):
            if int(value % 10) == 1:
                if i == 0:
                    permission.append("DELETE")
                if i == 1:
                    permission.append("SELECT")
                if i == 2:
                    permission.append("UPDATE")
                if i == 3:
                    permission.append("INSERT")
            value = value / 10
        LOGGER.info("permission: {0}".format(permission))
        del_sql = "delete from {0} where id = 1".format(item['table'])
        sel_sql = "select * from {0}".format(item['table'])
        upd_sql = "update {0} set data='AAA' where id = 1".format(
            item['table'])
        ins_sql = "insert into {0} values (5, 'eee')".format(item['table'])
        if "DELETE" in permission:
            res, errs = test_conn.query(del_sql)
            assert_that(errs[1], contains_string('User READ ONLY'))
        if "SELECT" in permission:
            res, errs = test_conn.query(sel_sql)
            assert_that(errs, is_(None))
        else:
            res, errs = test_conn.query(sel_sql)
            assert_that(
                errs[1],
                contains_string(
                    'The statement DML privilege check is not passed'))
        if "UPDATE" in permission:
            res, errs = test_conn.query(upd_sql)
            assert_that(errs[1], contains_string('User READ ONLY'))
        if "INSERT" in permission:
            res, errs = test_conn.query(ins_sql)
            assert_that(errs[1], contains_string('User READ ONLY'))
        test_conn.close()

    dble_conn.close()
Ejemplo n.º 6
0
def get_compare_conn(context, default_db="schema1"):
    node = get_node("mysql")
    m_ip = node.ip
    m_port = node.mysql_port
    m_user = node.mysql_user
    m_passwd = node.mysql_password

    conn_mysql = DBUtil(m_ip, m_user, m_passwd, default_db, m_port, context)
    conn_dble = get_dble_conn(context, default_db)

    return conn_mysql, conn_dble
Ejemplo n.º 7
0
def get_admin_conn(context, user="", passwd=""):
    node = get_node("dble-1")
    if len(user.strip()) == 0:
        user = node.manager_user
    if len(passwd.strip()) == 0:
        passwd = str(node.manager_password)

    conn = None
    try:
        conn = DBUtil(node.ip, user, passwd, "", node.manager_port, context)
    except MySQLdb.Error as e:
        assert False, "create manager conn meets error:{0}".format(e.args)
    return conn
Ejemplo n.º 8
0
def get_dble_connect(context, host_name, default_db="schema1"):
    node = get_node(host_name)
    conn = DBUtil(node.ip, node.client_user, node.client_password, default_db,
                  node.client_port, context)
    return conn
Ejemplo n.º 9
0
def get_dble_conn(context, default_db="schema1", node=None):
    if node is None:
        node = get_node("dble-1")
    conn = DBUtil(node.ip, node.client_user, node.client_password, default_db,
                  node.client_port, context)
    return conn