Search in sources :

Example 6 with FileID

use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.

the class EntityRecordItemListenerFileTest method fileCreatePersistSystemNegative.

@Test
void fileCreatePersistSystemNegative() {
    entityProperties.getPersist().setFiles(false);
    Transaction transaction = fileCreateTransaction();
    TransactionBody transactionBody = getTransactionBody(transaction);
    FileID fileID = FileID.newBuilder().setShardNum(0).setRealmNum(0).setFileNum(2000).build();
    TransactionRecord record = transactionRecord(transactionBody, fileID);
    parseRecordItemAndCommit(new RecordItem(transaction, record));
    assertAll(() -> assertRowCountOnSuccessNoData(fileID), () -> assertTransactionAndRecord(transactionBody, record), () -> assertFileEntity(transactionBody.getFileCreate(), record.getConsensusTimestamp()));
}
Also used : FileAppendTransactionBody(com.hederahashgraph.api.proto.java.FileAppendTransactionBody) TransactionBody(com.hederahashgraph.api.proto.java.TransactionBody) FileUpdateTransactionBody(com.hederahashgraph.api.proto.java.FileUpdateTransactionBody) FileCreateTransactionBody(com.hederahashgraph.api.proto.java.FileCreateTransactionBody) Transaction(com.hederahashgraph.api.proto.java.Transaction) FileID(com.hederahashgraph.api.proto.java.FileID) TransactionRecord(com.hederahashgraph.api.proto.java.TransactionRecord) RecordItem(com.hedera.mirror.common.domain.transaction.RecordItem) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 7 with FileID

use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.

the class PubSubRecordItemListener method onItem.

@Override
public void onItem(RecordItem recordItem) throws ImporterException {
    TransactionBody body = recordItem.getTransactionBody();
    TransactionRecord txRecord = recordItem.getRecord();
    TransactionType transactionType = TransactionType.of(recordItem.getTransactionType());
    TransactionHandler transactionHandler = transactionHandlerFactory.get(transactionType);
    log.trace("Storing transaction body: {}", () -> Utility.printProtoMessage(body));
    long consensusTimestamp = DomainUtils.timeStampInNanos(txRecord.getConsensusTimestamp());
    EntityId entityId;
    try {
        entityId = transactionHandler.getEntity(recordItem);
    } catch (InvalidEntityException e) {
        // transaction can have invalid topic/contract/file id
        log.warn("Invalid entity encountered for consensusTimestamp {} : {}", consensusTimestamp, e.getMessage());
        entityId = null;
    }
    PubSubMessage pubSubMessage = buildPubSubMessage(consensusTimestamp, entityId, recordItem);
    try {
        sendPubSubMessage(pubSubMessage);
    } catch (Exception e) {
        // greater than that of last correctly sent txn.
        throw new ParserException("Error sending transaction to pubsub", e);
    }
    log.debug("Published transaction : {}", consensusTimestamp);
    if (addressBookService.isAddressBook(entityId)) {
        FileID fileID = null;
        byte[] fileBytes = null;
        if (body.hasFileAppend()) {
            fileID = body.getFileAppend().getFileID();
            fileBytes = body.getFileAppend().getContents().toByteArray();
        } else if (body.hasFileCreate()) {
            fileID = txRecord.getReceipt().getFileID();
            fileBytes = body.getFileCreate().getContents().toByteArray();
        } else if (body.hasFileUpdate()) {
            fileID = body.getFileUpdate().getFileID();
            fileBytes = body.getFileUpdate().getContents().toByteArray();
        }
        FileData fileData = new FileData(consensusTimestamp, fileBytes, EntityId.of(fileID), recordItem.getTransactionType());
        fileDataRepository.save(fileData);
        addressBookService.update(fileData);
    }
}
Also used : ParserException(com.hedera.mirror.importer.exception.ParserException) TransactionType(com.hedera.mirror.common.domain.transaction.TransactionType) InvalidEntityException(com.hedera.mirror.common.exception.InvalidEntityException) MessageTimeoutException(org.springframework.integration.MessageTimeoutException) ParserException(com.hedera.mirror.importer.exception.ParserException) ImporterException(com.hedera.mirror.importer.exception.ImporterException) InvalidEntityException(com.hedera.mirror.common.exception.InvalidEntityException) EntityId(com.hedera.mirror.common.domain.entity.EntityId) TransactionBody(com.hederahashgraph.api.proto.java.TransactionBody) TransactionHandler(com.hedera.mirror.importer.parser.record.transactionhandler.TransactionHandler) PubSubMessage(com.hedera.mirror.importer.parser.domain.PubSubMessage) FileID(com.hederahashgraph.api.proto.java.FileID) TransactionRecord(com.hederahashgraph.api.proto.java.TransactionRecord) FileData(com.hedera.mirror.common.domain.file.FileData)

Example 8 with FileID

use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.

the class NetworkControllerTest method missingFileId.

@Test
void missingFileId() {
    AddressBookQuery query = AddressBookQuery.newBuilder().build();
    reactiveService.getNodes(Mono.just(query)).as(StepVerifier::create).expectErrorSatisfies(t -> assertException(t, Status.Code.INVALID_ARGUMENT, "fileId: must not be null")).verify(Duration.ofSeconds(1L));
}
Also used : FileID(com.hederahashgraph.api.proto.java.FileID) AddressBookQuery(com.hedera.mirror.api.proto.AddressBookQuery) ServiceEndpoint(com.hederahashgraph.api.proto.java.ServiceEndpoint) GrpcClient(net.devh.boot.grpc.client.inject.GrpcClient) StepVerifier(reactor.test.StepVerifier) EntityId(com.hedera.mirror.common.domain.entity.EntityId) GrpcIntegrationTest(com.hedera.mirror.grpc.GrpcIntegrationTest) AddressBook(com.hedera.mirror.common.domain.addressbook.AddressBook) ProtoUtil(com.hedera.mirror.grpc.util.ProtoUtil) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Resource(javax.annotation.Resource) Mono(reactor.core.publisher.Mono) AddressBookEntry(com.hedera.mirror.common.domain.addressbook.AddressBookEntry) ByteString(com.google.protobuf.ByteString) StatusRuntimeException(io.grpc.StatusRuntimeException) InetAddress(java.net.InetAddress) Test(org.junit.jupiter.api.Test) ReactorNetworkServiceGrpc(com.hedera.mirror.api.proto.ReactorNetworkServiceGrpc) Duration(java.time.Duration) DomainBuilder(com.hedera.mirror.common.domain.DomainBuilder) Log4j2(lombok.extern.log4j.Log4j2) NodeAddress(com.hederahashgraph.api.proto.java.NodeAddress) Status(io.grpc.Status) AddressBookQuery(com.hedera.mirror.api.proto.AddressBookQuery) StepVerifier(reactor.test.StepVerifier) GrpcIntegrationTest(com.hedera.mirror.grpc.GrpcIntegrationTest) Test(org.junit.jupiter.api.Test)

Example 9 with FileID

use of com.hederahashgraph.api.proto.java.FileID in project hedera-services by hashgraph.

the class FileSysUndelTransitionLogicTest method givenTxnCtxSysUndeleting.

private void givenTxnCtxSysUndeleting(TargetType type, OldExpiryType expiryType) {
    SystemUndeleteTransactionBody.Builder op = SystemUndeleteTransactionBody.newBuilder();
    FileID id = null;
    switch(type) {
        case VALID:
            op.setFileID(undeleted);
            id = undeleted;
            break;
        case MISSING:
            op.setFileID(missing);
            id = missing;
            break;
        case DELETED:
            op.setFileID(deleted);
            id = deleted;
            break;
    }
    EntityId entity = EntityId.fromGrpcFileId(id);
    switch(expiryType) {
        case NONE:
            given(oldExpiries.containsKey(entity)).willReturn(false);
            given(oldExpiries.get(entity)).willReturn(null);
            break;
        case FUTURE:
            given(oldExpiries.containsKey(entity)).willReturn(true);
            given(oldExpiries.get(entity)).willReturn(oldFutureExpiry);
            break;
        case PAST:
            given(oldExpiries.containsKey(entity)).willReturn(true);
            given(oldExpiries.get(entity)).willReturn(oldPastExpiry);
            break;
    }
    txnId = TransactionID.newBuilder().setTransactionValidStart(MiscUtils.asTimestamp(Instant.ofEpochSecond(Instant.now().getEpochSecond()))).build();
    fileSysUndelTxn = TransactionBody.newBuilder().setTransactionID(txnId).setTransactionValidDuration(Duration.newBuilder().setSeconds(180)).setSystemUndelete(op).build();
    given(accessor.getTxn()).willReturn(fileSysUndelTxn);
    given(txnCtx.accessor()).willReturn(accessor);
    given(txnCtx.consensusTime()).willReturn(Instant.ofEpochSecond(now));
}
Also used : EntityId(com.hedera.services.state.submerkle.EntityId) SystemUndeleteTransactionBody(com.hederahashgraph.api.proto.java.SystemUndeleteTransactionBody) FileID(com.hederahashgraph.api.proto.java.FileID)

Example 10 with FileID

use of com.hederahashgraph.api.proto.java.FileID in project hedera-services by hashgraph.

the class HapiContractCreate method opBodyDef.

@Override
protected Consumer<TransactionBody.Builder> opBodyDef(HapiApiSpec spec) throws Throwable {
    if (!omitAdminKey && !useDeprecatedAdminKey) {
        generateAdminKey(spec);
    }
    if (bytecodeFileFn.isPresent()) {
        bytecodeFile = Optional.of(bytecodeFileFn.get().get());
    }
    if (!bytecodeFile.isPresent()) {
        setBytecodeToDefaultContract(spec);
    }
    Optional<byte[]> params;
    if (explicitHexedParams.isPresent()) {
        params = explicitHexedParams.map(Supplier::get).map(CommonUtils::unhex);
    } else {
        params = abi.isPresent() ? Optional.of(CallTransaction.Function.fromJsonInterface(abi.get()).encodeArguments(args.get())) : Optional.empty();
    }
    FileID bytecodeFileId = TxnUtils.asFileId(bytecodeFile.get(), spec);
    ContractCreateTransactionBody opBody = spec.txns().<ContractCreateTransactionBody, ContractCreateTransactionBody.Builder>body(ContractCreateTransactionBody.class, b -> {
        if (useDeprecatedAdminKey) {
            b.setAdminKey(DEPRECATED_CID_ADMIN_KEY);
        } else if (!omitAdminKey) {
            b.setAdminKey(adminKey);
        }
        b.setFileID(bytecodeFileId);
        autoRenewPeriodSecs.ifPresent(p -> b.setAutoRenewPeriod(Duration.newBuilder().setSeconds(p).build()));
        balance.ifPresent(b::setInitialBalance);
        memo.ifPresent(b::setMemo);
        gas.ifPresent(b::setGas);
        proxy.ifPresent(p -> b.setProxyAccountID(asId(p, spec)));
        params.ifPresent(bytes -> b.setConstructorParameters(ByteString.copyFrom(bytes)));
    });
    return b -> b.setContractCreateInstance(opBody);
}
Also used : Transaction(com.hederahashgraph.api.proto.java.Transaction) SigControl(com.hedera.services.bdd.spec.keys.SigControl) HapiFileCreate(com.hedera.services.bdd.spec.transactions.file.HapiFileCreate) HapiTxnOp(com.hedera.services.bdd.spec.transactions.HapiTxnOp) ContractGetInfoResponse(com.hederahashgraph.api.proto.java.ContractGetInfoResponse) CallTransaction(org.ethereum.core.CallTransaction) HapiContractCall.doGasLookup(com.hedera.services.bdd.spec.transactions.contract.HapiContractCall.doGasLookup) Duration(com.hederahashgraph.api.proto.java.Duration) Function(java.util.function.Function) Supplier(java.util.function.Supplier) HapiSpecRegistry(com.hedera.services.bdd.spec.infrastructure.HapiSpecRegistry) TxnVerbs(com.hedera.services.bdd.spec.transactions.TxnVerbs) ContractID(com.hederahashgraph.api.proto.java.ContractID) OptionalLong(java.util.OptionalLong) TxnUtils.asId(com.hedera.services.bdd.spec.transactions.TxnUtils.asId) TxnUtils(com.hedera.services.bdd.spec.transactions.TxnUtils) TransactionBody(com.hederahashgraph.api.proto.java.TransactionBody) TransactionResponse(com.hederahashgraph.api.proto.java.TransactionResponse) TxnUtils.solidityIdFrom(com.hedera.services.bdd.spec.transactions.TxnUtils.solidityIdFrom) FileID(com.hederahashgraph.api.proto.java.FileID) TxnUtils.equivAccount(com.hedera.services.bdd.spec.transactions.TxnUtils.equivAccount) ResponseCodeEnum(com.hederahashgraph.api.proto.java.ResponseCodeEnum) KeyGenerator(com.hedera.services.bdd.spec.keys.KeyGenerator) MoreObjects(com.google.common.base.MoreObjects) SUCCESS(com.hederahashgraph.api.proto.java.ResponseCodeEnum.SUCCESS) LongConsumer(java.util.function.LongConsumer) ByteString(com.google.protobuf.ByteString) KeyFactory(com.hedera.services.bdd.spec.keys.KeyFactory) Consumer(java.util.function.Consumer) TxnFactory.bannerWith(com.hedera.services.bdd.spec.transactions.TxnFactory.bannerWith) Key(com.hederahashgraph.api.proto.java.Key) List(java.util.List) Logger(org.apache.logging.log4j.Logger) ContractCreateTransactionBody(com.hederahashgraph.api.proto.java.ContractCreateTransactionBody) CommonUtils(com.swirlds.common.CommonUtils) ObjLongConsumer(java.util.function.ObjLongConsumer) HederaFunctionality(com.hederahashgraph.api.proto.java.HederaFunctionality) Optional(java.util.Optional) HapiApiSpec(com.hedera.services.bdd.spec.HapiApiSpec) LogManager(org.apache.logging.log4j.LogManager) ContractCreateTransactionBody(com.hederahashgraph.api.proto.java.ContractCreateTransactionBody) Supplier(java.util.function.Supplier) FileID(com.hederahashgraph.api.proto.java.FileID)

Aggregations

FileID (com.hederahashgraph.api.proto.java.FileID)12 Test (org.junit.jupiter.api.Test)8 TransactionBody (com.hederahashgraph.api.proto.java.TransactionBody)7 Transaction (com.hederahashgraph.api.proto.java.Transaction)6 TransactionRecord (com.hederahashgraph.api.proto.java.TransactionRecord)6 RecordItem (com.hedera.mirror.common.domain.transaction.RecordItem)5 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)5 ByteString (com.google.protobuf.ByteString)3 EntityId (com.hedera.mirror.common.domain.entity.EntityId)3 ContractID (com.hederahashgraph.api.proto.java.ContractID)3 FileAppendTransactionBody (com.hederahashgraph.api.proto.java.FileAppendTransactionBody)3 FileCreateTransactionBody (com.hederahashgraph.api.proto.java.FileCreateTransactionBody)3 FileUpdateTransactionBody (com.hederahashgraph.api.proto.java.FileUpdateTransactionBody)3 ContractCreateTransactionBody (com.hederahashgraph.api.proto.java.ContractCreateTransactionBody)2 Duration (com.hederahashgraph.api.proto.java.Duration)2 ResponseCodeEnum (com.hederahashgraph.api.proto.java.ResponseCodeEnum)2 List (java.util.List)2 Optional (java.util.Optional)2 Consumer (java.util.function.Consumer)2 Resource (javax.annotation.Resource)2