private SubscriptionInfo ParseSubscriptionInfo(MonitoringMessage.PersistentSubscriptionInfo input) { var connectionInfo = new List <SubscriptionInfo.Types.ConnectionInfo>(); foreach (var conn in input.Connections) { var connInfo = new SubscriptionInfo.Types.ConnectionInfo { From = conn.From, Username = conn.Username, AverageItemsPerSecond = conn.AverageItemsPerSecond, TotalItems = conn.TotalItems, CountSinceLastMeasurement = conn.CountSinceLastMeasurement, AvailableSlots = conn.AvailableSlots, InFlightMessages = conn.InFlightMessages, ConnectionName = conn.ConnectionName }; connInfo.ObservedMeasurements.AddRange( conn.ObservedMeasurements.Select(x => new SubscriptionInfo.Types.Measurement { Key = x.Key, Value = x.Value })); connectionInfo.Add(connInfo); } var subscriptionInfo = new SubscriptionInfo { EventSource = input.EventSource, GroupName = input.GroupName, Status = input.Status, AveragePerSecond = input.AveragePerSecond, TotalItems = input.TotalItems, CountSinceLastMeasurement = input.CountSinceLastMeasurement, LastCheckpointedEventPosition = input.LastCheckpointedEventPosition ?? string.Empty, LastKnownEventPosition = input.LastKnownEventPosition ?? string.Empty, ResolveLinkTos = input.ResolveLinktos, StartFrom = input.StartFrom, MessageTimeoutMilliseconds = input.MessageTimeoutMilliseconds, ExtraStatistics = input.ExtraStatistics, MaxRetryCount = input.MaxRetryCount, LiveBufferSize = input.LiveBufferSize, BufferSize = input.BufferSize, ReadBatchSize = input.ReadBatchSize, CheckPointAfterMilliseconds = input.CheckPointAfterMilliseconds, MinCheckPointCount = input.MinCheckPointCount, MaxCheckPointCount = input.MaxCheckPointCount, ReadBufferCount = input.ReadBufferCount, LiveBufferCount = input.LiveBufferCount, RetryBufferCount = input.RetryBufferCount, TotalInFlightMessages = input.TotalInFlightMessages, OutstandingMessagesCount = input.OutstandingMessagesCount, NamedConsumerStrategy = input.NamedConsumerStrategy, MaxSubscriberCount = input.MaxSubscriberCount, ParkedMessageCount = input.ParkedMessageCount, }; subscriptionInfo.Connections.AddRange(connectionInfo); return(subscriptionInfo); }
protected override async Task Given() { _persistentSubscriptionsClient = new PersistentSubscriptions.PersistentSubscriptionsClient(Channel); var settings = WithoutExtraStatistics(TestPersistentSubscriptionSettings); await _persistentSubscriptionsClient.CreateAsync(new CreateReq { Options = new CreateReq.Types.Options { GroupName = _groupName, Stream = new CreateReq.Types.StreamOptions { Start = new Empty(), StreamIdentifier = new StreamIdentifier { StreamName = ByteString.CopyFromUtf8(_streamName) } }, Settings = settings } }, GetCallOptions(AdminCredentials)); // create a connection to the persistent subscription var call = _persistentSubscriptionsClient.Read(GetCallOptions(AdminCredentials)); await call.RequestStream.WriteAsync(new ReadReq { Options = new ReadReq.Types.Options { GroupName = _groupName, StreamIdentifier = new StreamIdentifier { StreamName = ByteString.CopyFromUtf8(_streamName) }, UuidOption = new ReadReq.Types.Options.Types.UUIDOption { Structured = new Empty() }, BufferSize = 10 } }); await call.ResponseStream.MoveNext().ConfigureAwait(false); Assert.IsTrue(call.ResponseStream.Current.ContentCase == ReadResp.ContentOneofCase.SubscriptionConfirmation); var expectedConnection = new SubscriptionInfo.Types.ConnectionInfo() { Username = "******", AvailableSlots = 10, ConnectionName = "\u003cunknown\u003e" }; _expectedSubscriptionInfo = GetSubscriptionInfoFromSettings(settings, _groupName, _streamName, "0", string.Empty, new [] { expectedConnection }); }