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); }
public void GetObjectFromBytes_WithValidObject() { Object obj = "hi"; byte[] data = RedisUtility.GetBytesFromObject(obj); Assert.Equal(obj.ToString(), RedisUtility.GetObjectFromBytes(data).ToString()); }
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); }
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); }
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); }
public void GetBytesFromObject_WithValidObject() { Object obj = "hi"; Assert.NotEqual(null, RedisUtility.GetBytesFromObject(obj)); }
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); }