public async Task CanScheduleAndCancelSuspendNetwork()
    {
        var systemAddress = await _network.GetSystemFreezeAdminAddress();

        if (systemAddress is null)
        {
            _network.Output?.WriteLine("TEST SKIPPED: No access to System Freeze Administrator Account.");
            return;
        }
        await using var client = _network.NewClient();
        var receipt = await client.SuspendNetworkAsync(DateTime.UtcNow.AddSeconds(20), ctx => ctx.Payer = systemAddress);

        Assert.Equal(ResponseCode.Success, receipt.Status);

        receipt = await client.AbortNetworkUpgrade(ctx => ctx.Payer = systemAddress);

        Assert.Equal(ResponseCode.Success, receipt.Status);

        await Task.Delay(TimeSpan.FromSeconds(30));

        // Confirm network is still up and running.
        var info = await client.GetAccountInfoAsync(_network.Payer);

        Assert.Equal(_network.Payer, info.Address);
    }
Ejemplo n.º 2
0
        public async Task CanSuspendNetwork()
        {
            var systemAddress = await _network.GetSystemFreezeAdminAddress();

            if (systemAddress is null)
            {
                _network.Output?.WriteLine("TEST SKIPPED: No access to System Freeze Administrator Account.");
                return;
            }
            await using var client = _network.NewClient();
            var suspendParameters = new SuspendNetworkParams
            {
                Starting = TimeSpan.FromSeconds(5),
                Duration = TimeSpan.FromSeconds(60)
            };
            var receipt = await client.SuspendNetworkAsync(suspendParameters, ctx => ctx.Payer = systemAddress);

            Assert.Equal(ResponseCode.Success, receipt.Status);

            await Task.Delay(TimeSpan.FromSeconds(30));

            var pex = await Assert.ThrowsAsync <PrecheckException>(async() =>
            {
                await client.GetAccountInfoAsync(_network.Payer);
            });

            Assert.Equal(ResponseCode.PlatformNotActive, pex.Status);
            Assert.StartsWith("Transaction Failed Pre-Check: PlatformNotActive", pex.Message);

            await Task.Delay(TimeSpan.FromSeconds(50));

            var info = await client.GetAccountInfoAsync(_network.Payer);

            Assert.Equal(_network.Payer, info.Address);
        }