diff --git a/download.py b/download.py index 1fe9b728..60224a55 100644 --- a/download.py +++ b/download.py @@ -13,7 +13,8 @@ versions = [ "0.110.2", - "0.117.0" "0.201.0", + "0.117.0", + "0.201.0", ] # Replace with your versions DOWNLOAD_DIR = "download" diff --git a/test_cases/fiber/devnet/compatibility/test_data.py b/test_cases/fiber/devnet/compatibility/test_data.py index 8bd96d4a..cbfd6856 100644 --- a/test_cases/fiber/devnet/compatibility/test_data.py +++ b/test_cases/fiber/devnet/compatibility/test_data.py @@ -1,28 +1,33 @@ import time +import pytest + from framework.basic_fiber import FiberTest from framework.test_fiber import FiberConfigPath class TestData(FiberTest): - def test_old_fiber_020(self): + @pytest.mark.skip("migration failed") + def test_old_fiber_0311(self): """ - 1. start fiber 0.2.0 - 2. open_channel with fiber - 3. stop fiber - 4. migration and restart fiber 0.3.0 - 5. send_payment - 6. shutdown_channel + 1. start fiber 0.5.0 + 2. open_channel with fiber + 3. stress test with fiber + 4. stop fiber + 5. restart fiber + 6. sleep 10 seconds + 7. restart other fiber + 8. send_payment Returns: """ - # 1. start fiber 0.2.0 + # 1. start fiber 0.5.0 old_fiber_1 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V020_DEV + self.generate_account(10000), fiber_version=FiberConfigPath.V050_DEV ) old_fiber_2 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V020_DEV + self.generate_account(10000), fiber_version=FiberConfigPath.V050_DEV ) old_fiber_1.connect_peer(old_fiber_2) time.sleep(1) @@ -31,177 +36,42 @@ def test_old_fiber_020(self): self.open_channel( old_fiber_1, old_fiber_2, 1000 * 100000000, 1000 * 100000000, 1000, 1000 ) - self.send_payment(old_fiber_1, old_fiber_2, 100) - - # 3. stop fiber - old_fiber_1.stop() - old_fiber_2.stop() - - # 4. migration and restart fiber 0.3.0 - old_fiber_1.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_2.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_1.migration() - old_fiber_1.start() - old_fiber_2.migration() - old_fiber_2.start() - - # 5. send_payment - self.send_payment(old_fiber_1, old_fiber_2, 100) - self.send_payment(old_fiber_2, old_fiber_1, 200) - channels = old_fiber_1.get_client().list_channels({}) - old_fiber_1.get_client().shutdown_channel( - { - "channel_id": channels["channels"][0]["channel_id"], - "close_script": self.get_account_script(self.Config.ACCOUNT_PRIVATE_1), - "fee_rate": "0x3FC", - } - ) - tx_hash = self.wait_and_check_tx_pool_fee(1000, False, 120) - tx_message = self.get_tx_message(tx_hash) - print("tx message:", tx_message) - assert { - "args": self.get_account_script(old_fiber_2.account_private)["args"], - "capacity": 106200000000, - } in tx_message["output_cells"] - - def test_old_fiber_021(self): - """ - 1. start fiber 0.2.1 - 2. open_channel with fiber - 3. stop fiber - 4. migration and restart fiber 0.3.0 - 5. send_payment - 6. shutdown_channel - Returns: - - """ - # 1. start fiber 0.2.0 - old_fiber_1 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V021_DEV - ) - old_fiber_2 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V021_DEV - ) - old_fiber_1.connect_peer(old_fiber_2) - time.sleep(1) - # 2. open_channel with fiber - self.open_channel( - old_fiber_1, old_fiber_2, 1000 * 100000000, 1000 * 100000000, 1000, 1000 - ) - self.send_payment(old_fiber_1, old_fiber_2, 100) + # 3. stress test with fiber + for i in range(20): + self.send_payment(old_fiber_1, old_fiber_2, 1, False) + self.send_payment(old_fiber_2, old_fiber_1, 1, False) - # 3. stop fiber + # 4. stop fiber old_fiber_1.stop() - old_fiber_2.stop() - - # 4. migration and restart fiber 0.3.0 - old_fiber_1.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_2.fiber_config_enum = FiberConfigPath.CURRENT_DEV + # 5. restart fiber old_fiber_1.migration() - time.sleep(5) old_fiber_1.start() - time.sleep(5) - old_fiber_2.migration() - old_fiber_2.start() - - # 5. send_payment - self.send_payment(old_fiber_1, old_fiber_2, 100) - self.send_payment(old_fiber_2, old_fiber_1, 200) - channels = old_fiber_1.get_client().list_channels({}) - old_fiber_1.get_client().shutdown_channel( - { - "channel_id": channels["channels"][0]["channel_id"], - "close_script": self.get_account_script(self.Config.ACCOUNT_PRIVATE_1), - "fee_rate": "0x3FC", - } - ) - tx_hash = self.wait_and_check_tx_pool_fee(1000, False, 120) - tx_message = self.get_tx_message(tx_hash) - print("tx message:", tx_message) - assert { - "args": self.get_account_script(old_fiber_2.account_private)["args"], - "capacity": 106200000000, - } in tx_message["output_cells"] + # 6. sleep 10 seconds + time.sleep(10) + old_fiber_1.get_client().list_channels({}) - def test_old_fiber_030(self): - # 1. start fiber 0.2.0 - old_fiber_1 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V030_DEV - ) - old_fiber_2 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V030_DEV - ) - old_fiber_1.connect_peer(old_fiber_2) - time.sleep(1) - # 2. open_channel with fiber - self.open_channel( - old_fiber_1, old_fiber_2, 1000 * 100000000, 1000 * 100000000, 1000, 1000 - ) - self.send_payment(old_fiber_1, old_fiber_2, 100) + # todo assert + # self.send_payment(old_fiber_1, old_fiber_2, 1,False) + # list_peers + # old_fiber_1.get_client().list_peers() - # 3. stop fiber - old_fiber_1.stop() + # 7. restart other fiber old_fiber_2.stop() - - # 4. migration and restart fiber 0.3.0 - old_fiber_1.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_2.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_1.migration() - time.sleep(5) - old_fiber_1.start() - time.sleep(5) old_fiber_2.migration() old_fiber_2.start() + time.sleep(10) + # 8. send_payment + self.send_payment(old_fiber_1, old_fiber_2, 1) - # 5. send_payment - self.send_payment(old_fiber_1, old_fiber_2, 100) - self.send_payment(old_fiber_2, old_fiber_1, 200) - channels = old_fiber_1.get_client().list_channels({}) - old_fiber_1.get_client().shutdown_channel( - { - "channel_id": channels["channels"][0]["channel_id"], - "close_script": self.get_account_script(self.Config.ACCOUNT_PRIVATE_1), - "fee_rate": "0x3FC", - } - ) - tx_hash = self.wait_and_check_tx_pool_fee(1000, False, 120) - tx_message = self.get_tx_message(tx_hash) - print("tx message:", tx_message) - assert { - "args": self.get_account_script(old_fiber_2.account_private)["args"], - "capacity": 106200000000, - } in tx_message["output_cells"] - - def test_old_fiber_031(self): - # 1. start fiber 0.2.0 - old_fiber_1 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V031_DEV - ) - old_fiber_2 = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V031_DEV - ) - old_fiber_1.connect_peer(old_fiber_2) - time.sleep(1) - # 2. open_channel with fiber - self.open_channel( - old_fiber_1, old_fiber_2, 1000 * 100000000, 1000 * 100000000, 1000, 1000 - ) - self.send_payment(old_fiber_1, old_fiber_2, 100) - - # 3. stop fiber old_fiber_1.stop() - old_fiber_2.stop() # 4. migration and restart fiber 0.3.0 old_fiber_1.fiber_config_enum = FiberConfigPath.CURRENT_DEV - old_fiber_2.fiber_config_enum = FiberConfigPath.CURRENT_DEV old_fiber_1.migration() time.sleep(5) old_fiber_1.start() - time.sleep(5) - old_fiber_2.migration() - old_fiber_2.start() + time.sleep(10) # 5. send_payment self.send_payment(old_fiber_1, old_fiber_2, 100) diff --git a/test_cases/fiber/devnet/compatibility/test_p2p.py b/test_cases/fiber/devnet/compatibility/test_p2p.py index 05b0beb1..059b2a78 100644 --- a/test_cases/fiber/devnet/compatibility/test_p2p.py +++ b/test_cases/fiber/devnet/compatibility/test_p2p.py @@ -8,27 +8,28 @@ class TestP2p(FiberTest): - @pytest.mark.skip("not support old fiber") def test_old_fiber(self): """ - 1. start 0.2.0 node - 2. open_channel with node 0.2.0 - 3. send_payment with node 0.2.0 Returns: - """ old_fiber = self.start_new_fiber( - self.generate_account(10000), fiber_version=FiberConfigPath.V020_DEV + self.generate_account(10000), fiber_version=FiberConfigPath.V050_DEV ) old_fiber.connect_peer(self.fiber1) time.sleep(1) - old_fiber.get_client().open_channel( - { - "peer_id": self.fiber1.get_peer_id(), - "funding_amount": hex(1000 + 62 * 100000000), - "tlc_fee_proportional_millionths": hex(1000), - "public": True, - } + with pytest.raises(Exception) as exc_info: + self.fiber1.get_client().open_channel( + { + "peer_id": old_fiber.get_peer_id(), + "funding_amount": hex(1000 + 62 * 100000000), + "tlc_fee_proportional_millionths": hex(1000), + "public": True, + } + ) + expected_error_message = "feature not found" + assert expected_error_message in exc_info.value.args[0], ( + f"Expected substring '{expected_error_message}' " + f"not found in actual string '{exc_info.value.args[0]}'" ) old_fiber.get_client().open_channel( @@ -39,21 +40,6 @@ def test_old_fiber(self): "public": True, } ) - self.fiber1.get_client().open_channel( - { - "peer_id": old_fiber.get_peer_id(), - "funding_amount": hex(2000 * 100000000), - "tlc_fee_proportional_millionths": hex(1000), - "public": True, - } - ) - self.open_channel( - self.fiber1, self.fiber2, 1000 * 100000000, 1000 * 100000000, 1000, 1000 - ) - with pytest.raises(Exception) as exc_info: - self.send_payment(old_fiber, self.fiber1, 100) - expected_error_message = "no path found" - assert expected_error_message in exc_info.value.args[0], ( - f"Expected substring '{expected_error_message}' " - f"not found in actual string '{exc_info.value.args[0]}'" - ) + time.sleep(1) + channel = old_fiber.get_client().list_channels({}) + assert len(channel["channels"]) == 0 diff --git a/test_cases/fiber/devnet/graph_nodes/test_graph_nodes.py b/test_cases/fiber/devnet/graph_nodes/test_graph_nodes.py index 183b5545..3b05e310 100644 --- a/test_cases/fiber/devnet/graph_nodes/test_graph_nodes.py +++ b/test_cases/fiber/devnet/graph_nodes/test_graph_nodes.py @@ -100,6 +100,11 @@ def test_node_info(self): # udt_cfg_infos assert node["udt_cfg_infos"] == node_info["udt_cfg_infos"] + # features + assert ( + node["features"] == node_info["features"] + ), f"node:{node}, node_info:{node_info}" + # @pytest.mark.skip("其他节点的graph_nodes 不一定会更新") def test_change_node_info(self): """ diff --git a/test_cases/fiber/devnet/node_info/test_node_info.py b/test_cases/fiber/devnet/node_info/test_node_info.py index 4e83ed6d..f9618bd2 100644 --- a/test_cases/fiber/devnet/node_info/test_node_info.py +++ b/test_cases/fiber/devnet/node_info/test_node_info.py @@ -7,7 +7,7 @@ class TestNodeInfo(FiberTest): - @pytest.mark.skip("https://github.com/nervosnetwork/fiber/issues/631") + # @pytest.mark.skip("https://github.com/nervosnetwork/fiber/issues/631") def test_commit_hash(self): """ @@ -71,7 +71,7 @@ def test_commit_hash(self): # tlc_max_value # https://github.com/nervosnetwork/fiber/issues/631 - assert node_info["tlc_max_value"] == hex(0) + # assert node_info["tlc_max_value"] == hex(0) # tlc_fee_proportional_millionths assert node_info["tlc_fee_proportional_millionths"] == hex(1000) @@ -79,6 +79,8 @@ def test_commit_hash(self): # peers_count assert node_info["peers_count"] == hex(1) + assert node_info["features"] is not None, "features should not be None" + def test_channel_count(self): """ check channel_count