public void Contains_returns_false_for_expired_entry()
        {
            var set = new ConcurrentExpiringSet <string>();

            set.AddOrUpdate("testKey", DateTime.UtcNow - TimeSpan.FromSeconds(5));
            Assert.False(set.Contains("testKey"), "The set should return false for an expired entry.");
        }
        public void Contains_returns_true_for_valid_entry()
        {
            var set = new ConcurrentExpiringSet <string>();

            set.AddOrUpdate("testKey", DateTime.UtcNow + TimeSpan.FromSeconds(5));
            Assert.True(set.Contains("testKey"), "The set should return true for a valid entry.");
        }
Ejemplo n.º 3
0
 internal MessageReceiver(
     string entityPath,
     MessagingEntityType?entityType,
     ReceiveMode receiveMode,
     ServiceBusConnection serviceBusConnection,
     ICbsTokenProvider cbsTokenProvider,
     RetryPolicy retryPolicy,
     int prefetchCount      = DefaultPrefetchCount,
     string sessionId       = null,
     bool isSessionReceiver = false)
     : base(nameof(MessageReceiver) + StringUtility.GetRandomString(), retryPolicy ?? RetryPolicy.Default)
 {
     this.ReceiveMode                   = receiveMode;
     this.OperationTimeout              = serviceBusConnection.OperationTimeout;
     this.Path                          = entityPath;
     this.EntityType                    = entityType;
     this.ServiceBusConnection          = serviceBusConnection;
     this.CbsTokenProvider              = cbsTokenProvider;
     this.SessionId                     = sessionId;
     this.isSessionReceiver             = isSessionReceiver;
     this.ReceiveLinkManager            = new FaultTolerantAmqpObject <ReceivingAmqpLink>(this.CreateLinkAsync, this.CloseSession);
     this.RequestResponseLinkManager    = new FaultTolerantAmqpObject <RequestResponseAmqpLink>(this.CreateRequestResponseLinkAsync, this.CloseRequestResponseSession);
     this.requestResponseLockedMessages = new ConcurrentExpiringSet <Guid>();
     this.PrefetchCount                 = prefetchCount;
     this.messageReceivePumpSyncLock    = new object();
 }
Ejemplo n.º 4
0
        public void AddOrUpdate_throws_after_close()
        {
            var set = new ConcurrentExpiringSet <string>();

            set.AddOrUpdate("testKey1", DateTime.UtcNow + TimeSpan.FromSeconds(5));
            set.Close();

            Assert.Throws <ObjectDisposedException>(() => set.AddOrUpdate("testKey2", DateTime.UtcNow - TimeSpan.FromSeconds(5)));
        }
Ejemplo n.º 5
0
        public void Close_is_idempotent_and_thread_safe()
        {
            var set = new ConcurrentExpiringSet <string>();

            var ex = Record.Exception(() =>
            {
                set.Close();
                set.Close();
                Parallel.Invoke(() => set.Close(), () => set.Close());
            });

            Assert.Null(ex);
        }
Ejemplo n.º 6
0
 public AmqpMessageReceiver(string entityName, MessagingEntityType entityType, ReceiveMode mode, int prefetchCount, ServiceBusConnection serviceBusConnection, ICbsTokenProvider cbsTokenProvider, string sessionId, bool isSessionReceiver = false)
     : base(mode, serviceBusConnection.OperationTimeout)
 {
     this.entityName                    = entityName;
     this.EntityType                    = entityType;
     this.ServiceBusConnection          = serviceBusConnection;
     this.CbsTokenProvider              = cbsTokenProvider;
     this.sessionId                     = sessionId;
     this.isSessionReceiver             = isSessionReceiver;
     this.ReceiveLinkManager            = new FaultTolerantAmqpObject <ReceivingAmqpLink>(this.CreateLinkAsync, this.CloseSession);
     this.RequestResponseLinkManager    = new FaultTolerantAmqpObject <RequestResponseAmqpLink>(this.CreateRequestResponseLinkAsync, this.CloseRequestResponseSession);
     this.requestResponseLockedMessages = new ConcurrentExpiringSet <Guid>();
     this.PrefetchCount                 = prefetchCount;
 }