public void TestJetThreadstatsSubtraction() { var t1 = new JET_THREADSTATS { cPageReferenced = 20, cPageRead = 19, cPagePreread = 18, cPageDirtied = 17, cPageRedirtied = 16, cLogRecord = 15, cbLogRecord = 14, }; var t2 = new JET_THREADSTATS { cPageReferenced = 8, cPageRead = 9, cPagePreread = 10, cPageDirtied = 11, cPageRedirtied = 12, cLogRecord = 13, cbLogRecord = 14, }; JET_THREADSTATS difference = t1 - t2; Assert.AreEqual(12, difference.cPageReferenced); Assert.AreEqual(10, difference.cPageRead); Assert.AreEqual(8, difference.cPagePreread); Assert.AreEqual(6, difference.cPageDirtied); Assert.AreEqual(4, difference.cPageRedirtied); Assert.AreEqual(2, difference.cLogRecord); Assert.AreEqual(0, difference.cbLogRecord); Assert.AreEqual(difference, JET_THREADSTATS.Subtract(t1, t2)); }
public void TestJetThreadstatsToStringPerf() { var t = new JET_THREADSTATS { cPageReferenced = 10, cPageRead = 5, cPagePreread = 4, cPageDirtied = 3, cPageRedirtied = 2, cLogRecord = 1, cbLogRecord = 0, }; // Call the method once to make sure it is compiled. string ignored = t.ToString(); const int N = 100000; EsentStopwatch s = EsentStopwatch.StartNew(); for (int i = 0; i < N; ++i) { ignored = t.ToString(); } s.Stop(); double ms = Math.Max(1, s.Elapsed.Milliseconds); EseInteropTestHelper.ConsoleWriteLine("{0} calls in {1} ({2} ms/call)", N, s.Elapsed, ms / N); }
public void TestJetThreadstatsAddition() { var t1 = new JET_THREADSTATS { cPageReferenced = 1, cPageRead = 2, cPagePreread = 3, cPageDirtied = 4, cPageRedirtied = 5, cLogRecord = 6, cbLogRecord = 7, }; var t2 = new JET_THREADSTATS { cPageReferenced = 8, cPageRead = 9, cPagePreread = 10, cPageDirtied = 11, cPageRedirtied = 12, cLogRecord = 13, cbLogRecord = 14, }; JET_THREADSTATS sum = t1 + t2; Assert.AreEqual(9, sum.cPageReferenced); Assert.AreEqual(11, sum.cPageRead); Assert.AreEqual(13, sum.cPagePreread); Assert.AreEqual(15, sum.cPageDirtied); Assert.AreEqual(17, sum.cPageRedirtied); Assert.AreEqual(19, sum.cLogRecord); Assert.AreEqual(21, sum.cbLogRecord); Assert.AreEqual(sum, JET_THREADSTATS.Add(t1, t2)); }
public void VerifyThreadstatsCanBeSerialized() { var expected = new JET_THREADSTATS { cbLogRecord = 946 }; SerializeAndCompare(expected); }
public void TestCreateSetsMembers() { JET_THREADSTATS actual = JET_THREADSTATS.Create(1, 2, 3, 4, 5, 6, 7); Assert.AreEqual(1, actual.cPageReferenced); Assert.AreEqual(2, actual.cPageRead); Assert.AreEqual(3, actual.cPagePreread); Assert.AreEqual(4, actual.cPageDirtied); Assert.AreEqual(5, actual.cPageRedirtied); Assert.AreEqual(6, actual.cLogRecord); Assert.AreEqual(7, actual.cbLogRecord); }
public void JetGetThreadStats() { if (!EsentVersion.SupportsVistaFeatures) { return; } Api.JetBeginTransaction(this.sesid); Api.JetPrepareUpdate(this.sesid, this.tableid, JET_prep.Insert); byte[] data = new byte[65536]; Api.JetSetColumn(this.sesid, this.tableid, this.columnid, data, data.Length, SetColumnGrbit.None, null); Api.JetUpdate(this.sesid, this.tableid); Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush); this.ResetCache(); JET_THREADSTATS threadstatsBefore; VistaApi.JetGetThreadStats(out threadstatsBefore); Api.JetBeginTransaction(this.sesid); Api.JetMove(this.sesid, this.tableid, JET_Move.First, MoveGrbit.None); byte[] actual = Api.RetrieveColumn(this.sesid, this.tableid, this.columnid); Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush); Api.JetBeginTransaction(this.sesid); Api.JetPrepareUpdate(this.sesid, this.tableid, JET_prep.Insert); data = new byte[65536]; Api.JetSetColumn(this.sesid, this.tableid, this.columnid, data, data.Length, SetColumnGrbit.None, null); Api.JetUpdate(this.sesid, this.tableid); Api.JetMove(this.sesid, this.tableid, JET_Move.Last, MoveGrbit.None); Api.JetPrepareUpdate(this.sesid, this.tableid, JET_prep.Replace); Api.JetSetColumn(this.sesid, this.tableid, this.columnid, data, data.Length, SetColumnGrbit.None, null); Api.JetUpdate(this.sesid, this.tableid); Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush); JET_THREADSTATS threadstatsAfter; VistaApi.JetGetThreadStats(out threadstatsAfter); JET_THREADSTATS threadstats = threadstatsAfter - threadstatsBefore; Assert.AreNotEqual(0, threadstats.cPageReferenced); Assert.AreNotEqual(0, threadstats.cPageRead); ////Assert.AreNotEqual(0, threadstats.cPagePreread); Assert.AreNotEqual(0, threadstats.cPageDirtied); Assert.AreNotEqual(0, threadstats.cPageRedirtied); Assert.AreNotEqual(0, threadstats.cLogRecord); Assert.AreNotEqual(0, threadstats.cbLogRecord); }
public void Setup() { this.native = new NATIVE_THREADSTATS { cPageReferenced = 1, cPageRead = 2, cPagePreread = 3, cPageDirtied = 4, cPageRedirtied = 5, cLogRecord = 6, cbLogRecord = 7, }; this.managed = new JET_THREADSTATS(); this.managed.SetFromNativeThreadstats(this.native); }
public void TestJetThreadstatsToString() { var t = new JET_THREADSTATS { cPageReferenced = 10, cPageRead = 2, cPagePreread = 3, cPageDirtied = 4, cPageRedirtied = 5, cLogRecord = 6, cbLogRecord = 7, }; const string Expected = "10 page references, 2 pages read, 3 pages preread, 4 pages dirtied, 5 pages redirtied, 6 log records, 7 bytes logged"; Assert.AreEqual(Expected, t.ToString()); }
public void TestJetThreadstatsToStringZero() { var t = new JET_THREADSTATS { cPageReferenced = 0, cPageRead = 0, cPagePreread = 0, cPageDirtied = 0, cPageRedirtied = 0, cLogRecord = 0, cbLogRecord = 0, }; const string Expected = "0 page references, 0 pages read, 0 pages preread, 0 pages dirtied, 0 pages redirtied, 0 log records, 0 bytes logged"; Assert.AreEqual(Expected, t.ToString()); }
public void TestJetThreadstatsToStringSingular() { var t = new JET_THREADSTATS { cPageReferenced = 1, cPageRead = 1, cPagePreread = 1, cPageDirtied = 1, cPageRedirtied = 1, cLogRecord = 1, cbLogRecord = 1, }; const string Expected = "1 page reference, 1 page read, 1 page preread, 1 page dirtied, 1 page redirtied, 1 log record, 1 byte logged"; Assert.AreEqual(Expected, t.ToString()); }
/// <summary> /// Retrieves performance information from the database engine for the /// current thread. Multiple calls can be used to collect statistics /// that reflect the activity of the database engine on this thread /// between those calls. /// </summary> /// <param name="threadstats">Returns the thread statistics data.</param> public static void JetGetThreadStats(out JET_THREADSTATS threadstats) { Api.Check(Api.Impl.JetGetThreadStats(out threadstats)); }