diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java index 232d5816..3065da89 100644 --- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java +++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java @@ -110,6 +110,8 @@ public class IntegrationBase { TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash); txTpl.dataAccounts().register(dataAccount.getIdentity()); txTpl.dataAccount(dataAccount.getAddress()).set("total", 200, -1); +// txTpl.dataAccount(dataAccount.getAddress()).set("param1", "v", -1); +// txTpl.dataAccount(dataAccount.getAddress()).set("param2", 200, -1); // 签名; PreparedTransaction ptx = txTpl.prepare(); @@ -473,6 +475,7 @@ public class IntegrationBase { // execute the contract; testContractExe(adminKey, ledgerHash, keyPairResponse.keyPair, blockchainService, ledgerRepository); + testContractExe1(adminKey, ledgerHash, keyPairResponse.keyPair, blockchainService, ledgerRepository); return block; } @@ -490,7 +493,6 @@ public class IntegrationBase { // contractDeployKey.getAddress().toBase58(),321123); txTpl.contract(contractDeployKey.getAddress(),AssetContract2.class).issue(byteObj, dataKey.getAddress().toBase58(),Bytes.fromString("123321")); -// txTpl.contract(contractDeployKey.getAddress(),AssetContract2.class).issue(byteObj,dataKey.getAddress().toBase58(),123456); // 签名; PreparedTransaction ptx = txTpl.prepare(); @@ -507,6 +509,34 @@ public class IntegrationBase { assertEquals("100",kvDataEntries[0].getValue().toString()); } + private static void testContractExe1(AsymmetricKeypair adminKey, HashDigest ledgerHash, BlockchainKeypair dataKey, + BlockchainService blockchainService,LedgerRepository ledgerRepository) { + LedgerInfo ledgerInfo = blockchainService.getLedger(ledgerHash); + LedgerBlock previousBlock = blockchainService.getBlock(ledgerHash, ledgerInfo.getLatestBlockHeight() - 1); + + // 定义交易; + TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash); + + AssetContract2 assetContract = txTpl.contract(contractDeployKey.getAddress(), AssetContract2.class); + ContractBizContent contractBizContent = () -> new String[]{"param1","param2"}; + assetContract.issue(contractBizContent,dataKey.getAddress().toBase58(),123456); + + // 签名; + PreparedTransaction ptx = txTpl.prepare(); + ptx.sign(adminKey); + + // 提交并等待共识返回; + TransactionResponse txResp = ptx.commit(); + + // 验证结果; + Assert.assertTrue(txResp.isSuccess()); + assertEquals(ptx.getHash(),txResp.getContentHash()); + LedgerBlock block = ledgerRepository.getBlock(txResp.getBlockHeight()); + KVDataEntry[] kvDataEntries = ledgerRepository.getDataAccountSet(block).getDataAccount(dataKey.getAddress()).getDataEntries(1,2); + assertEquals("value1",kvDataEntries[0].getValue().toString()); + assertEquals(888L,kvDataEntries[1].getValue()); + } + /** * 根据合约构建字节数组; * diff --git a/source/test/test-integration/src/test/resources/contract.jar b/source/test/test-integration/src/test/resources/contract.jar index 3f21f9b3..7c172d0e 100644 Binary files a/source/test/test-integration/src/test/resources/contract.jar and b/source/test/test-integration/src/test/resources/contract.jar differ