Search in sources :

Example 16 with BlockInfo

use of io.nem.symbol.sdk.model.blockchain.BlockInfo in project nem2-sdk-java by nemtech.

the class BlockRepositoryIntegrationTest method searchOrderByHeightDesc.

@ParameterizedTest
@EnumSource(RepositoryType.class)
void searchOrderByHeightDesc(RepositoryType type) {
    BlockSearchCriteria criteria = new BlockSearchCriteria();
    criteria.setOrderBy(BlockOrderBy.HEIGHT);
    criteria.setOrder(OrderBy.DESC);
    BlockPaginationStreamer streamer = new BlockPaginationStreamer(getBlockRepository(type));
    List<BlockInfo> blocks = get(streamer.search(criteria).toList().toObservable());
    List<BlockInfo> sorted = blocks.stream().sorted(Comparator.comparing(BlockInfo::getHeight).reversed()).collect(Collectors.toList());
    Assertions.assertEquals(blocks, sorted);
}
Also used : BlockSearchCriteria(io.nem.symbol.sdk.api.BlockSearchCriteria) BlockInfo(io.nem.symbol.sdk.model.blockchain.BlockInfo) BlockPaginationStreamer(io.nem.symbol.sdk.api.BlockPaginationStreamer) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 17 with BlockInfo

use of io.nem.symbol.sdk.model.blockchain.BlockInfo in project nem2-sdk-java by nemtech.

the class BlockRepositoryIntegrationTest method searchUsingOffset.

@ParameterizedTest
@EnumSource(RepositoryType.class)
void searchUsingOffset(RepositoryType type) {
    BlockRepository blockRepository = getBlockRepository(type);
    BlockPaginationStreamer streamer = new BlockPaginationStreamer(blockRepository);
    BlockSearchCriteria criteria = new BlockSearchCriteria();
    criteria.setPageSize(10);
    criteria.setOrderBy(BlockOrderBy.HEIGHT);
    int offsetIndex = 2;
    List<BlockInfo> blocksWithoutOffset = get(streamer.search(criteria).toList().toObservable());
    String offset = blocksWithoutOffset.get(offsetIndex).getHeight().toString();
    criteria.setOffset(offset);
    List<BlockInfo> blockFromOffsets = get(streamer.search(criteria).toList().toObservable());
    List<BlockInfo> expectedList = blocksWithoutOffset.stream().skip(offsetIndex + 1).collect(Collectors.toList());
    // If the block grows when running the last search
    PaginationTester.sameEntities(expectedList, blockFromOffsets.subList(0, expectedList.size()));
}
Also used : BlockRepository(io.nem.symbol.sdk.api.BlockRepository) BlockSearchCriteria(io.nem.symbol.sdk.api.BlockSearchCriteria) BlockInfo(io.nem.symbol.sdk.model.blockchain.BlockInfo) BlockPaginationStreamer(io.nem.symbol.sdk.api.BlockPaginationStreamer) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 18 with BlockInfo

use of io.nem.symbol.sdk.model.blockchain.BlockInfo in project nem2-sdk-java by nemtech.

the class BlockRepositoryIntegrationTest method getBlockByHeight.

@ParameterizedTest
@EnumSource(RepositoryType.class)
void getBlockByHeight(RepositoryType type) {
    BlockInfo blockInfo = get(getBlockRepository(type).getBlockByHeight(BigInteger.valueOf(1)));
    assertEquals(1, blockInfo.getHeight().intValue());
    assertEquals(0, blockInfo.getTimestamp().intValue());
    assertNotEquals(getGenerationHash(), blockInfo.getGenerationHash());
}
Also used : BlockInfo(io.nem.symbol.sdk.model.blockchain.BlockInfo) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 19 with BlockInfo

use of io.nem.symbol.sdk.model.blockchain.BlockInfo in project nem2-sdk-java by nemtech.

the class BlockRepositoryVertxImplTest method shouldGetBlockByHeight.

@Test
public void shouldGetBlockByHeight() throws Exception {
    Address address = Address.generateRandom(this.networkType);
    BlockInfoDTO dto = new BlockInfoDTO();
    BlockMetaDTO metaDTO = new BlockMetaDTO();
    metaDTO.setHash("someHash");
    metaDTO.setTransactionsCount(10);
    metaDTO.setTotalTransactionsCount(5);
    metaDTO.setTransactionsCount(15);
    metaDTO.setGenerationHash("generationHash");
    metaDTO.setStatementsCount(20);
    metaDTO.setStateHashSubCacheMerkleRoots(Arrays.asList("string1", "string2"));
    metaDTO.setTotalFee(BigInteger.valueOf(8));
    dto.setMeta(metaDTO);
    BlockDTO blockDto = new BlockDTO();
    blockDto.setType(BlockType.NORMAL_BLOCK.getValue());
    blockDto.setVersion(3);
    blockDto.setSize(10L);
    blockDto.setNetwork(NetworkTypeEnum.NUMBER_144);
    blockDto.setSignerPublicKey("B630EFDDFADCC4A2077AB8F1EC846B08FEE2D2972EACF95BBAC6BFAC3D31834C");
    blockDto.setBeneficiaryAddress(address.encoded());
    blockDto.setHeight(BigInteger.valueOf(9));
    dto.setBlock(blockDto);
    mockRemoteCall(dto);
    BigInteger height = BigInteger.valueOf(10L);
    BlockInfo info = repository.getBlockByHeight(height).toFuture().get();
    Assertions.assertNotNull(info);
    Assertions.assertEquals(blockDto.getBeneficiaryAddress(), info.getBeneficiaryAddress().encoded());
    Assertions.assertEquals(blockDto.getSignerPublicKey(), info.getSignerPublicAccount().getPublicKey().toHex());
    Assertions.assertEquals(BlockType.NORMAL_BLOCK, info.getType());
    Assertions.assertEquals(10, info.getSize());
    Assertions.assertEquals(3, info.getVersion().intValue());
    Assertions.assertEquals(NetworkType.MIJIN_TEST, info.getNetworkType());
    Assertions.assertEquals(BigInteger.valueOf(9L), info.getHeight());
    Assertions.assertEquals(metaDTO.getHash(), info.getHash());
    Assertions.assertEquals(metaDTO.getTotalTransactionsCount(), info.getTotalTransactionsCount());
    Assertions.assertEquals(metaDTO.getTransactionsCount(), info.getTransactionsCount());
    Assertions.assertEquals(metaDTO.getTotalTransactionsCount(), info.getTotalTransactionsCount());
    Assertions.assertEquals(metaDTO.getStatementsCount(), info.getStatementsCount());
    Assertions.assertEquals(metaDTO.getGenerationHash(), info.getGenerationHash());
    Assertions.assertEquals(metaDTO.getStateHashSubCacheMerkleRoots(), info.getSubCacheMerkleRoots());
    Assertions.assertEquals(metaDTO.getTotalFee(), info.getTotalFee());
    Assertions.assertEquals(blockDto.getHeight(), info.getHeight());
    Assertions.assertEquals(address, info.getBeneficiaryAddress());
}
Also used : BlockMetaDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockMetaDTO) Address(io.nem.symbol.sdk.model.account.Address) BlockInfoDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockInfoDTO) BlockInfo(io.nem.symbol.sdk.model.blockchain.BlockInfo) ImportanceBlockInfo(io.nem.symbol.sdk.model.blockchain.ImportanceBlockInfo) BigInteger(java.math.BigInteger) BlockDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockDTO) ImportanceBlockDTO(io.nem.symbol.sdk.openapi.vertx.model.ImportanceBlockDTO) Test(org.junit.jupiter.api.Test)

Example 20 with BlockInfo

use of io.nem.symbol.sdk.model.blockchain.BlockInfo in project nem2-sdk-java by nemtech.

the class BlockRepositoryVertxImplTest method shouldGetBlocksByHeightWithLimit.

@Test
public void shouldGetBlocksByHeightWithLimit() throws Exception {
    Address address = Address.generateRandom(this.networkType);
    BlockInfoDTO dto = new BlockInfoDTO();
    BlockMetaDTO metaDTO = new BlockMetaDTO();
    metaDTO.setHash("someHash");
    metaDTO.setTransactionsCount(10);
    metaDTO.setGenerationHash("generationHash");
    metaDTO.setStatementsCount(20);
    metaDTO.setStateHashSubCacheMerkleRoots(Arrays.asList("string1", "string2"));
    metaDTO.setTotalFee(BigInteger.valueOf(8));
    dto.setMeta(metaDTO);
    BlockDTO blockDto = new BlockDTO();
    blockDto.setType(BlockType.NORMAL_BLOCK.getValue());
    blockDto.setVersion(3);
    blockDto.setSignerPublicKey("B630EFDDFADCC4A2077AB8F1EC846B08FEE2D2972EACF95BBAC6BFAC3D31834C");
    blockDto.setBeneficiaryAddress(address.encoded());
    blockDto.setHeight(BigInteger.valueOf(9L));
    blockDto.setNetwork(NetworkTypeEnum.NUMBER_144);
    blockDto.setProofGamma("proofGamma");
    blockDto.setProofScalar("proofScalar");
    blockDto.setProofVerificationHash("proofVerificationHash");
    dto.setBlock(blockDto);
    mockRemoteCall(Collections.singletonList(dto));
    mockRemoteCall(toPage(dto));
    BlockSearchCriteria criteria = new BlockSearchCriteria();
    criteria.offset("abc");
    List<BlockInfo> resolvedList = repository.search(criteria).toFuture().get().getData();
    BlockInfo info = resolvedList.get(0);
    Assertions.assertNotNull(info);
    Assertions.assertEquals(blockDto.getBeneficiaryAddress(), info.getBeneficiaryAddress().encoded());
    Assertions.assertEquals(blockDto.getSignerPublicKey(), info.getSignerPublicAccount().getPublicKey().toHex());
    Assertions.assertEquals(BlockType.NORMAL_BLOCK, info.getType());
    Assertions.assertEquals(3, info.getVersion().intValue());
    Assertions.assertEquals(NetworkType.MIJIN_TEST, info.getNetworkType());
    Assertions.assertEquals(BigInteger.valueOf(9L), info.getHeight());
    Assertions.assertEquals(metaDTO.getHash(), info.getHash());
    Assertions.assertEquals(metaDTO.getGenerationHash(), info.getGenerationHash());
    Assertions.assertEquals(metaDTO.getTransactionsCount(), info.getTransactionsCount());
    Assertions.assertEquals(metaDTO.getStateHashSubCacheMerkleRoots(), info.getSubCacheMerkleRoots());
    Assertions.assertEquals(metaDTO.getTotalFee(), info.getTotalFee());
    Assertions.assertEquals(blockDto.getHeight(), info.getHeight());
    Assertions.assertEquals(blockDto.getProofGamma(), info.getProofGamma());
    Assertions.assertEquals(blockDto.getProofScalar(), info.getProofScalar());
    Assertions.assertEquals(blockDto.getProofVerificationHash(), info.getProofVerificationHash());
    Assertions.assertEquals(address, info.getBeneficiaryAddress());
}
Also used : BlockMetaDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockMetaDTO) BlockSearchCriteria(io.nem.symbol.sdk.api.BlockSearchCriteria) Address(io.nem.symbol.sdk.model.account.Address) BlockInfoDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockInfoDTO) BlockInfo(io.nem.symbol.sdk.model.blockchain.BlockInfo) ImportanceBlockInfo(io.nem.symbol.sdk.model.blockchain.ImportanceBlockInfo) BlockDTO(io.nem.symbol.sdk.openapi.vertx.model.BlockDTO) ImportanceBlockDTO(io.nem.symbol.sdk.openapi.vertx.model.ImportanceBlockDTO) Test(org.junit.jupiter.api.Test)

Aggregations

BlockInfo (io.nem.symbol.sdk.model.blockchain.BlockInfo)24 Test (org.junit.jupiter.api.Test)13 BigInteger (java.math.BigInteger)11 BlockSearchCriteria (io.nem.symbol.sdk.api.BlockSearchCriteria)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)9 EnumSource (org.junit.jupiter.params.provider.EnumSource)9 MerklePathItem (io.nem.symbol.sdk.model.blockchain.MerklePathItem)8 MerkleProofInfo (io.nem.symbol.sdk.model.blockchain.MerkleProofInfo)8 ArrayList (java.util.ArrayList)8 BlockPaginationStreamer (io.nem.symbol.sdk.api.BlockPaginationStreamer)7 Address (io.nem.symbol.sdk.model.account.Address)6 ImportanceBlockInfo (io.nem.symbol.sdk.model.blockchain.ImportanceBlockInfo)6 BlockRepository (io.nem.symbol.sdk.api.BlockRepository)5 ImportanceBlockDTO (io.nem.symbol.sdk.openapi.okhttp_gson.model.ImportanceBlockDTO)3 ImportanceBlockDTO (io.nem.symbol.sdk.openapi.vertx.model.ImportanceBlockDTO)3 PublicKey (io.nem.symbol.core.crypto.PublicKey)2 BlockType (io.nem.symbol.sdk.model.blockchain.BlockType)2 NetworkType (io.nem.symbol.sdk.model.network.NetworkType)2 BlockDTO (io.nem.symbol.sdk.openapi.okhttp_gson.model.BlockDTO)2 BlockInfoDTO (io.nem.symbol.sdk.openapi.okhttp_gson.model.BlockInfoDTO)2