Exemple #1
0
        public void Count_AfterLazyDeserialization()
        {
            RedisUtility utility = new RedisUtility(Utility.GetDefaultConfigUtility());
            ChangeTrackingSessionStateItemCollection items = Utility.GetChangeTrackingSessionStateItemCollection();

            items.SetDataWithoutUpdatingModifiedKeys("k1", utility.GetBytesFromObject("v1"));
            items.SetDataWithoutUpdatingModifiedKeys("k2", utility.GetBytesFromObject("v2"));

            Assert.Equal(2, items.Count);
            items["k3"] = "v3";
            Assert.Equal(3, items.Count);
        }
Exemple #2
0
        public void GetObjectFromBytes_WithValidObject()
        {
            Object obj = "hi";

            byte[] data = RedisUtility.GetBytesFromObject(obj);

            Assert.Equal(obj.ToString(), RedisUtility.GetObjectFromBytes(data).ToString());
        }
Exemple #3
0
 public void GetObjectFromBytes_GetBytesFromObject_WithEmptyByteArray()
 {
     byte[] data           = new byte[0];
     byte[] serializedData = RedisUtility.GetBytesFromObject(data);
     Assert.NotNull(serializedData);
     byte[] deserializedData = (byte[])RedisUtility.GetObjectFromBytes(serializedData);
     Assert.NotNull(deserializedData);
     Assert.Equal(deserializedData.Length, data.Length);
 }
Exemple #4
0
        public void GetEnumerator_AfterLazyDeserialization()
        {
            RedisUtility utility = new RedisUtility(Utility.GetDefaultConfigUtility());
            ChangeTrackingSessionStateItemCollection items = Utility.GetChangeTrackingSessionStateItemCollection();

            items.SetDataWithoutUpdatingModifiedKeys("k1", utility.GetBytesFromObject("v1"));
            items.SetDataWithoutUpdatingModifiedKeys("k2", utility.GetBytesFromObject("v2"));

            try
            {
                foreach (string key in items)
                {
                    // read operation should not change value items.Keys
                    var val = items[key];
                }
            }
            catch (System.InvalidOperationException)
            {
                Assert.False(true, "Reading value from collection should not change it");
            }
        }
        public void TryTakeWriteLockAndGetData_Valid()
        {
            string   id          = "session_id";
            DateTime lockTime    = DateTime.Now;
            int      lockTimeout = 90;
            object   lockId;
            ISessionStateItemCollection data;

            object[] sessionData     = { "Key", RedisUtility.GetBytesFromObject("value") };
            object[] returnFromRedis = { lockTime.Ticks.ToString(), sessionData, "15", false };
            ChangeTrackingSessionStateItemCollection sessionDataReturn = new ChangeTrackingSessionStateItemCollection();

            sessionDataReturn["key"] = "value";

            var mockRedisClient = A.Fake <IRedisClientConnection>();

            A.CallTo(() => mockRedisClient.Eval(A <string> .Ignored, A <string[]> .That.Matches(s => s.Length == 3),
                                                A <object[]> .That.Matches(o => o.Length == 2))).Returns(returnFromRedis);
            A.CallTo(() => mockRedisClient.GetLockId(A <object> .Ignored)).Returns(lockTime.Ticks.ToString());
            A.CallTo(() => mockRedisClient.IsLocked(A <object> .Ignored)).Returns(false);
            A.CallTo(() => mockRedisClient.GetSessionData(A <object> .Ignored)).Returns(sessionDataReturn);
            A.CallTo(() => mockRedisClient.GetSessionTimeout(A <object> .Ignored)).Returns(15);

            RedisConnectionWrapper.sharedConnection            = new RedisSharedConnection(null, null);
            RedisConnectionWrapper.sharedConnection.connection = mockRedisClient;
            RedisConnectionWrapper redisConn = new RedisConnectionWrapper(Utility.GetDefaultConfigUtility(), id);

            int sessionTimeout;

            Assert.True(redisConn.TryTakeWriteLockAndGetData(lockTime, lockTimeout, out lockId, out data, out sessionTimeout));
            Assert.Equal(lockTime.Ticks.ToString(), lockId);
            Assert.Equal(1, data.Count);
            Assert.Equal(15, sessionTimeout);
            A.CallTo(() => mockRedisClient.Eval(A <string> .Ignored, A <string[]> .That.Matches(s => s.Length == 3),
                                                A <object[]> .That.Matches(o => o.Length == 2))).MustHaveHappened();
            A.CallTo(() => mockRedisClient.GetLockId(A <object> .Ignored)).MustHaveHappened();
            A.CallTo(() => mockRedisClient.IsLocked(A <object> .Ignored)).MustHaveHappened();
            A.CallTo(() => mockRedisClient.GetSessionData(A <object> .Ignored)).MustHaveHappened();
            A.CallTo(() => mockRedisClient.GetSessionTimeout(A <object> .Ignored)).MustHaveHappened();
        }
        public void GetObjectFromBytes_GetBytesFromObject_CustomSerializer()
        {
            var serTypeName = typeof(TestSerializer).AssemblyQualifiedName;
            var utility     = new RedisUtility(new ProviderConfiguration()
            {
                RedisSerializerType = serTypeName
            });

            var bytes          = utility.GetBytesFromObject("test");
            var obj            = utility.GetObjectFromBytes(bytes);
            var testSerializer = (TestSerializer)utility._serializer;

            Assert.Equal("test", obj);
            Assert.Equal(1, testSerializer.DeserializeCount);
            Assert.Equal(1, testSerializer.SerializeCount);
        }
Exemple #7
0
        public void Dirty_AfterLazyDeserialization()
        {
            RedisUtility utility = new RedisUtility(Utility.GetDefaultConfigUtility());
            ChangeTrackingSessionStateItemCollection items = Utility.GetChangeTrackingSessionStateItemCollection();

            items.SetDataWithoutUpdatingModifiedKeys("Test", utility.GetBytesFromObject("v1"));
            items.Dirty = false;

            Assert.False(items.Dirty);
            // read operation should not change value of Dirty
            var val = items["Test"];

            Assert.False(items.Dirty);

            items["Test"] = "v2";
            Assert.True(items.Dirty);
        }
Exemple #8
0
        public void GetBytesFromObject_WithValidObject()
        {
            Object obj = "hi";

            Assert.NotEqual(null, RedisUtility.GetBytesFromObject(obj));
        }
Exemple #9
0
 public void GetBytesFromObject_WithNullObject()
 {
     Assert.IsType <Byte[]>(RedisUtility.GetBytesFromObject(null));
 }
        public void GetObjectFromBytes_GetBytesFromObject_CustomSerializer()
        {
            var serTypeName = typeof(TestSerializer).AssemblyQualifiedName;
            var utility = new RedisUtility(new ProviderConfiguration() { RedisSerializerType = serTypeName });

            var bytes = utility.GetBytesFromObject("test");
            var obj = utility.GetObjectFromBytes(bytes);
            var testSerializer = (TestSerializer) utility._serializer;
            Assert.Equal("test", obj);
            Assert.Equal(1, testSerializer.DeserializeCount);
            Assert.Equal(1, testSerializer.SerializeCount);
        }