Skip to content

Commit 899ad05

Browse files
committed
Added user provided unit test
1 parent 6b81394 commit 899ad05

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

test_mysql_ch_replicator.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2747,3 +2747,60 @@ def test_truncate_operation_bug_issue_155():
27472747
# Clean up
27482748
db_replicator_runner.stop()
27492749
binlog_replicator_runner.stop()
2750+
2751+
def test_json2():
2752+
cfg = config.Settings()
2753+
cfg.load(CONFIG_FILE)
2754+
2755+
mysql = mysql_api.MySQLApi(
2756+
database=None,
2757+
mysql_settings=cfg.mysql,
2758+
)
2759+
2760+
ch = clickhouse_api.ClickhouseApi(
2761+
database=TEST_DB_NAME,
2762+
clickhouse_settings=cfg.clickhouse,
2763+
)
2764+
2765+
prepare_env(cfg, mysql, ch)
2766+
2767+
mysql.execute("SET sql_mode = 'ALLOW_INVALID_DATES';")
2768+
2769+
mysql.execute(f'''
2770+
CREATE TABLE `{TEST_TABLE_NAME}` (
2771+
`id` int unsigned NOT NULL AUTO_INCREMENT,
2772+
name varchar(255),
2773+
data json,
2774+
PRIMARY KEY (id)
2775+
);
2776+
''')
2777+
2778+
mysql.execute(
2779+
f"INSERT INTO `{TEST_TABLE_NAME}` (name, data) VALUES " +
2780+
"""('Ivan', '{"а": "б", "в": [1,2,3]}');""",
2781+
commit=True,
2782+
)
2783+
2784+
binlog_replicator_runner = BinlogReplicatorRunner()
2785+
binlog_replicator_runner.run()
2786+
db_replicator_runner = DbReplicatorRunner(TEST_DB_NAME)
2787+
db_replicator_runner.run()
2788+
2789+
assert_wait(lambda: TEST_DB_NAME in ch.get_databases())
2790+
2791+
ch.execute_command(f'USE `{TEST_DB_NAME}`')
2792+
2793+
assert_wait(lambda: TEST_TABLE_NAME in ch.get_tables())
2794+
assert_wait(lambda: len(ch.select(TEST_TABLE_NAME)) == 1)
2795+
2796+
mysql.execute(
2797+
f"INSERT INTO `{TEST_TABLE_NAME}` (name, data) VALUES " +
2798+
"""('Peter', '{"в": "б", "а": [3,2,1]}');""",
2799+
commit=True,
2800+
)
2801+
assert_wait(lambda: len(ch.select(TEST_TABLE_NAME)) == 2)
2802+
2803+
assert json.loads(ch.select(TEST_TABLE_NAME, "name='Ivan'")[0]['data'])['в'] == [1, 2, 3]
2804+
assert json.loads(ch.select(TEST_TABLE_NAME, "name='Peter'")[0]['data'])['в'] == 'б'
2805+
db_replicator_runner.stop()
2806+
binlog_replicator_runner.stop()

0 commit comments

Comments
 (0)