protected async Task ReminderSimple() { var reminder = CreateReminder(MakeTestGrainReference(), "foo/bar\\#b_a_z?"); await remindersTable.UpsertRow(reminder); var readReminder = await remindersTable.ReadRow(reminder.GrainRef, reminder.ReminderName); string etagTemp = reminder.ETag = readReminder.ETag; Assert.Equal(JsonConvert.SerializeObject(readReminder), JsonConvert.SerializeObject(reminder)); Assert.NotNull(etagTemp); reminder.ETag = await remindersTable.UpsertRow(reminder); var removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, etagTemp); Assert.False(removeRowRes, "should have failed. Etag is wrong"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, "bla", reminder.ETag); Assert.False(removeRowRes, "should have failed. reminder name is wrong"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.True(removeRowRes, "should have succeeded. Etag is right"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.False(removeRowRes, "should have failed. reminder shouldn't exist"); }
internal async Task ReminderSimple() { var reminder = CreateReminder(MakeTestGrainReference(), "0"); await remindersTable.UpsertRow(reminder); reminder = await remindersTable.ReadRow(reminder.GrainRef, reminder.ReminderName); string etagTemp = reminder.ETag; Assert.IsNotNull(etagTemp); reminder.ETag = await remindersTable.UpsertRow(reminder); var removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, etagTemp); Assert.IsFalse(removeRowRes, "should have failed. Etag is wrong"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, "bla", reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder name is wrong"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsTrue(removeRowRes, "should have succeeded. Etag is right"); removeRowRes = await remindersTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder shouldn't exist"); }
public async Task <IGrainReminder> GetReminder(GrainReference grainRef, string reminderName) { if (logger.IsEnabled(LogLevel.Debug)) { logger.Debug(ErrorCode.RS_GetReminder, "GetReminder: GrainReference={0} ReminderName={1}", grainRef.ToString(), reminderName); } var entry = await reminderTable.ReadRow(grainRef, reminderName); return(entry == null ? null : entry.ToIGrainReminder()); }
internal static async Task ReminderTableTest(IReminderTable reminderTable) { Guid guid = Guid.NewGuid(); var results = await Task.WhenAll(Enumerable.Range(0, 10). Select(x => reminderTable.UpsertRow(CreateReminder(MakeTestGrainReference(guid), "0")))); Assert.AreEqual(results.Distinct().Count(), results.Length); await Task.WhenAll(Enumerable.Range(1, 999).Select(async i => { GrainReference grainRef = MakeTestGrainReference(Guid.NewGuid()); await reminderTable.UpsertRow(CreateReminder(grainRef, i.ToString())); })); var rows = await reminderTable.ReadRows(0, uint.MaxValue); Assert.AreEqual(rows.Reminders.Count, 1000); rows = await reminderTable.ReadRows(0, 0); Assert.AreEqual(rows.Reminders.Count, 1000); var remindersHashes = rows.Reminders.Select(r => r.GrainRef.GetUniformHashCode()).ToArray(); SafeRandom random = new SafeRandom(); await Task.WhenAll(Enumerable.Repeat( TestRemindersHashInterval(reminderTable, (uint)random.Next(), (uint)random.Next(), remindersHashes), 1000)); var reminder = rows.Reminders.First(); var shouldExist = await reminderTable.ReadRow(reminder.GrainRef, reminder.ReminderName); Assert.IsNotNull(shouldExist); string etagTemp = reminder.ETag; reminder.ETag = await reminderTable.UpsertRow(reminder); var removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, etagTemp); Assert.IsFalse(removeRowRes, "should have failed. Etag is wrong"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, "bla", reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder name is wrong"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsTrue(removeRowRes, "should have succeeded. Etag is right"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder shouldn't exist"); }
internal static async Task ReminderTableTest(IReminderTable reminderTable) { Guid guid = Guid.NewGuid(); var results = await Task.WhenAll(Enumerable.Range(0, 10). Select(x => reminderTable.UpsertRow(CreateReminder(MakeTestGrainReference(guid), "0")))); Assert.AreEqual(results.Distinct().Count(), results.Length); await Task.WhenAll(Enumerable.Range(1, 999).Select(async i => { GrainReference grainRef = MakeTestGrainReference(Guid.NewGuid()); await reminderTable.UpsertRow(CreateReminder(grainRef, i.ToString())); })); var rows = await reminderTable.ReadRows(0, uint.MaxValue); Assert.AreEqual(rows.Reminders.Count, 1000); rows = await reminderTable.ReadRows(0, 0); Assert.AreEqual(rows.Reminders.Count, 1000); var remindersHashes = rows.Reminders.Select(r => r.GrainRef.GetUniformHashCode()).ToArray(); SafeRandom random = new SafeRandom(); await Task.WhenAll(Enumerable.Repeat( TestRemindersHashInterval(reminderTable, (uint) random.Next(), (uint) random.Next(), remindersHashes), 1000)); var reminder = rows.Reminders.First(); var shouldExist = await reminderTable.ReadRow(reminder.GrainRef, reminder.ReminderName); Assert.IsNotNull(shouldExist); string etagTemp = reminder.ETag; reminder.ETag = await reminderTable.UpsertRow(reminder); var removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, etagTemp); Assert.IsFalse(removeRowRes, "should have failed. Etag is wrong"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, "bla", reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder name is wrong"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsTrue(removeRowRes, "should have succeeded. Etag is right"); removeRowRes = await reminderTable.RemoveRow(reminder.GrainRef, reminder.ReminderName, reminder.ETag); Assert.IsFalse(removeRowRes, "should have failed. reminder shouldn't exist"); }