public void TestDeserializeAll()
{
var info = new SystemProfileInfo
{
Abbreviated = "abbreviated",
Client = "client",
Command = new BsonDocument("command", 1),
CursorId = 1,
Duration = TimeSpan.FromMilliseconds(2),
Error = "err",
Exception = "exception",
ExceptionCode = 3,
Exhaust = true,
FastMod = true,
FastModInsert = true,
IdHack = true,
Info = "info",
KeyUpdates = 4,
LockStatistics = new SystemProfileLockStatistics
{
TimeAcquiring = new SystemProfileReadWriteLockStatistics
{
DatabaseReadLock = TimeSpan.FromMilliseconds(10),
DatabaseWriteLock = TimeSpan.FromMilliseconds(20),
GlobalReadLock = TimeSpan.FromMilliseconds(30),
GlobalWriteLock = TimeSpan.FromMilliseconds(40)
},
TimeLocked = new SystemProfileReadWriteLockStatistics
{
DatabaseReadLock = TimeSpan.FromMilliseconds(50),
DatabaseWriteLock = TimeSpan.FromMilliseconds(60),
GlobalReadLock = TimeSpan.FromMilliseconds(70),
GlobalWriteLock = TimeSpan.FromMilliseconds(80)
}
},
Moved = true,
Namespace = "ns",
NumberMoved = 11,
NumberReturned = 5,
NumberScanned = 6,
NumberToReturn = 7,
NumberToSkip = 8,
NumberUpdated = 9,
NumberOfYields = 10,
Op = "op",
Query = new BsonDocument("query", 1),
ResponseLength = 9,
ScanAndOrder = true,
Timestamp = new DateTime(2011, 10, 7, 1, 2, 3, DateTimeKind.Utc),
UpdateObject = new BsonDocument("updateObject", 1),
Upsert = true,
User = "user"
};
var json = info.ToJson(new JsonWriterSettings { Indent = true });
var rehydrated = BsonSerializer.Deserialize<SystemProfileInfo>(json);
Assert.AreEqual(info.Abbreviated, rehydrated.Abbreviated);
Assert.AreEqual(info.Client, rehydrated.Client);
Assert.AreEqual(info.Command, rehydrated.Command);
Assert.AreEqual(info.CursorId, rehydrated.CursorId);
Assert.AreEqual(info.Duration, rehydrated.Duration);
Assert.AreEqual(info.Error, rehydrated.Error);
Assert.AreEqual(info.Exception, rehydrated.Exception);
Assert.AreEqual(info.ExceptionCode, rehydrated.ExceptionCode);
Assert.AreEqual(info.Exhaust, rehydrated.Exhaust);
Assert.AreEqual(info.FastMod, rehydrated.FastMod);
Assert.AreEqual(info.FastModInsert, rehydrated.FastModInsert);
Assert.AreEqual(info.IdHack, rehydrated.IdHack);
Assert.AreEqual(info.Info, rehydrated.Info);
Assert.AreEqual(info.KeyUpdates, rehydrated.KeyUpdates);
Assert.AreEqual(info.LockStatistics.RawDocument, rehydrated.LockStatistics.RawDocument);
Assert.AreEqual(info.LockStatistics.TimeAcquiring.DatabaseReadLock, rehydrated.LockStatistics.TimeAcquiring.DatabaseReadLock);
Assert.AreEqual(info.LockStatistics.TimeAcquiring.DatabaseWriteLock, rehydrated.LockStatistics.TimeAcquiring.DatabaseWriteLock);
Assert.AreEqual(info.LockStatistics.TimeAcquiring.GlobalReadLock, rehydrated.LockStatistics.TimeAcquiring.GlobalReadLock);
Assert.AreEqual(info.LockStatistics.TimeAcquiring.GlobalWriteLock, rehydrated.LockStatistics.TimeAcquiring.GlobalWriteLock);
Assert.AreEqual(info.LockStatistics.TimeLocked.DatabaseReadLock, rehydrated.LockStatistics.TimeLocked.DatabaseReadLock);
Assert.AreEqual(info.LockStatistics.TimeLocked.DatabaseWriteLock, rehydrated.LockStatistics.TimeLocked.DatabaseWriteLock);
Assert.AreEqual(info.LockStatistics.TimeLocked.GlobalReadLock, rehydrated.LockStatistics.TimeLocked.GlobalReadLock);
Assert.AreEqual(info.LockStatistics.TimeLocked.GlobalWriteLock, rehydrated.LockStatistics.TimeLocked.GlobalWriteLock);
Assert.AreEqual(info.Moved, rehydrated.Moved);
Assert.AreEqual(info.Namespace, rehydrated.Namespace);
Assert.AreEqual(info.NumberMoved, rehydrated.NumberMoved);
Assert.AreEqual(info.NumberReturned, rehydrated.NumberReturned);
Assert.AreEqual(info.NumberScanned, rehydrated.NumberScanned);
Assert.AreEqual(info.NumberToReturn, rehydrated.NumberToReturn);
Assert.AreEqual(info.NumberToSkip, rehydrated.NumberToSkip);
Assert.AreEqual(info.NumberUpdated, rehydrated.NumberUpdated);
Assert.AreEqual(info.NumberOfYields, rehydrated.NumberOfYields);
Assert.AreEqual(info.Op, rehydrated.Op);
Assert.AreEqual(info.Query, rehydrated.Query);
Assert.AreEqual(info.ResponseLength, rehydrated.ResponseLength);
Assert.AreEqual(info.ScanAndOrder, rehydrated.ScanAndOrder);
Assert.AreEqual(info.Timestamp, rehydrated.Timestamp);
Assert.AreEqual(info.UpdateObject, rehydrated.UpdateObject);
Assert.AreEqual(info.Upsert, rehydrated.Upsert);
Assert.AreEqual(info.User, rehydrated.User);
}