diff --git a/test_runner/performance/test_startup.py b/test_runner/performance/test_startup.py new file mode 100644 index 0000000000..e30912ce32 --- /dev/null +++ b/test_runner/performance/test_startup.py @@ -0,0 +1,48 @@ +from contextlib import closing + +from fixtures.zenith_fixtures import ZenithEnvBuilder +from fixtures.benchmark_fixture import ZenithBenchmarker + + +def test_startup(zenith_env_builder: ZenithEnvBuilder, zenbenchmark: ZenithBenchmarker): + zenith_env_builder.num_safekeepers = 3 + env = zenith_env_builder.init_start() + + # Start + env.zenith_cli.create_branch('test_startup') + with zenbenchmark.record_duration("startup_time"): + pg = env.postgres.create_start('test_startup') + pg.safe_psql("select 1;") + + # Restart + pg.stop_and_destroy() + with zenbenchmark.record_duration("restart_time"): + pg.create_start('test_startup') + pg.safe_psql("select 1;") + + # Fill up + num_rows = 1000000 # 30 MB + num_tables = 100 + with closing(pg.connect()) as conn: + with conn.cursor() as cur: + for i in range(num_tables): + cur.execute(f'create table t_{i} (i integer);') + cur.execute(f'insert into t_{i} values (generate_series(1,{num_rows}));') + + # Read + with zenbenchmark.record_duration("read_time"): + pg.safe_psql("select * from t_0;") + + # Read again + with zenbenchmark.record_duration("second_read_time"): + pg.safe_psql("select * from t_0;") + + # Restart + pg.stop_and_destroy() + with zenbenchmark.record_duration("restart_with_data"): + pg.create_start('test_startup') + pg.safe_psql("select 1;") + + # Read + with zenbenchmark.record_duration("read_after_restart"): + pg.safe_psql("select * from t_0;")