public void append_data_when_set_version_where_does_not_correspond_real_version() { var key = Guid.NewGuid().ToString(); using (var store = new FileAppendOnlyStore(new DirectoryInfo(_storePath))) { store.Initialize(); store.Append(key, Encoding.UTF8.GetBytes("test message1"), 100); var data = store.ReadRecords(key, -1, 2).ToArray(); CollectionAssert.IsEmpty(data); } }
public void append_data() { using (var store = new FileAppendOnlyStore(new DirectoryInfo(_storePath))) { store.Initialize(); var currentVersion = store.GetCurrentVersion(); const int messagesCount = 3; for (int i = 0; i < messagesCount; i++) { store.Append("stream1", Encoding.UTF8.GetBytes("test message" + i)); } var data = store.ReadRecords("stream1", currentVersion, Int32.MaxValue).ToArray(); for (int i = 0; i < messagesCount; i++) { Assert.AreEqual("test message" + i, Encoding.UTF8.GetString(data[i].Data)); } Assert.AreEqual(messagesCount, data.Length); } }
public void load_cache() { CreateCacheFiles(); using (var store = new FileAppendOnlyStore(new DirectoryInfo(_storePath))) { store.LoadCaches(); for (int j = 0; j < DataFileCount; j++) { var key = "test-key" + j; var data = store.ReadRecords(key, -1, Int32.MaxValue); int i = 0; foreach (var dataWithKey in data) { Assert.AreEqual("test messages" + i, Encoding.UTF8.GetString(dataWithKey.Data)); i++; } Assert.AreEqual(FileMessagesCount, i); } } }
public void read_store_records_after_version() { var stream = Guid.NewGuid().ToString(); using (var store = new FileAppendOnlyStore(new DirectoryInfo(_storePath))) { store.Initialize(); var currentVersion = store.GetCurrentVersion(); for (int i = 0; i < 2; i++) store.Append(stream, Encoding.UTF8.GetBytes("test message" + i)); var records = store.ReadRecords(currentVersion+1, Int32.MaxValue).ToArray(); Assert.AreEqual(1, records.Length); Assert.AreEqual("test message1" , Encoding.UTF8.GetString(records[0].Data)); Assert.AreEqual(2, records[0].StreamVersion); Assert.AreEqual(currentVersion+2, records[0].StoreVersion); } }
public void read_all_records_by_stream() { var stream = Guid.NewGuid().ToString(); using (var store = new FileAppendOnlyStore(new DirectoryInfo(_storePath))) { store.Initialize(); for (int i = 0; i < 2; i++) store.Append(stream, Encoding.UTF8.GetBytes("test message" + i)); var records = store.ReadRecords(stream, -1, Int32.MaxValue).ToArray(); Assert.AreEqual(2, records.Length); for (int i = 0; i < 2; i++) { Assert.AreEqual("test message" + i, Encoding.UTF8.GetString(records[i].Data)); Assert.AreEqual(i + 1, records[i].StreamVersion); } } }
public void load_cache_when_incorrect_data_file() { var currentPath = Path.Combine(_storePath, "EmptyCache"); Directory.CreateDirectory(currentPath); var store = new FileAppendOnlyStore(new DirectoryInfo(currentPath)); //write frame using (var stream = new FileStream(Path.Combine(currentPath, "0.dat"), FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite)) StorageFramesEvil.WriteFrame("test-key", 0, Encoding.UTF8.GetBytes("test message"), stream); //write incorrect frame using (var sw = new StreamWriter(Path.Combine(currentPath, "1.dat"))) sw.Write("incorrect frame data"); store.LoadCaches(); var data = store.ReadRecords(0, Int32.MaxValue).ToArray(); Assert.AreEqual(1, data.Length); Assert.AreEqual("test-key", data[0].Key); Assert.AreEqual(0, data[0].StreamVersion); Assert.AreEqual("test message", Encoding.UTF8.GetString(data[0].Data)); Assert.IsTrue(File.Exists(Path.Combine(currentPath, "1.dat"))); }