public void Store_Read() { string name = TestContext.TestName; ILocalDataStore store = new HierarchicalKeyStore(2); GrainReference reference = GrainReference.FromGrainId(GrainId.NewId()); TestStoreGrainState state = new TestStoreGrainState(); var stateProperties = AsDictionary(state); var keys = GetKeys(name, reference); store.WriteRow(keys, stateProperties, null); Stopwatch sw = new Stopwatch(); sw.Start(); var data = store.ReadRow(keys); TimeSpan readTime = sw.Elapsed; Console.WriteLine("{0} - Read time = {1}", store.GetType().FullName, readTime); Assert.AreEqual(state.A, data["A"], "A"); Assert.AreEqual(state.B, data["B"], "B"); Assert.AreEqual(state.C, data["C"], "C"); }
public void GrainState_Store_WriteRead() { string name = TestContext.TestName; ILocalDataStore store = new HierarchicalKeyStore(2); GrainReference reference = GrainReference.FromGrainId(GrainId.NewId()); var grainState = TestStoreGrainState.NewRandomState(); var state = grainState.State; Stopwatch sw = new Stopwatch(); sw.Start(); IList<Tuple<string, string>> keys = new[] { Tuple.Create("GrainType", name), Tuple.Create("GrainId", reference.GrainId.GetPrimaryKey().ToString("N")) }.ToList(); store.WriteRow(keys, AsDictionary(state), grainState.ETag); TimeSpan writeTime = sw.Elapsed; sw.Restart(); var data = store.ReadRow(keys); TimeSpan readTime = sw.Elapsed; Console.WriteLine("{0} - Write time = {1} Read time = {2}", store.GetType().FullName, writeTime, readTime); Assert.AreEqual(state.A, data["A"], "A"); Assert.AreEqual(state.B, data["B"], "B"); Assert.AreEqual(state.C, data["C"], "C"); }
public void Store_Delete() { string name = TestContext.TestName; ILocalDataStore store = new HierarchicalKeyStore(2); GrainReference reference = GrainReference.FromGrainId(GrainId.NewId()); var data = TestStoreGrainState.NewRandomState(); Console.WriteLine("Using store = {0}", store.GetType().FullName); Stopwatch sw = new Stopwatch(); var keys = GetKeys(name, reference); sw.Restart(); string eTag = store.WriteRow(keys, AsDictionary(data.State), null); Console.WriteLine("Write returned Etag={0} after {1} {2}", eTag, sw.Elapsed, StorageProviderUtils.PrintOneWrite(keys, data, eTag)); sw.Restart(); var storedData = store.ReadRow(keys); Console.WriteLine("Read returned {0} after {1}", StorageProviderUtils.PrintOneWrite(keys, storedData, eTag), sw.Elapsed); Assert.IsNotNull(data, "Should get some data from Read"); sw.Restart(); bool ok = store.DeleteRow(keys, eTag); Assert.IsTrue(ok, "Row deleted OK after {0}. Etag={1} Keys={2}", sw.Elapsed, eTag, StorageProviderUtils.PrintKeys(keys)); sw.Restart(); storedData = store.ReadRow(keys); // Try to re-read after delete Console.WriteLine("Re-Read took {0} and returned {1}", sw.Elapsed, StorageProviderUtils.PrintData(storedData)); Assert.IsNotNull(data, "Should not get null data from Re-Read"); Assert.IsTrue(storedData.Count == 0, "Should get no data from Re-Read but got: {0}", StorageProviderUtils.PrintData(storedData)); sw.Restart(); const string oldEtag = null; eTag = store.WriteRow(keys, storedData, oldEtag); Console.WriteLine("Write for Keys={0} Etag={1} Data={2} returned New Etag={3} after {4}", StorageProviderUtils.PrintKeys(keys), oldEtag, StorageProviderUtils.PrintData(storedData), eTag, sw.Elapsed); sw.Restart(); ok = store.DeleteRow(keys, eTag); Assert.IsTrue(ok, "Row deleted OK after {0}. Etag={1} Keys={2}", sw.Elapsed, eTag, StorageProviderUtils.PrintKeys(keys)); }