Ejemplo n.º 1
0
        public async Task PublishTests(object value)
        {
            var connection = ConfigurationHelper.GetNewConnection();
            var library    = new MemoScriptLibrary(connection);
            var db         = connection.GetDatabase();

            var root       = Guid.NewGuid().ToString().Substring(0, 8);
            var key        = new MemoKey(root, "key", TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
            var parameters = new MemoSetValueParameters(key, RedisValue.Unbox(value));

            try
            {
                await ResetKeys(db, parameters);

                var message = RedisValue.Null;
                await connection.GetSubscriber().SubscribeAsync(parameters.MemoChannelKey, (c, v) => message = v);

                await library.PublishAsync(parameters);

                await Task.Delay(500);

                var expectedValue = value == null ? RedisValue.EmptyString : RedisValue.Unbox(value);
                Assert.Equal(expectedValue, message);
                Assert.Equal(expectedValue, await db.StringGetAsync(parameters.MemoKey));
            }
            finally
            {
                await ResetKeys(db, parameters);
            }
        }
Ejemplo n.º 2
0
 private Task ResetKeys(IDatabase db, MemoSetValueParameters parameters)
 => db.KeyDeleteAsync(new RedisKey[] { parameters.MemoKey, parameters.MemoChannelKey });
Ejemplo n.º 3
0
 public async Task PublishAsync(MemoSetValueParameters parameters)
 => await(await SetAndPublish.Value.ConfigureAwait(false))
 .EvaluateAsync(_connectionMultiplexer.GetDatabase(), parameters, flags: CommandFlags.FireAndForget).ConfigureAwait(false);