Exemplo n.º 1
0
        public async Task OwnResourceTest()
        {
            await InitialTokenContract(false);

            // Check balance before mining
            {
                var cpuBalance = await GetCreatorBalanceOf("CPU");

                cpuBalance.ShouldBe(0);
                var ramBalance = await GetCreatorBalanceOf("RAM");

                ramBalance.ShouldBe(0);
                var diskBalance = await GetCreatorBalanceOf("DISK");

                diskBalance.ShouldBe(0);
                var netBalance = await GetCreatorBalanceOf("NET");

                netBalance.ShouldBe(0);
            }

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            var owningRental = await TokenStub.GetOwningRental.CallAsync(new Empty());

            owningRental.ResourceAmount["CPU"].ShouldBe(CpuAmount * Rental);
            owningRental.ResourceAmount["RAM"].ShouldBe(RamAmount * Rental);
            owningRental.ResourceAmount["DISK"].ShouldBe(DiskAmount * Rental);
            owningRental.ResourceAmount["NET"].ShouldBe(NetAmount * Rental);
        }
Exemplo n.º 2
0
        public async Task <Hash> RequestRandomNumberWithCommitmentSchemeTest()
        {
            await BlockMiningService.MineBlockToNextRoundAsync();

            var dict = await DeployCommitmentSchemeContract();

            CommitmentSchemeStub =
                GetTester <CommitmentSchemeContractContainer.CommitmentSchemeContractStub>(dict.First().Value,
                                                                                           SampleECKeyPairs.KeyPairs[0]);

            var commitment = Hash.FromMessage(Secret);
            var requestTx  = CommitmentSchemeStub.RequestRandomNumber.GetTransaction(commitment);
            await BlockMiningService.MineBlockAsync(new List <Transaction> {
                requestTx
            });

            var requestTrace      = TransactionTraceProvider.GetTransactionTrace(requestTx.GetHash());
            var randomNumberOrder = new RandomNumberOrder();

            randomNumberOrder.MergeFrom(requestTrace.ReturnValue);
            randomNumberOrder.BlockHeight.ShouldBePositive();
            randomNumberOrder.TokenHash.ShouldBe(commitment);

            return(requestTx.GetHash());
        }
Exemplo n.º 3
0
        public async Task RequestRandomNumberTest()
        {
            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            var requestTx      = ConsensusStub.RequestRandomNumber.GetTransaction(new Hash());
            var refBlockNumber = requestTx.RefBlockNumber;
            await BlockMiningService.MineBlockAsync(new List <Transaction>
            {
                requestTx
            });

            var requestTrace      = TransactionTraceProvider.GetTransactionTrace(requestTx.GetHash());
            var randomNumberOrder = new RandomNumberOrder();

            randomNumberOrder.MergeFrom(requestTrace.ReturnValue);
            var targetBlockNumber = randomNumberOrder.BlockHeight;

            targetBlockNumber.ShouldBeLessThan(refBlockNumber + 100);
        }
Exemplo n.º 4
0
        public async Task PayDebtTest_NotEnough()
        {
            await OwnResourceTest();

            // Charge
            foreach (var symbol in Symbols)
            {
                await TokenStub.Issue.SendAsync(new IssueInput
                {
                    Symbol = symbol,
                    To     = Creator,
                    Amount = 1
                });
            }

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            var owningRental = await TokenStub.GetOwningRental.CallAsync(new Empty());

            owningRental.ResourceAmount["CPU"].ShouldBe(CpuAmount * Rental * 2 - 1);
            owningRental.ResourceAmount["RAM"].ShouldBe(RamAmount * Rental * 2 - 1);
            owningRental.ResourceAmount["DISK"].ShouldBe(DiskAmount * Rental * 2 - 1);
            owningRental.ResourceAmount["NET"].ShouldBe(NetAmount * Rental * 2 - 1);

            // Check balance before mining
            {
                var cpuBalance = await GetCreatorBalanceOf("CPU");

                cpuBalance.ShouldBe(0);
                var ramBalance = await GetCreatorBalanceOf("RAM");

                ramBalance.ShouldBe(0);
                var diskBalance = await GetCreatorBalanceOf("DISK");

                diskBalance.ShouldBe(0);
                var netBalance = await GetCreatorBalanceOf("NET");

                diskBalance.ShouldBe(0);
            }
        }
Exemplo n.º 5
0
        public async Task ChargeRentalTest()
        {
            await InitialTokenContract();

            // Check balance before mining
            {
                var cpuBalance = await GetCreatorBalanceOf("CPU");

                cpuBalance.ShouldBe(ResourceSupply);
                var ramBalance = await GetCreatorBalanceOf("RAM");

                ramBalance.ShouldBe(ResourceSupply);
                var diskBalance = await GetCreatorBalanceOf("DISK");

                diskBalance.ShouldBe(ResourceSupply);
                var netBalance = await GetCreatorBalanceOf("NET");

                netBalance.ShouldBe(ResourceSupply);
            }

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            await BlockMiningService.MineBlockToNextRoundAsync();

            // Check balance before mining
            {
                var cpuBalance = await GetCreatorBalanceOf("CPU");

                cpuBalance.ShouldBe(ResourceSupply - CpuAmount * Rental);
                var ramBalance = await GetCreatorBalanceOf("RAM");

                ramBalance.ShouldBe(ResourceSupply - RamAmount * Rental);
                var diskBalance = await GetCreatorBalanceOf("DISK");

                diskBalance.ShouldBe(ResourceSupply - DiskAmount * Rental);
                var netBalance = await GetCreatorBalanceOf("NET");

                netBalance.ShouldBe(ResourceSupply - NetAmount * Rental);
            }
        }