This commit is contained in:
Bo QIU 2024-09-06 15:08:36 +08:00 committed by GitHub
commit 6fc43cc95f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 39 additions and 8 deletions

View File

@ -62,6 +62,15 @@ for ((i=0; i<$NUM_NODES; i++)) do
CONFIG_TOML=$ROOT_DIR/node$i/config/config.toml CONFIG_TOML=$ROOT_DIR/node$i/config/config.toml
sed -i '/seeds = /c\seeds = ""' $CONFIG_TOML sed -i '/seeds = /c\seeds = ""' $CONFIG_TOML
sed -i 's/addr_book_strict = true/addr_book_strict = false/' $CONFIG_TOML sed -i 's/addr_book_strict = true/addr_book_strict = false/' $CONFIG_TOML
# Change block time to very small
sed -i '/timeout_propose = "3s"/c\timeout_propose = "300ms"' $CONFIG_TOML
sed -i '/timeout_propose_delta = "500ms"/c\timeout_propose_delta = "50ms"' $CONFIG_TOML
sed -i '/timeout_prevote = "1s"/c\timeout_prevote = "100ms"' $CONFIG_TOML
sed -i '/timeout_prevote_delta = "500ms"/c\timeout_prevote_delta = "50ms"' $CONFIG_TOML
sed -i '/timeout_precommit = "1s"/c\timeout_precommit = "100ms"' $CONFIG_TOML
sed -i '/timeout_precommit_delta = "500ms"/c\timeout_precommit_delta = "50ms"' $CONFIG_TOML
sed -i '/timeout_commit = "5s"/c\timeout_commit = "500ms"' $CONFIG_TOML
done done
# Update persistent_peers in config.toml # Update persistent_peers in config.toml

View File

@ -7,6 +7,7 @@ from utility.run_all import run_all
if __name__ == "__main__": if __name__ == "__main__":
run_all( run_all(
test_dir = os.path.dirname(__file__), test_dir = os.path.dirname(__file__),
slow_tests={"random_test.py", "same_root_test.py"}, slow_tests={"mine_test.py", "random_test.py", "same_root_test.py"},
long_manual_tests={"fuzz_test.py"}, long_manual_tests={"fuzz_test.py"},
single_run_tests={"mine_with_market_test.py"},
) )

View File

@ -167,8 +167,8 @@ class TestFramework:
# sync_blocks(self.blockchain_nodes) # sync_blocks(self.blockchain_nodes)
elif self.blockchain_node_type == BlockChainNodeType.ZG: elif self.blockchain_node_type == BlockChainNodeType.ZG:
# wait for the first block # wait for the first block
self.log.debug("Wait 3 seconds for 0gchain node to generate first block") self.log.debug("Wait for 0gchain node to generate first block")
time.sleep(3) time.sleep(0.5)
for node in self.blockchain_nodes: for node in self.blockchain_nodes:
wait_until(lambda: node.net_peerCount() == self.num_blockchain_nodes - 1) wait_until(lambda: node.net_peerCount() == self.num_blockchain_nodes - 1)
wait_until(lambda: node.eth_blockNumber() is not None) wait_until(lambda: node.eth_blockNumber() is not None)

View File

@ -50,11 +50,15 @@ def run_single_test(py, script, test_dir, index, port_min, port_max):
) )
except subprocess.CalledProcessError as err: except subprocess.CalledProcessError as err:
print_testcase_result(RED, CROSS, script, start_time) print_testcase_result(RED, CROSS, script, start_time)
try:
print("Output of " + script + "\n" + err.output.decode("utf-8"), flush=True) print("Output of " + script + "\n" + err.output.decode("utf-8"), flush=True)
except UnicodeDecodeError:
print("Output of " + script + "\n", flush=True)
print(err.output)
raise err raise err
print_testcase_result(BLUE, TICK, script, start_time) print_testcase_result(BLUE, TICK, script, start_time)
def run_all(test_dir: str, test_subdirs: list[str]=[], slow_tests: set[str]={}, long_manual_tests: set[str]={}): def run_all(test_dir: str, test_subdirs: list[str]=[], slow_tests: set[str]={}, long_manual_tests: set[str]={}, single_run_tests: set[str]={}):
tmp_dir = os.path.join(test_dir, "tmp") tmp_dir = os.path.join(test_dir, "tmp")
if not os.path.exists(tmp_dir): if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir, exist_ok=True) os.makedirs(tmp_dir, exist_ok=True)
@ -98,7 +102,7 @@ def run_all(test_dir: str, test_subdirs: list[str]=[], slow_tests: set[str]={},
for file in os.listdir(subdir_path): for file in os.listdir(subdir_path):
if file.endswith("_test.py"): if file.endswith("_test.py"):
rel_path = os.path.join(subdir, file) rel_path = os.path.join(subdir, file)
if rel_path not in slow_tests and rel_path not in long_manual_tests: if rel_path not in slow_tests and rel_path not in long_manual_tests and rel_path not in single_run_tests:
TEST_SCRIPTS.append(rel_path) TEST_SCRIPTS.append(rel_path)
executor = ProcessPoolExecutor(max_workers=options.max_workers) executor = ProcessPoolExecutor(max_workers=options.max_workers)
@ -131,6 +135,18 @@ def run_all(test_dir: str, test_subdirs: list[str]=[], slow_tests: set[str]={},
print("CalledProcessError " + repr(err)) print("CalledProcessError " + repr(err))
failed.add(script) failed.add(script)
# Run single tests one by one
for script in single_run_tests:
f = executor.submit(
run_single_test, py, script, test_dir, i, options.port_min, options.port_max
)
try:
f.result()
except subprocess.CalledProcessError as err:
print("CalledProcessError " + repr(err))
failed.add(script)
i += 1
print("Elapsed: " + str(int(time.time() - start_time)) + " seconds", flush=True) print("Elapsed: " + str(int(time.time() - start_time)) + " seconds", flush=True)
if len(failed) > 0: if len(failed) > 0:

View File

@ -194,8 +194,13 @@ def generate_merkle_tree_by_batch(data):
def submit_data(client, data): def submit_data(client, data):
shard_config = client.rpc.zgs_getShardConfig()
shard_id = int(shard_config["shardId"])
num_shard = int(shard_config["numShard"])
segments = data_to_segments(data) segments = data_to_segments(data)
for segment in segments: for index, segment in enumerate(segments):
if index % num_shard == shard_id:
client.zgs_upload_segment(segment) client.zgs_upload_segment(segment)
return segments return segments