CLI entrypoint.
Parses arguments and coordinates Docker, schema setup, and data loading.
135 """!CLI entrypoint. Parses arguments and coordinates Docker, schema setup, and data loading.
136 """
137 parser = argparse.ArgumentParser(description="Setup and load benchmark data into ClickHouse")
138 parser.add_argument("--load-from-sample", action="store_true", help="Setup and restore from db_sample.parquet")
139 parser.add_argument("--load-from-db", action="store_true", help="Setup and use existing db.parquet")
140 parser.add_argument("--docker-compose", action="store_true", help="Use Docker Compose to start ClickHouse & Grafana")
141 parser.add_argument("--setup-clickhouse", action="store_true", help="Setup ClickHouse database and table")
142
143 args = parser.parse_args()
144
145 os.makedirs("db", exist_ok=True)
146 os.makedirs("samples", exist_ok=True)
147 os.makedirs("db/logs", exist_ok=True)
148
149 if args.docker_compose:
150 log("Setting up docker instance to be ready for ClickHouse database and Grafana.")
151 run_command("docker-compose up -d")
152 time.sleep(5)
153
154 client = wait_for_clickhouse()
155
156 if args.setup_clickhouse or args.docker_compose:
157 setup_clickhouse(client)
158
159 if args.load_from_sample:
160 log(f"Loading from sample data: {SAMPLE_PATH}")
161 shutil.copy(SAMPLE_PATH, DB_PATH)
162 load_db_to_clickhouse(client, DB_PATH)
163
164 elif args.load_from_db:
165 log(f"Loading from existing data: {DB_PATH}")
166 load_db_to_clickhouse(client, DB_PATH)
167
168 if args.load_from_sample or args.load_from_db:
169 run_command("docker restart grafana")
170
171
int main(int argc, char *argv[])
Entry point for running Monte Carlo simulations via CLI.