From e949f7638b82bcaf40c082905b743f74262857f2 Mon Sep 17 00:00:00 2001 From: Andrea Cerone Date: Fri, 4 Aug 2023 16:14:35 +0100 Subject: [PATCH 1/7] Testnet experiments: Generate baker accounts --- .../testnet_experiment_tools.ml | 54 ++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index 097eaf364945..d76924e1c049 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -24,11 +24,61 @@ (*****************************************************************************) open Tezt +open Tezt_tezos + +let ensure_dir_exists dir = + Lwt.catch + (fun () -> + let* () = Lwt_utils_unix.create_dir ~perm:0o744 dir in + Lwt.return ()) + (function + | Failure s -> + if String.equal s "Not a directory" then + Test.fail "%s exists but is not a directory." dir + else Test.fail "Cannot create directory %s" dir + | _ -> Test.fail "Cannot create directory %s" dir) + +let default_number_of_bakers = 10 + +let baker_alias n = Printf.sprintf "baker_%d" n + +let number_of_bakers = + Sys.getenv_opt "BAKERS" |> Option.map int_of_string + |> Option.value ~default:default_number_of_bakers + +let generate_baker_accounts n client = + let rec go i = + if i = 0 then Lwt.return () + else + let* () = Lwt_io.printf "." in + let* _alias = Client.gen_keys ~alias:(baker_alias i) client in + go (i - 1) + in + let* () = Lwt_io.printf "Generating accounts" in + let* () = go n in + Lwt_io.printf "\n\n" (* These tests can be run locally to generate the data needed to run a stresstest. *) module Local = struct - let generate_baker_accounts () = Test.fail "Not implemented" + let generate_baker_accounts n () = + let client_dir = Client_config.default_base_dir in + let* () = + Lwt_io.printf + "Keys will be saved in %s. You can change this by setting the \ + TEZOS_CLIENT_DIR environment variable\n\n" + client_dir + in + let* () = + Lwt_io.printf + "%d baker accounts will be generated. You can change this by setting \ + the BAKERS environment variable.\n\n" + number_of_bakers + in + let client = Client.create ~base_dir:client_dir () in + let* () = ensure_dir_exists client_dir in + let* () = generate_baker_accounts n client in + Lwt.return () let generate_network_configuration () = Test.fail "Not implemented" @@ -47,7 +97,7 @@ let () = ~__FILE__ ~title:"Generate baker accounts" ~tags:["generate_baker_accounts"] - Local.generate_baker_accounts ; + (Local.generate_baker_accounts number_of_bakers) ; register ~__FILE__ ~title:"Generate Network Configuration" -- GitLab From 57c7ce6dc2db6993984dd9dd89522953f9bb149a Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Thu, 10 Aug 2023 17:49:40 +0300 Subject: [PATCH 2/7] Testnet_experiments: Fixup_1 --- .../testnet_experiment_tools/testnet_experiment_tools.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index d76924e1c049..66ce5e34943e 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -30,7 +30,7 @@ let ensure_dir_exists dir = Lwt.catch (fun () -> let* () = Lwt_utils_unix.create_dir ~perm:0o744 dir in - Lwt.return ()) + Lwt.return_unit) (function | Failure s -> if String.equal s "Not a directory" then @@ -48,10 +48,10 @@ let number_of_bakers = let generate_baker_accounts n client = let rec go i = - if i = 0 then Lwt.return () + if i = 0 then Lwt.return_unit else - let* () = Lwt_io.printf "." in let* _alias = Client.gen_keys ~alias:(baker_alias i) client in + let* () = Lwt_io.printf "." in go (i - 1) in let* () = Lwt_io.printf "Generating accounts" in @@ -78,7 +78,7 @@ module Local = struct let client = Client.create ~base_dir:client_dir () in let* () = ensure_dir_exists client_dir in let* () = generate_baker_accounts n client in - Lwt.return () + Lwt.return_unit let generate_network_configuration () = Test.fail "Not implemented" -- GitLab From c035d3f15c5abe795cda09a87a0c295fc4ac50d0 Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Thu, 10 Aug 2023 18:18:00 +0300 Subject: [PATCH 3/7] Testnet_experiments: Fixup_2 --- .../testnet_experiment_tools.ml | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index 66ce5e34943e..a1024e86f77c 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -31,31 +31,32 @@ let ensure_dir_exists dir = (fun () -> let* () = Lwt_utils_unix.create_dir ~perm:0o744 dir in Lwt.return_unit) - (function - | Failure s -> - if String.equal s "Not a directory" then - Test.fail "%s exists but is not a directory." dir - else Test.fail "Cannot create directory %s" dir - | _ -> Test.fail "Cannot create directory %s" dir) + (fun exn -> + Test.fail + "Failed to create directory '%s': %s" + dir + (Printexc.to_string exn)) let default_number_of_bakers = 10 +let bakers = "BAKERS" + let baker_alias n = Printf.sprintf "baker_%d" n let number_of_bakers = - Sys.getenv_opt "BAKERS" |> Option.map int_of_string + Sys.getenv_opt bakers |> Option.map int_of_string |> Option.value ~default:default_number_of_bakers let generate_baker_accounts n client = - let rec go i = + let rec generate_baker_account i = if i = 0 then Lwt.return_unit else let* _alias = Client.gen_keys ~alias:(baker_alias i) client in let* () = Lwt_io.printf "." in - go (i - 1) + generate_baker_account (i - 1) in let* () = Lwt_io.printf "Generating accounts" in - let* () = go n in + let* () = generate_baker_account n in Lwt_io.printf "\n\n" (* These tests can be run locally to generate the data needed to run a -- GitLab From efe75c409d7c897337a4652ca5731f32fe99adbb Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Fri, 11 Aug 2023 00:59:51 +0300 Subject: [PATCH 4/7] Testnet_experiments: Fixup_3 - Add gen_keys directory --- .../testnet_experiment_tools.ml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index a1024e86f77c..c63cd923fa3d 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -47,6 +47,13 @@ let number_of_bakers = Sys.getenv_opt bakers |> Option.map int_of_string |> Option.value ~default:default_number_of_bakers +let default_gen_keys_dir = "/tmp/gen_keys_dir" + +let gen_keys_dir_name = "GEN_KEYS_DIR" + +let gen_keys_dir = + Sys.getenv_opt gen_keys_dir_name |> Option.value ~default:default_gen_keys_dir + let generate_baker_accounts n client = let rec generate_baker_account i = if i = 0 then Lwt.return_unit @@ -63,12 +70,12 @@ let generate_baker_accounts n client = stresstest. *) module Local = struct let generate_baker_accounts n () = - let client_dir = Client_config.default_base_dir in + let client_dir = gen_keys_dir in let* () = Lwt_io.printf "Keys will be saved in %s. You can change this by setting the \ - TEZOS_CLIENT_DIR environment variable\n\n" - client_dir + GEN_KEYS_DIR environment variable\n\n" + default_gen_keys_dir in let* () = Lwt_io.printf -- GitLab From 72a10e5b6fb72a990b700efe4deb5866d02ce922 Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Mon, 14 Aug 2023 12:52:28 +0100 Subject: [PATCH 5/7] Testnet experiments: Fixup_4 --- .../testnet_experiment_tools/testnet_experiment_tools.ml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index c63cd923fa3d..e24907fad558 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -47,7 +47,11 @@ let number_of_bakers = Sys.getenv_opt bakers |> Option.map int_of_string |> Option.value ~default:default_number_of_bakers -let default_gen_keys_dir = "/tmp/gen_keys_dir" +let default_gen_keys_dir = + let base_dir = Filename.temp_file ~temp_dir:"/tmp" "" "" in + let _ = Lwt_unix.unlink base_dir in + let _ = Lwt_unix.mkdir base_dir 0o700 in + base_dir let gen_keys_dir_name = "GEN_KEYS_DIR" -- GitLab From df1528ee2dc23a1e9ff1069e94d681b044ab7070 Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Tue, 15 Aug 2023 13:18:34 +0100 Subject: [PATCH 6/7] Testnet experiments: Fixup_5 --- devtools/testnet_experiment_tools/testnet_experiment_tools.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index e24907fad558..ff76d1a93d5e 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -60,14 +60,14 @@ let gen_keys_dir = let generate_baker_accounts n client = let rec generate_baker_account i = - if i = 0 then Lwt.return_unit + if i < 0 then Lwt.return_unit else let* _alias = Client.gen_keys ~alias:(baker_alias i) client in let* () = Lwt_io.printf "." in generate_baker_account (i - 1) in let* () = Lwt_io.printf "Generating accounts" in - let* () = generate_baker_account n in + let* () = generate_baker_account (n - 1) in Lwt_io.printf "\n\n" (* These tests can be run locally to generate the data needed to run a -- GitLab From fe4ef8f558f4a54e8e35e2e53576ffdbdf3fbfbd Mon Sep 17 00:00:00 2001 From: Gabriel Moise Date: Wed, 16 Aug 2023 16:09:42 +0100 Subject: [PATCH 7/7] Testnet experiments: Fixup_6 --- .../testnet_experiment_tools.ml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml index ff76d1a93d5e..55e3c982585d 100644 --- a/devtools/testnet_experiment_tools/testnet_experiment_tools.ml +++ b/devtools/testnet_experiment_tools/testnet_experiment_tools.ml @@ -23,6 +23,18 @@ (* *) (*****************************************************************************) +(* Testnet experiment tools + ------------------------ + Invocation: + dune exec devtools/testnet_experiment_tools/testnet_experiment_tools.exe + Requirements: + GEN_KEYS_DIR - sets the directory to output generated keys. + Defaults to /tmp/ + BAKERS - sets the number of baker keys to generate. Defaults to 10. + Description: This file contains scripts to generate config information + towards bootstrapping an experimental test network. +*) + open Tezt open Tezt_tezos @@ -79,7 +91,7 @@ module Local = struct Lwt_io.printf "Keys will be saved in %s. You can change this by setting the \ GEN_KEYS_DIR environment variable\n\n" - default_gen_keys_dir + client_dir in let* () = Lwt_io.printf -- GitLab