Commit dccca67c authored by Marc Gravell's avatar Marc Gravell

SetUnion / SetDelete : don't recreate the data if it exists and looks viable

parent 74b1ce0a
......@@ -27,13 +27,16 @@ public async Task SetMembers()
var key = Me();
const int count = (int)5e6;
var len = await db.SetLengthAsync(key);
conn.Wait(db.KeyDeleteAsync(key));
if (len != count)
{
await db.KeyDeleteAsync(key);
foreach (var _ in Enumerable.Range(0, count))
db.SetAdd(key, Guid.NewGuid().ToByteArray(), CommandFlags.FireAndForget);
Assert.Equal(count, db.SetLengthAsync(key).Result); // SCARD for set
Assert.Equal(count, await db.SetLengthAsync(key)); // SCARD for set
}
var result = await db.SetMembersAsync(key);
Assert.Equal(count, result.Length); // SMEMBERS result length
}
......@@ -50,19 +53,26 @@ public async Task SetUnion()
var key2 = Me() + ":2";
var dstkey = Me() + ":dst";
const int count = (int)5e6;
var len1 = await db.SetLengthAsync(key1);
var len2 = await db.SetLengthAsync(key2);
await db.KeyDeleteAsync(dstkey);
if (len1 != count || len2 != count)
{
await db.KeyDeleteAsync(key1);
await db.KeyDeleteAsync(key2);
await db.KeyDeleteAsync(dstkey);
const int count = (int)5e6;
foreach (var _ in Enumerable.Range(0, count))
{
db.SetAdd(key1, Guid.NewGuid().ToByteArray(), CommandFlags.FireAndForget);
db.SetAdd(key2, Guid.NewGuid().ToByteArray(), CommandFlags.FireAndForget);
}
Assert.Equal(count, db.SetLengthAsync(key1).Result); // SCARD for set 1
Assert.Equal(count, db.SetLengthAsync(key2).Result); // SCARD for set 2
Assert.Equal(count, await db.SetLengthAsync(key1)); // SCARD for set 1
Assert.Equal(count, await db.SetLengthAsync(key2)); // SCARD for set 2
}
await db.SetCombineAndStoreAsync(SetOperation.Union, dstkey, key1, key2);
var dstLen = db.SetLength(dstkey);
Assert.Equal(count * 2, dstLen); // SCARD for destination set
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment