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);
        }
Beispiel #2
0
            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 });
            }