Пример #1
0
        private void SetMatchCriteriaForFunction()
        {
            base.SetMatchCriteria(async transaction =>
            {
                if (await Task.FromResult(transaction.IsTransactionForFunctionMessage <TFunctionMessage>()) == false)
                {
                    return(false);
                }

                if (_criteria == null)
                {
                    return(true);
                }

                var functionCall = new TransactionForFunctionVO <TFunctionMessage>(transaction, transaction.Decode <TFunctionMessage>());

                return(await _criteria(functionCall).ConfigureAwait(false));
            });
        }
        public async Task MapsFunctionDtoToSearchDocument()
        {
            var mockElasticClient = new MockElasticClient();

            var indexer = new ElasticFunctionIndexer <TransferFunction, SearchDocument>("my-index",
                                                                                        mockElasticClient.ElasticClient, (tx) => new SearchDocument(tx));

            TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction();

            await indexer.IndexAsync(transactionForFunction);

            Assert.Single(mockElasticClient.BulkRequests);
            var indexedDoc = mockElasticClient.GetFirstBulkOperation().GetBody() as SearchDocument;

            //check function message mapping
            Assert.Equal(transactionForFunction.Transaction.TransactionHash, indexedDoc.TransactionHash);
            Assert.Equal(transactionForFunction.FunctionMessage.To, indexedDoc.To);
            Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), indexedDoc.Value);
        }
Пример #3
0
        public async Task MapsFunctionDtoToGenericSearchDocument()
        {
            var indexDefinition       = new FunctionIndexDefinition <TransferFunction>();
            var mockSearchIndexClient = new MockElasticClient();

            var indexer = new ElasticFunctionIndexer <TransferFunction>("transfer-functions",
                                                                        mockSearchIndexClient.ElasticClient, indexDefinition);

            TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction();

            await indexer.IndexAsync(transactionForFunction);

            Assert.Single(mockSearchIndexClient.BulkRequests);
            var indexedDoc = mockSearchIndexClient.GetFirstBulkOperation().GetBody() as GenericSearchDocument;

            //check generic mapping
            Assert.Equal(transactionForFunction.Transaction.BlockNumber.ToString(), indexedDoc[PresetSearchFieldName.tx_block_number.ToString()]);
            //check function message mapping
            Assert.Equal(transactionForFunction.FunctionMessage.To, indexedDoc["to"]);
            Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), indexedDoc["value"]);
        }
        public async Task MapsFunctionDtoToSearchDocument()
        {
            var index = new Index();
            var mockSearchIndexClient = new SearchIndexClientMock <SearchDocument>();

            var indexer = new AzureFunctionIndexer <TransferFunction, SearchDocument>(
                mockSearchIndexClient.SearchIndexClient, (tx) => new SearchDocument(tx));

            TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction();

            await indexer.IndexAsync(transactionForFunction);

            Assert.Single(mockSearchIndexClient.IndexedBatches);
            var firstIndexAction = mockSearchIndexClient.IndexedBatches[0].Actions.First();
            var document         = firstIndexAction.Document;

            //check function message mapping
            Assert.Equal(transactionForFunction.Transaction.TransactionHash, document.TransactionHash);
            Assert.Equal(transactionForFunction.FunctionMessage.To, document.To);
            Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), document.Value);
        }
        public static GenericSearchDocument ToGenericElasticSearchDoc <TFunctionMessage>(
            this TransactionForFunctionVO <TFunctionMessage> functionCall,
            FunctionIndexDefinition <TFunctionMessage> indexDefinition) where TFunctionMessage : FunctionMessage, new()
        {
            var dictionary = new GenericSearchDocument();

            foreach (var field in indexDefinition.Fields)
            {
                var val = field.GetTransactionForFunctionValue(functionCall)?.ToElasticSearchFieldValue();
                if (val != null)
                {
                    dictionary.Add(field.Name.ToElasticName(), val);
                }
            }

            var id = indexDefinition.KeyField().GetTransactionForFunctionValue(functionCall);

            dictionary.SetId(id.ToString());

            return(dictionary);
        }
Пример #6
0
        public async Task MapsFunctionDtoToGenericSearchDocument()
        {
            var indexDefinition       = new FunctionIndexDefinition <TransferFunction>();
            var index                 = indexDefinition.ToAzureIndex();
            var mockSearchIndexClient = new SearchIndexClientMock <GenericSearchDocument>();

            var indexer = new AzureFunctionIndexer <TransferFunction>(
                mockSearchIndexClient.SearchIndexClient, indexDefinition);

            TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction();

            await indexer.IndexAsync(transactionForFunction);

            Assert.Single(mockSearchIndexClient.IndexedBatches);
            var firstIndexAction = mockSearchIndexClient.IndexedBatches[0].Actions.First();
            var document         = firstIndexAction.Document;

            //check generic mapping
            Assert.Equal(transactionForFunction.Transaction.BlockNumber.ToString(), document[PresetSearchFieldName.tx_block_number.ToString()]);
            //check function message mapping
            Assert.Equal(transactionForFunction.FunctionMessage.To, document["to"]);
            Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), document["value"]);
        }
Пример #7
0
        protected override Task ExecuteInternalAsync(TransactionReceiptVO value)
        {
            var functionCall = new TransactionForFunctionVO <TFunctionMessage>(value, value.Decode <TFunctionMessage>());

            return(_action(functionCall));
        }
 public TransactionContext(IndexDefinition index, T dto, TransactionReceiptVO tx)
     : base(index)
 {
     FunctionCall = new TransactionForFunctionVO <T>(tx, dto);
     Index        = index;
 }