mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 07:31:57 +00:00
Better test_odbc_interaction
This commit is contained in:
parent
df27e2754b
commit
a9108e42c3
@ -98,21 +98,21 @@ def started_cluster():
|
||||
cluster.start()
|
||||
sqlite_db = node1.odbc_drivers["SQLite3"]["Database"]
|
||||
|
||||
print("sqlite data received")
|
||||
logging.debug(f"sqlite data received: {sqlite_db}")
|
||||
node1.exec_in_container(
|
||||
["bash", "-c", "echo 'CREATE TABLE t1(x INTEGER PRIMARY KEY ASC, y, z);' | sqlite3 {}".format(sqlite_db)],
|
||||
["sqlite3", sqlite_db, "CREATE TABLE t1(x INTEGER PRIMARY KEY ASC, y, z);"],
|
||||
privileged=True, user='root')
|
||||
node1.exec_in_container(
|
||||
["bash", "-c", "echo 'CREATE TABLE t2(X INTEGER PRIMARY KEY ASC, Y, Z);' | sqlite3 {}".format(sqlite_db)],
|
||||
["sqlite3", sqlite_db, "CREATE TABLE t2(X INTEGER PRIMARY KEY ASC, Y, Z);"],
|
||||
privileged=True, user='root')
|
||||
node1.exec_in_container(
|
||||
["bash", "-c", "echo 'CREATE TABLE t3(X INTEGER PRIMARY KEY ASC, Y, Z);' | sqlite3 {}".format(sqlite_db)],
|
||||
["sqlite3", sqlite_db, "CREATE TABLE t3(X INTEGER PRIMARY KEY ASC, Y, Z);"],
|
||||
privileged=True, user='root')
|
||||
node1.exec_in_container(
|
||||
["bash", "-c", "echo 'CREATE TABLE t4(X INTEGER PRIMARY KEY ASC, Y, Z);' | sqlite3 {}".format(sqlite_db)],
|
||||
["sqlite3", sqlite_db, "CREATE TABLE t4(X INTEGER PRIMARY KEY ASC, Y, Z);"],
|
||||
privileged=True, user='root')
|
||||
node1.exec_in_container(
|
||||
["bash", "-c", "echo 'CREATE TABLE tf1(x INTEGER PRIMARY KEY ASC, y, z);' | sqlite3 {}".format(sqlite_db)],
|
||||
["sqlite3", sqlite_db, "CREATE TABLE tf1(x INTEGER PRIMARY KEY ASC, y, z);"],
|
||||
privileged=True, user='root')
|
||||
print("sqlite tables created")
|
||||
mysql_conn = get_mysql_conn()
|
||||
@ -211,7 +211,7 @@ def test_sqlite_simple_select_function_works(started_cluster):
|
||||
sqlite_setup = node1.odbc_drivers["SQLite3"]
|
||||
sqlite_db = sqlite_setup["Database"]
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO t1 values(1, 2, 3);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "INSERT INTO t1 values(1, 2, 3);"],
|
||||
privileged=True, user='root')
|
||||
assert node1.query("select * from odbc('DSN={}', '{}')".format(sqlite_setup["DSN"], 't1')) == "1\t2\t3\n"
|
||||
|
||||
@ -229,7 +229,7 @@ def test_sqlite_table_function(started_cluster):
|
||||
sqlite_setup = node1.odbc_drivers["SQLite3"]
|
||||
sqlite_db = sqlite_setup["Database"]
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO tf1 values(1, 2, 3);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "INSERT INTO tf1 values(1, 2, 3);"],
|
||||
privileged=True, user='root')
|
||||
node1.query("create table odbc_tf as odbc('DSN={}', '{}')".format(sqlite_setup["DSN"], 'tf1'))
|
||||
assert node1.query("select * from odbc_tf") == "1\t2\t3\n"
|
||||
@ -247,7 +247,7 @@ def test_sqlite_simple_select_storage_works(started_cluster):
|
||||
sqlite_setup = node1.odbc_drivers["SQLite3"]
|
||||
sqlite_db = sqlite_setup["Database"]
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO t4 values(1, 2, 3);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "INSERT INTO t4 values(1, 2, 3);"],
|
||||
privileged=True, user='root')
|
||||
node1.query("create table SqliteODBC (x Int32, y String, z String) engine = ODBC('DSN={}', '', 't4')".format(
|
||||
sqlite_setup["DSN"]))
|
||||
@ -265,7 +265,7 @@ def test_sqlite_odbc_hashed_dictionary(started_cluster):
|
||||
skip_test_msan(node1)
|
||||
|
||||
sqlite_db = node1.odbc_drivers["SQLite3"]["Database"]
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO t2 values(1, 2, 3);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "INSERT INTO t2 values(1, 2, 3);"],
|
||||
privileged=True, user='root')
|
||||
|
||||
node1.query("SYSTEM RELOAD DICTIONARY sqlite3_odbc_hashed")
|
||||
@ -283,7 +283,7 @@ def test_sqlite_odbc_hashed_dictionary(started_cluster):
|
||||
print("Waiting dictionary to update for the second time")
|
||||
time.sleep(0.1)
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO t2 values(200, 2, 7);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "INSERT INTO t2 values(200, 2, 7);"],
|
||||
privileged=True, user='root')
|
||||
|
||||
# No reload because of invalidate query
|
||||
@ -300,7 +300,7 @@ def test_sqlite_odbc_hashed_dictionary(started_cluster):
|
||||
assert_eq_with_retry(node1, "select dictGetUInt8('sqlite3_odbc_hashed', 'Z', toUInt64(1))", "3")
|
||||
assert_eq_with_retry(node1, "select dictGetUInt8('sqlite3_odbc_hashed', 'Z', toUInt64(200))", "1") # still default
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'REPLACE INTO t2 values(1, 2, 5);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "REPLACE INTO t2 values(1, 2, 5);"],
|
||||
privileged=True, user='root')
|
||||
|
||||
assert_eq_with_retry(node1, "select dictGetUInt8('sqlite3_odbc_hashed', 'Z', toUInt64(1))", "5")
|
||||
@ -311,21 +311,21 @@ def test_sqlite_odbc_cached_dictionary(started_cluster):
|
||||
skip_test_msan(node1)
|
||||
|
||||
sqlite_db = node1.odbc_drivers["SQLite3"]["Database"]
|
||||
node1.exec_in_container(["bash", "-c", "echo 'INSERT INTO t3 values(1, 2, 3);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["]sqlite3", sqlite_db, "INSERT INTO t3 values(1, 2, 3);"],
|
||||
privileged=True, user='root')
|
||||
|
||||
assert node1.query("select dictGetUInt8('sqlite3_odbc_cached', 'Z', toUInt64(1))") == "3\n"
|
||||
|
||||
# Allow insert
|
||||
node1.exec_in_container(["bash", "-c", "chmod a+rw /tmp"], privileged=True, user='root')
|
||||
node1.exec_in_container(["bash", "-c", "chmod a+rw {}".format(sqlite_db)], privileged=True, user='root')
|
||||
node1.exec_in_container(["chmod a+rw /tmp"], privileged=True, user='root')
|
||||
node1.exec_in_container(["chmod a+rw {}".format(sqlite_db)], privileged=True, user='root')
|
||||
|
||||
node1.query("insert into table function odbc('DSN={};ReadOnly=0', '', 't3') values (200, 2, 7)".format(
|
||||
node1.odbc_drivers["SQLite3"]["DSN"]))
|
||||
|
||||
assert node1.query("select dictGetUInt8('sqlite3_odbc_cached', 'Z', toUInt64(200))") == "7\n" # new value
|
||||
|
||||
node1.exec_in_container(["bash", "-c", "echo 'REPLACE INTO t3 values(1, 2, 12);' | sqlite3 {}".format(sqlite_db)],
|
||||
node1.exec_in_container(["sqlite3", sqlite_db, "REPLACE INTO t3 values(1, 2, 12);"],
|
||||
privileged=True, user='root')
|
||||
|
||||
assert_eq_with_retry(node1, "select dictGetUInt8('sqlite3_odbc_cached', 'Z', toUInt64(1))", "12")
|
||||
@ -400,7 +400,7 @@ def test_bridge_dies_with_parent(started_cluster):
|
||||
|
||||
while clickhouse_pid is not None:
|
||||
try:
|
||||
node1.exec_in_container(["bash", "-c", "kill {}".format(clickhouse_pid)], privileged=True, user='root')
|
||||
node1.exec_in_container(["kill", str(clickhouse_pid)], privileged=True, user='root')
|
||||
except:
|
||||
pass
|
||||
clickhouse_pid = node1.get_process_pid("clickhouse server")
|
||||
|
Loading…
Reference in New Issue
Block a user