public void GetObjectFromBytes_GetBytesFromObject_WithByteArray() { byte[] data = new byte[1]; data[0] = 0; byte[] serializedData = RedisUtility.GetBytesFromObject(data); Assert.NotNull(serializedData); byte[] deserializedData = (byte[])RedisUtility.GetObjectFromBytes(serializedData); Assert.NotNull(deserializedData); Assert.Equal(deserializedData.Length, data.Length); Assert.Equal(data[0], deserializedData[0]); }
public void Set_ValidData() { // this also tests host:port config part ProviderConfiguration pc = Utility.GetDefaultConfigUtility(); pc.ApplicationName = "APPTEST"; pc.Port = 6379; using (RedisServer redisServer = new RedisServer()) { RedisConnectionWrapper redisConn = GetRedisConnectionWrapperWithUniqueSession(pc); // Inserting data into redis server ChangeTrackingSessionStateItemCollection data = new ChangeTrackingSessionStateItemCollection(new RedisUtility(pc)); data["key"] = "value"; data["key1"] = "value1"; redisConn.Set(data, 900); // Get actual connection and get data blob from redis IDatabase actualConnection = GetRealRedisConnection(redisConn); HashEntry[] sessionDataFromRedis = actualConnection.HashGetAll(redisConn.Keys.DataKey); // Check that data shoud be same as what inserted Assert.Equal(2, sessionDataFromRedis.Length); ChangeTrackingSessionStateItemCollection dataFromRedis = new ChangeTrackingSessionStateItemCollection(new RedisUtility(pc)); foreach (HashEntry entry in sessionDataFromRedis) { dataFromRedis[entry.Name] = RedisUtility.GetObjectFromBytes(entry.Value).ToString(); } Assert.Equal("value", dataFromRedis["key"]); Assert.Equal("value1", dataFromRedis["key1"]); // remove data from redis actualConnection.KeyDelete(redisConn.Keys.DataKey); DisposeRedisConnectionWrapper(redisConn); } }
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 TryUpdateIfLockIdMatch_WithOnlyUpdateAndNoDelete() { using (RedisServer redisServer = new RedisServer()) { RedisConnectionWrapper redisConn = GetRedisConnectionWrapperWithUniqueSession(); // Inserting data into redis server ChangeTrackingSessionStateItemCollection data = new ChangeTrackingSessionStateItemCollection(); data["key1"] = "value1"; data["key2"] = "value2"; data["key3"] = "value3"; redisConn.Set(data, 900); int lockTimeout = 900; DateTime lockTime = DateTime.Now; object lockId; ISessionStateItemCollection dataFromRedis; int sessionTimeout; Assert.True(redisConn.TryTakeWriteLockAndGetData(lockTime, lockTimeout, out lockId, out dataFromRedis, out sessionTimeout)); Assert.Equal(lockTime.Ticks.ToString(), lockId.ToString()); Assert.Equal(3, dataFromRedis.Count); Assert.Equal("value1", dataFromRedis["key1"]); Assert.Equal("value2", dataFromRedis["key2"]); Assert.Equal("value3", dataFromRedis["key3"]); dataFromRedis["key2"] = "value2-updated"; redisConn.TryUpdateAndReleaseLockIfLockIdMatch(lockId, dataFromRedis, 900); // Get actual connection and get data from redis IDatabase actualConnection = GetRealRedisConnection(redisConn); HashEntry[] sessionDataFromRedis = actualConnection.HashGetAll(redisConn.Keys.DataKey); Assert.Equal(3, sessionDataFromRedis.Length); ChangeTrackingSessionStateItemCollection sessionDataFromRedisAsCollection = new ChangeTrackingSessionStateItemCollection(); foreach (HashEntry entry in sessionDataFromRedis) { sessionDataFromRedisAsCollection[entry.Name] = RedisUtility.GetObjectFromBytes(entry.Value).ToString(); } Assert.Equal("value1", sessionDataFromRedisAsCollection["key1"]); Assert.Equal("value2-updated", sessionDataFromRedisAsCollection["key2"]); Assert.Equal("value3", sessionDataFromRedisAsCollection["key3"]); // check lock removed and remove data from redis actualConnection.KeyDelete(redisConn.Keys.DataKey); Assert.False(actualConnection.KeyExists(redisConn.Keys.LockKey)); DisposeRedisConnectionWrapper(redisConn); } }
public void GetObjectFromBytes_WithNullObject() { Assert.Equal(null, RedisUtility.GetObjectFromBytes(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); }
public void Set_ValidData_WithCustomSerializer() { // this also tests host:port config part ProviderConfiguration pc = Utility.GetDefaultConfigUtility(); pc.RedisSerializerType = typeof(TestSerializer).AssemblyQualifiedName; pc.ApplicationName = "APPTEST"; pc.Port = 6379; RedisUtility testSerializerRedisUtility = new RedisUtility(pc); using (RedisServer redisServer = new RedisServer()) { RedisConnectionWrapper redisConn = GetRedisConnectionWrapperWithUniqueSession(pc); // Inserting data into redis server ChangeTrackingSessionStateItemCollection data = new ChangeTrackingSessionStateItemCollection(); data["key"] = "value"; data["key1"] = "value1"; redisConn.Set(data, 900); // Get actual connection and get data blob from redis IDatabase actualConnection = GetRealRedisConnection(redisConn); HashEntry[] sessionDataFromRedis = actualConnection.HashGetAll(redisConn.Keys.DataKey); // Check that data shoud be same as what inserted Assert.Equal(2, sessionDataFromRedis.Length); ChangeTrackingSessionStateItemCollection dataFromRedis = new ChangeTrackingSessionStateItemCollection(); foreach (HashEntry entry in sessionDataFromRedis) { dataFromRedis[entry.Name] = testSerializerRedisUtility.GetObjectFromBytes(entry.Value).ToString(); } Assert.Equal("value", dataFromRedis["key"]); Assert.Equal("value1", dataFromRedis["key1"]); // remove data from redis actualConnection.KeyDelete(redisConn.Keys.DataKey); DisposeRedisConnectionWrapper(redisConn); } }