public void AppLogFile_ReadDelete() { string folder = TestFolder; AppLogFile logFile = null; AppLogRecord r; Helper.CreateFolderTree(folder); try { logFile = new AppLogFile(); logFile.Create(folder + "\\test.new", AppLog.DefBufferSize, "my schema", new Version("1.2.3.4")); for (int i = 0; i < 2; i++) { r = new AppLogRecord(); r.Add("Index", i.ToString()); logFile.Write(r); } logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.ReadDelete(); Assert.AreEqual(0, int.Parse((string)r["index"])); r = logFile.Read(); Assert.AreEqual(1, int.Parse((string)r["index"])); Assert.IsNull(logFile.Read()); Assert.IsNull(logFile.Read()); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.Read(); Assert.AreEqual(1, int.Parse((string)r["index"])); logFile.Close(); logFile = null; } finally { if (logFile != null) { logFile.Close(); } } DeleteFolder(folder); }
public void AppLogFile_Peek_DeletedRecords() { string folder = TestFolder; AppLogFile logFile = null; AppLogRecord r; Helper.CreateFolderTree(folder); try { logFile = new AppLogFile(); logFile.Create(folder + "\\test.new", AppLog.DefBufferSize, "my schema", new Version("1.2.3.4")); r = new AppLogRecord(); r.Add("index", "0"); logFile.Write(r); r = new AppLogRecord(); r.Add("index", "1"); logFile.Write(r); r = new AppLogRecord(); r.Add("index", "2"); logFile.Write(r); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.ReadDelete(); Assert.AreEqual("0", (string)r["index"]); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.Peek(); Assert.AreEqual("1", (string)r["index"]); r = logFile.Peek(); Assert.AreEqual("1", (string)r["index"]); r = logFile.Read(); Assert.AreEqual("1", (string)r["index"]); r = logFile.Peek(); Assert.AreEqual("2", (string)r["index"]); r = logFile.ReadDelete(); Assert.AreEqual("2", (string)r["index"]); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.Peek(); Assert.AreEqual("1", (string)r["index"]); r = logFile.Read(); Assert.AreEqual("1", (string)r["index"]); Assert.IsNull(logFile.Peek()); Assert.IsNull(logFile.Read()); logFile.Close(); logFile = null; } finally { if (logFile != null) { logFile.Close(); } } DeleteFolder(folder); }
public void AppLogFile_Position() { string folder = TestFolder; AppLogFile logFile = null; string[] positions; AppLogRecord r; Helper.CreateFolderTree(folder); try { logFile = new AppLogFile(); logFile.Create(folder + "\\test.new", AppLog.DefBufferSize, "my schema", new Version("1.2.3.4")); positions = new string[50]; for (int i = 0; i < positions.Length; i++) { r = new AppLogRecord(); r.Add("Index", i.ToString()); logFile.Write(r); } Assert.AreEqual(50, logFile.WriteCount); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); // Verify that we can seek to all records. for (int i = 0; i < 50; i++) { positions[i] = logFile.Position; r = logFile.Read(); Assert.AreEqual(i, int.Parse((string)r["index"])); } for (int i = 49; i >= 0; i--) { logFile.Position = positions[i]; r = logFile.Read(); Assert.AreEqual(i, int.Parse((string)r["index"])); } // Verify that read after seek to a deleted record // returns the record after the deleted one. logFile.Position = positions[25]; r = logFile.ReadDelete(); Assert.AreEqual(25, int.Parse((string)r["index"])); logFile.Position = positions[25]; r = logFile.ReadDelete(); Assert.AreEqual(26, int.Parse((string)r["index"])); // Verify that seek("END") actually goes to the end logFile.Position = "END"; Assert.IsNull(logFile.Read()); logFile.Close(); logFile = null; } finally { if (logFile != null) { logFile.Close(); } } DeleteFolder(folder); }
public void AppLogFile_ReadDelete_All() { string folder = TestFolder; AppLogFile logFile = null; AppLogRecord r; Helper.CreateFolderTree(folder); try { logFile = new AppLogFile(); logFile.Create(folder + "\\test.new", AppLog.DefBufferSize, "my schema", new Version("1.2.3.4")); for (int i = 0; i < 2; i++) { r = new AppLogRecord(); r.Add("Index", i.ToString()); logFile.Write(r); } logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.ReadDelete(); Assert.AreEqual(0, int.Parse((string)r["index"])); r = logFile.Read(); Assert.AreEqual(1, int.Parse((string)r["index"])); Assert.IsNull(logFile.Read()); Assert.IsNull(logFile.Read()); logFile.Close(); logFile = null; logFile = new AppLogFile(); logFile.Open(folder + "\\test.log", AppLog.DefBufferSize); r = logFile.ReadDelete(); Assert.AreEqual(1, int.Parse((string)r["index"])); logFile.Close(); logFile = null; // Verify that the log file was deleted when all all // records were marked for deletion. Assert.AreEqual(0, Directory.GetFiles(folder, "*.new").Length); Assert.AreEqual(0, Directory.GetFiles(folder, "*.log").Length); } finally { if (logFile != null) { logFile.Close(); } } DeleteFolder(folder); }