Minor fixes in test_ttl_move.

This commit is contained in:
Vladimir Chebotarev 2020-04-09 07:53:57 +03:00
parent a9a7da8e68
commit c0947ab609
2 changed files with 26 additions and 14 deletions

View File

@ -933,7 +933,11 @@ def test_concurrent_alter_modify(start_cluster, name, engine):
def alter_modify(num):
for i in range(num):
column_type = random.choice(["UInt64", "String"])
node1.query("ALTER TABLE {} MODIFY COLUMN number {}".format(name, column_type))
try:
node1.query("ALTER TABLE {} MODIFY COLUMN number {}".format(name, column_type))
except:
if "Replicated" not in engine:
raise
insert(100)

View File

@ -147,7 +147,10 @@ def test_inserts_to_disk_work(started_cluster, name, engine, positive):
assert node1.query("SELECT count() FROM {name}".format(name=name)).strip() == "10"
finally:
node1.query("DROP TABLE IF EXISTS {}".format(name))
try:
node1.query("DROP TABLE IF EXISTS {}".format(name))
except:
pass
@pytest.mark.parametrize("name,engine,positive", [
@ -168,7 +171,7 @@ def test_moves_to_disk_work(started_cluster, name, engine, positive):
SETTINGS storage_policy='small_jbod_with_external'
""".format(name=name, engine=engine))
wait_expire_1 = 6
wait_expire_1 = 12
wait_expire_2 = 4
time_1 = time.time() + wait_expire_1
time_2 = time.time() + wait_expire_1 + wait_expire_2
@ -389,7 +392,7 @@ def test_merges_to_disk_work(started_cluster, name, engine, positive):
node1.query("SYSTEM STOP MERGES {}".format(name))
node1.query("SYSTEM STOP MOVES {}".format(name))
wait_expire_1 = 10
wait_expire_1 = 16
wait_expire_2 = 4
time_1 = time.time() + wait_expire_1
time_2 = time.time() + wait_expire_1 + wait_expire_2
@ -509,7 +512,7 @@ def test_moves_after_merges_work(started_cluster, name, engine, positive):
SETTINGS storage_policy='small_jbod_with_external'
""".format(name=name, engine=engine))
wait_expire_1 = 10
wait_expire_1 = 16
wait_expire_2 = 4
time_1 = time.time() + wait_expire_1
time_2 = time.time() + wait_expire_1 + wait_expire_2
@ -684,7 +687,7 @@ limitations under the License."""
"""
now = time.time()
try:
sleeps = { delay : start_thread(target=time.sleep, args=(delay,)) for delay in [12, 22] }
sleeps = { delay : start_thread(target=time.sleep, args=(delay,)) for delay in [16, 26] }
node1.query("""
CREATE TABLE {name} (
@ -694,16 +697,16 @@ limitations under the License."""
) ENGINE = {engine}
ORDER BY tuple()
PARTITION BY p1
TTL d1 + INTERVAL 30 SECOND TO DISK 'jbod2',
d1 + INTERVAL 60 SECOND TO VOLUME 'external'
TTL d1 + INTERVAL 34 SECOND TO DISK 'jbod2',
d1 + INTERVAL 64 SECOND TO VOLUME 'external'
SETTINGS storage_policy='jbods_with_external', merge_with_ttl_timeout=0
""".format(name=name, engine=engine))
node1.query("""
ALTER TABLE {name} MODIFY
TTL d1 + INTERVAL 0 SECOND TO DISK 'jbod2',
d1 + INTERVAL 10 SECOND TO VOLUME 'external',
d1 + INTERVAL 20 SECOND DELETE
d1 + INTERVAL 14 SECOND TO VOLUME 'external',
d1 + INTERVAL 24 SECOND DELETE
""".format(name=name))
for p in range(3):
@ -721,14 +724,14 @@ limitations under the License."""
assert node1.query("SELECT count() FROM {name}".format(name=name)).splitlines() == ["6"]
sleeps[12].join()
sleeps[16].join()
used_disks = get_used_disks_for_table(node1, name)
assert set(used_disks) == {"external"} if positive else {"jbod1", "jbod2"}
assert node1.query("SELECT count() FROM {name}".format(name=name)).splitlines() == ["6"]
sleeps[22].join()
sleeps[26].join()
node1.query("OPTIMIZE TABLE {name} FINAL".format(name=name))
@ -788,7 +791,7 @@ def test_concurrent_alter_with_ttl_move(started_cluster, name, engine):
try:
node1.query("ALTER TABLE {} MOVE {mt} {mp} TO {md} {mv}".format(
name, mt=move_type, mp=move_part, md=move_disk, mv=move_volume))
except QueryRuntimeException as ex:
except QueryRuntimeException:
pass
for i in range(num):
@ -805,7 +808,10 @@ def test_concurrent_alter_with_ttl_move(started_cluster, name, engine):
what = random.choice(["TO VOLUME 'main'", "TO VOLUME 'external'", "TO DISK 'jbod1'", "TO DISK 'jbod2'", "TO DISK 'external'"])
when = "now()+{}".format(random.randint(-1, 5))
ttls.append("{} {}".format(when, what))
node1.query("ALTER TABLE {} MODIFY TTL {}".format(name, ", ".join(ttls)))
try:
node1.query("ALTER TABLE {} MODIFY TTL {}".format(name, ", ".join(ttls)))
except QueryRuntimeException:
pass
def optimize_table(num):
for i in range(num):
@ -865,6 +871,8 @@ def test_double_move_while_select(started_cluster, name, positive):
node1.query("INSERT INTO {name} VALUES (3, '{string}')".format(name=name, string=get_random_string(9 * 1024 * 1024)))
node1.query("INSERT INTO {name} VALUES (4, '{string}')".format(name=name, string=get_random_string(9 * 1024 * 1024)))
time.sleep(1)
# If SELECT locked old part on external, move shall fail.
assert node1.query("SELECT disk_name FROM system.parts WHERE table = '{name}' AND active = 1 AND name = '{part}'"
.format(name=name, part=parts[0])).splitlines() == ["jbod1" if positive else "external"]