async Task RunForChromeDriver(LogSourcePostprocessorInput input) { var reader = (new CD.Reader(postprocessing.TextLogParser, input.CancellationToken)).Read(input.LogFileName, input.ProgressHandler); IPrefixMatcher prefixMatcher = postprocessing.CreatePrefixMatcher(); var matchedMessages = reader.MatchTextPrefixes(prefixMatcher).Multiplex(); var nodeDetectionTokenTask = (new CD.NodeDetectionTokenSource(new CD.ProcessIdDetector(prefixMatcher), prefixMatcher)).GetToken(matchedMessages); var noMessagingEvents = EnumerableAsync.Empty <M.Event[]>(); var serialize = postprocessing.Correlation.CreatePostprocessorOutputBuilder() .SetSameNodeDetectionToken(nodeDetectionTokenTask) .SetTriggersConverter(evtTrigger => TextLogEventTrigger.Make((CD.Message)evtTrigger)) .Build(input); await Task.WhenAll( matchedMessages.Open(), serialize ); }
public static IEnumerableAsync <Adapter> FindAll(string resourceType) { if (resourceType.IsNullOrWhiteSpace()) { return(EnumerableAsync.Empty <Adapter>()); } return(AzureStorageRepository.Connection( azureStorageRepository => { var whereResourceTypeQuery = TableQuery.GenerateFilterCondition("ResourceType", QueryComparisons.Equal, resourceType); var adapterQuery = new TableQuery <AdapterDocument>().Where(whereResourceTypeQuery); return azureStorageRepository .FindAllAsync(adapterQuery) .Select(Convert); })); }
public TResult GetKeys <TResult>( MemberInfo memberInfo, Driver.AzureTableDriverDynamic repository, KeyValuePair <MemberInfo, object>[] queries, Func <IEnumerableAsync <IRefAst>, TResult> onQueriesMatched, Func <TResult> onQueriesDidNotMatch, ILogger logger = default) { if (queries.IsDefaultNullOrEmpty()) { throw new ArgumentException("Exactly one query param is required for StorageLinkAttribute."); } if (queries.Length != 1) { throw new ArgumentException("Exactly one query param is valid for StorageLinkAttribute."); } var tableName = GetLookupTableName(memberInfo); var memberValue = queries.First().Value; var queryMemberInfo = queries.First().Key; var rowKey = queryMemberInfo.StorageComputeRowKey(memberValue, onMissing: () => new RowKeyAttribute()); var partitionKey = queryMemberInfo.StorageComputePartitionKey(memberValue, rowKey, onMissing: () => new RowKeyPrefixAttribute()); return(onQueriesMatched(repository .FindByIdAsync <StorageLookupTable, IEnumerableAsync <IRefAst> >(rowKey, partitionKey, (dictEntity, tableResult) => { var rowAndParitionKeys = dictEntity.rowAndPartitionKeys .NullToEmpty() .Select(rowParitionKeyKvp => rowParitionKeyKvp.Key.AsAstRef(rowParitionKeyKvp.Value)) .AsAsync(); return rowAndParitionKeys; }, () => EnumerableAsync.Empty <IRefAst>(), tableName: tableName) .FoldTask())); }
public IEnumerableAsync <IRefAst> GetKeys(object memberValue, MemberInfo memberInfo, Driver.AzureTableDriverDynamic repository, KeyValuePair <MemberInfo, object>[] queries) { var tableName = GetLookupTableName(memberInfo); var lookupRowKey = ComputeLookupRowKey(memberValue, memberInfo); var lookupPartitionKey = ComputeLookupPartitionKey(memberValue, memberInfo, lookupRowKey); var lookupKey = queries .NullToEmpty() .OrderBy(kvp => kvp.Key.Name) .Aggregate( lookupRowKey.AsAstRef(lookupPartitionKey), (lookupKeyCurrent, kvp) => { var scopings = kvp.Key .GetAttributesInterface <IScope>() .Where(attr => attr.Scope == this.Scope); if (!scopings.Any()) { // TODO: Error here if scope is set? return(lookupKeyCurrent); } var scoping = scopings.First(); return(scoping.MutateReference(lookupKeyCurrent, kvp.Key, kvp.Value)); }); return(repository .FindByIdAsync <StorageLookupTable, IEnumerableAsync <IRefAst> >(lookupKey.RowKey, lookupKey.PartitionKey, (dictEntity) => { var rowAndParitionKeys = dictEntity.rowAndPartitionKeys .NullToEmpty() .Select(rowParitionKeyKvp => rowParitionKeyKvp.Key.AsAstRef(rowParitionKeyKvp.Value)) .AsAsync(); return rowAndParitionKeys; }, () => EnumerableAsync.Empty <IRefAst>(), tableName: tableName) .FoldTask()); }
public IEnumerableAsync <IRefAst> GetKeys(object memberValueObj, MemberInfo memberInfo, Driver.AzureTableDriverDynamic repository, KeyValuePair <MemberInfo, object>[] queries) { if (!queries.IsDefaultNullOrEmpty()) { throw new ArgumentException("Exactly one query param is valid for DateTimeLookupAttribute."); } var memberValue = (DateTime)memberValueObj; var tableName = GetLookupTableName(memberInfo); var lookupRowKey = ComputeLookupKey(memberValue, TimeSpan.FromSeconds(this.Row)); var lookupPartitionKey = ComputeLookupKey(memberValue, TimeSpan.FromSeconds(this.Partition)); return(repository .FindByIdAsync <DateTimeLookupTable, IEnumerableAsync <IRefAst> >(lookupRowKey, lookupPartitionKey, (dictEntity) => { var rowAndParitionKeys = dictEntity.rows .NullToEmpty() .Zip(dictEntity.partitions, (row, partition) => row.AsAstRef(partition)) .AsAsync(); return rowAndParitionKeys; }, () => EnumerableAsync.Empty <IRefAst>(), tableName: tableName) .FoldTask()); }
public IEnumerableAsync <IRefAst> GetKeys(object memberValue, MemberInfo memberInfo, Driver.AzureTableDriverDynamic repository, KeyValuePair <MemberInfo, object>[] queries) { if (!queries.IsDefaultNullOrEmpty()) { throw new ArgumentException("Exactly one query param is valid for StorageLinkAttribute."); } var tableName = GetLookupTableName(memberInfo); var rowKey = memberInfo.StorageComputeRowKey(memberValue, onMissing: () => new RowKeyAttribute()); var partitionKey = memberInfo.StorageComputePartitionKey(memberValue, rowKey, onMissing: () => new RowKeyPrefixAttribute()); return(repository .FindByIdAsync <StorageLookupTable, IEnumerableAsync <IRefAst> >(rowKey, partitionKey, (dictEntity) => { var rowAndParitionKeys = dictEntity.rowAndPartitionKeys .NullToEmpty() .Select(rowParitionKeyKvp => rowParitionKeyKvp.Key.AsAstRef(rowParitionKeyKvp.Value)) .AsAsync(); return rowAndParitionKeys; }, () => EnumerableAsync.Empty <IRefAst>(), tableName: tableName) .FoldTask()); }