diff --git a/.github/workflows/fiber.yml b/.github/workflows/fiber.yml index e8e6755..ae1497f 100644 --- a/.github/workflows/fiber.yml +++ b/.github/workflows/fiber.yml @@ -79,7 +79,7 @@ jobs: name: jfoa-open_channel-reports-${{ runner.os }} path: ./report - fiber_test_accept_channel_cancel_invoice_connect_peer_disconnect_peer: + fiber_test_accept_channel_cancel_invoice_connect_peer_disconnect_peer_backup: needs: prepare runs-on: ubuntu-22.04 @@ -106,7 +106,7 @@ jobs: tar -xzf prepare-backup.tar.gz - name: Run fiber_test_demo - run: make fiber_test_demo FIBER_TEST_DEMO="test_cases/fiber/devnet/accept_channel test_cases/fiber/devnet/cancel_invoice test_cases/fiber/devnet/connect_peer test_cases/fiber/devnet/disconnect_peer" + run: make fiber_test_demo FIBER_TEST_DEMO="test_cases/fiber/devnet/accept_channel test_cases/fiber/devnet/cancel_invoice test_cases/fiber/devnet/connect_peer test_cases/fiber/devnet/disconnect_peer test_cases/fiber/devnet/backup" - name: Publish reports if: failure() diff --git a/test_cases/fiber/devnet/backup/test_backup.py b/test_cases/fiber/devnet/backup/test_backup.py new file mode 100644 index 0000000..da9ab41 --- /dev/null +++ b/test_cases/fiber/devnet/backup/test_backup.py @@ -0,0 +1,61 @@ +import shutil +import time + +from framework.basic_fiber import FiberTest + + +class TestBackup(FiberTest): + + def test_backup(self): + """ + 1. 关闭节点 + 2. 替换节点 + 3. 重启,send payment + Returns: + """ + self.open_channel(self.fiber1, self.fiber2, 1000 * 100000000, 1) + before_graph_nodes = self.fiber2.get_client().graph_nodes() + self.fiber1.stop() + self.fiber1.prepare({"fiber_listening_addr": "/ip4/127.0.0.1/tcp/8238"}) + self.fiber1.start() + time.sleep(5) + after_graph_nodes = self.fiber2.get_client().graph_nodes() + self.send_payment(self.fiber1, self.fiber2, 1) + print(before_graph_nodes) + print(after_graph_nodes) + assert ( + after_graph_nodes["nodes"][1]["addresses"] + == self.fiber1.get_client().node_info()["addresses"] + ) + + def test_backup2(self): + """ + 1. 不关闭节点 + 2. 直接备份数据 + 3. 重启,send payment + Returns: + """ + self.open_channel(self.fiber1, self.fiber2, 1000 * 100000000, 1) + shutil.copytree( + f"{self.fiber1.tmp_path}/fiber", f"{self.fiber1.tmp_path}/fiber.bak" + ) + self.fiber1.stop() + shutil.rmtree(f"{self.fiber1.tmp_path}/fiber") + shutil.copytree( + f"{self.fiber1.tmp_path}/fiber.bak", f"{self.fiber1.tmp_path}/fiber" + ) + self.fiber1.start() + time.sleep(5) + self.send_payment(self.fiber1, self.fiber2, 1) + + def test_backup3(self): + self.open_channel(self.fiber1, self.fiber2, 1000 * 100000000, 1) + self.fiber1.stop() + self.fiber1.prepare({"fiber_listening_addr": "/ip4/127.0.0.1/tcp/8238"}) + self.fiber1.start("newPassword2") + time.sleep(5) + self.send_payment(self.fiber1, self.fiber2, 1) + self.fiber1.stop() + self.fiber1.start("newPassword2") + time.sleep(5) + self.send_payment(self.fiber1, self.fiber2, 1) diff --git a/test_cases/fiber/devnet/send_payment/params/test_max_fee_amount.py b/test_cases/fiber/devnet/send_payment/params/test_max_fee_amount.py index 29a1002..4966f10 100644 --- a/test_cases/fiber/devnet/send_payment/params/test_max_fee_amount.py +++ b/test_cases/fiber/devnet/send_payment/params/test_max_fee_amount.py @@ -75,11 +75,30 @@ def test_fee(self): ) self.wait_payment_state(self.fiber1, payment1["payment_hash"]) - # - # - # def test_max_fee_amount_is_none(self): - # """ - # max_fee_amount == node 代表什么 - # Returns: - # - # """ + @pytest.mark.skip(reason="panic") + def test_max_fee_0xffffffffffffffffffffffffffffffff(self): + self.open_channel(self.fiber1, self.fiber2, 1000 * 100000000, 1000 * 100000000) + invoice = self.fiber1.get_client().new_invoice( + { + "amount": hex(1 * 100000000), + "currency": "Fibd", + "description": "test invoice generated by node2", + "expiry": "0xe10", + "final_cltv": "0x28", + "payment_preimage": self.generate_random_preimage(), + "hash_algorithm": "sha256", + } + ) + with pytest.raises(Exception) as exc_info: + self.fiber2.get_client().send_payment( + { + "invoice": invoice["invoice_address"], + "max_fee_amount": "0xffffffffffffffffffffffffffffffff", + } + ) + expected_error_message = "" + 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]}'" + ) + self.fiber2.get_client().node_info()