Пример #1
0
        public void SerializeDeserializeLogMessage_KnownTypes()
        {
            var ser = new BSONSerializer();//notice no resolver

            var msg = new NFX.Log.Message
            {
                Type              = MessageType.DebugGlue,
                TimeStamp         = App.TimeSource.UTCNow,
                Channel           = "MTV",
                From              = "Zhaba",
                Topic             = "App",
                Text              = "Hello text",
                Source            = 12345,
                Parameters        = "aaaaa",
                ArchiveDimensions = "a=1 b=2"
            };

            var doc = ser.Serialize(msg, new BSONParentKnownTypes(typeof(Message)));

            Console.WriteLine(doc.ToJSON(JSONWritingOptions.PrettyPrint));

            Aver.IsFalse(doc.IndexOfName(ser.TypeIDFieldName) >= 0); //field was NOT added as the root type is known

            var got = new NFX.Log.Message();                         //pre-allocate before deserialize, as __t was not emitted

            Aver.IsNotNull(ser.Deserialize(doc, result: got) as NFX.Log.Message);
            testMsgEquWoError(msg, got);
        }
Пример #2
0
        public void SerializeDeserializeLogMessage_withNestedException()
        {
            var ser = new BSONSerializer(new BSONTypeResolver(typeof(Message)));

            var msg = new NFX.Log.Message
            {
                Type              = MessageType.DebugGlue,
                TimeStamp         = App.TimeSource.UTCNow,
                Channel           = "MTV",
                From              = "Zhaba",
                Topic             = "App",
                Text              = "Hello text in Chinese: 中原千军逐蒋",
                Source            = 0,
                Parameters        = new string('a', 128000),
                ArchiveDimensions = "a=1 b=2",
                Exception         = WrappedException.ForException(new Exception("It is an error!!!", new Exception("Inside")))
            };

            var doc = ser.Serialize(msg);

            Console.WriteLine(doc.ToJSON(JSONWritingOptions.PrettyPrint));

            var got = ser.Deserialize(doc) as NFX.Log.Message;

            testMsgEquWoError(msg, got);

            Aver.IsTrue(got.Exception is WrappedException);
            Aver.AreEqual(msg.Exception.Message, got.Exception.Message);
            Aver.AreEqual(((WrappedException)msg.Exception).Wrapped.Message, ((WrappedException)got.Exception).Wrapped.Message);
            Aver.IsNotNull(((WrappedException)msg.Exception).Wrapped.InnerException);

            Aver.AreEqual(((WrappedException)msg.Exception).Wrapped.InnerException.Message, ((WrappedException)got.Exception).Wrapped.InnerException.Message);
        }
        public void SerializeDeserializeLogMessage_withException()
        {
            var ser = new BSONSerializer(new BSONTypeResolver(typeof(Message)));

            var msg = new Azos.Log.Message
            {
                Type              = MessageType.DebugGlue,
                UTCTimeStamp      = Ambient.UTCNow,
                Channel           = "MTV",
                From              = "Zhaba",
                Topic             = "App",
                Text              = "Hello text",
                Source            = 12345,
                Parameters        = "aaaaa",
                ArchiveDimensions = "a=1 b=2",
                Exception         = WrappedException.ForException(new Exception("It is an error!!!"))
            };

            var doc = ser.Serialize(msg);

            Console.WriteLine(doc.ToJSON(JSONWritingOptions.PrettyPrint));

            var got = ser.Deserialize(doc) as Azos.Log.Message;

            testMsgEquWoError(msg, got);

            Aver.IsTrue(got.Exception is WrappedException);
            Aver.AreEqual(msg.Exception.Message, got.Exception.Message);
            Aver.AreEqual(((WrappedException)msg.Exception).Wrapped.Message, ((WrappedException)got.Exception).Wrapped.Message);
        }
Пример #4
0
        public void SerializeDeserializeLogMessage()
        {
            var ser = new BSONSerializer(new BSONTypeResolver(typeof(Message)));

            var msg = new NFX.Log.Message
            {
                Type              = MessageType.DebugGlue,
                TimeStamp         = App.TimeSource.UTCNow,
                Channel           = "MTV",
                From              = "Zhaba",
                Topic             = "App",
                Text              = "Hello text",
                Source            = 12345,
                Parameters        = "aaaaa",
                ArchiveDimensions = "a=1 b=2"
            };

            var doc = ser.Serialize(msg);

            Console.WriteLine(doc.ToJSON(JSONWritingOptions.PrettyPrint));


            Aver.IsTrue(doc.IndexOfName(ser.TypeIDFieldName) >= 0);//field was added

            var got = ser.Deserialize(doc) as NFX.Log.Message;

            testMsgEquWoError(msg, got);
        }
Пример #5
0
        public static WrappedException MakeFromBSON(BSONSerializer serializer, BSONDocument doc)
        {
            var wrp    = doc["wrp"] as BSONDocumentElement;
            var result = wrp == null ? new WrappedException() : new WrappedException(wrp.Value.TryGetObjectValueOf("msg").AsString());

            serializer.Deserialize(doc, result);
            return(result);
        }
Пример #6
0
        public void DeserializeFromBSON(BSONSerializer serializer, BSONDocument doc, ref object context)
        {
            var iv = doc["wrp"] as BSONDocumentElement;

            if (iv == null)
            {
                return;
            }

            m_Wrapped = new WrappedExceptionData();
            serializer.Deserialize(iv.Value, m_Wrapped);
        }
Пример #7
0
        public override bool TryGetByID(Guid id, out Message message, Atom channel)
        {
            var query = new Query(
                @"{ '$query': { {0}: '$$id' } }".Args(m_Serializer.PKFieldName), true,
                new TemplateArg(new BSONBinaryElement("id", new BSONBinary(BSONBinaryType.UUID, id.ToByteArray()))));

            if (channel.IsZero)
            {
                channel = m_DefaultChannel;
            }

            message = new Message();
            var doc = m_Database[channel.Value].FindOne(query);

            if (doc == null)
            {
                return(false);
            }

            m_Serializer.Deserialize(doc, message);
            return(true);
        }
Пример #8
0
        public void DeserializeFromBSON(BSONSerializer serializer, BSONDocument doc, ref object context)
        {
            m_TypeName        = doc.TryGetObjectValueOf("tname").AsString();
            m_Message         = doc.TryGetObjectValueOf("msg").AsString();
            m_Code            = doc.TryGetObjectValueOf("code").AsInt();
            m_ApplicationName = doc.TryGetObjectValueOf("app").AsString();
            m_Source          = doc.TryGetObjectValueOf("src").AsString();
            m_StackTrace      = doc.TryGetObjectValueOf("trace").AsString();
            m_WrappedData     = doc.TryGetObjectValueOf("wdata").AsString();

            var iv = doc["inner"] as BSONDocumentElement;

            if (iv == null)
            {
                return;
            }

            m_InnerException = new WrappedExceptionData();
            serializer.Deserialize(iv.Value, m_InnerException);
        }
Пример #9
0
        public void SerializeTypicalData()
        {
            var ser = new BSONSerializer(new BSONTypeResolver(typeof(TypicalData)));

            var data = new TypicalData
            {
                Guid         = Guid.NewGuid(),
                True         = true,
                False        = false,
                CharMin      = Char.MinValue,
                CharMax      = Char.MaxValue,
                SByteMin     = SByte.MinValue,
                SByteMax     = SByte.MaxValue,
                ByteMin      = Byte.MinValue,
                ByteMax      = Byte.MaxValue,
                Int16Min     = Int16.MinValue,
                Int16Max     = Int16.MaxValue,
                UInt16Min    = UInt16.MinValue,
                UInt16Max    = UInt16.MaxValue,
                Int32Min     = Int32.MinValue,
                Int32Max     = Int32.MaxValue,
                UInt32Min    = UInt32.MinValue,
                UInt32Max    = UInt32.MaxValue,
                Int64Min     = Int64.MinValue,
                Int64Max     = Int64.MaxValue,
                UInt64Min    = UInt64.MinValue,
                UInt64Max    = UInt64.MaxValue,
                SingleEps    = Single.Epsilon,
                SingleMin    = Single.MinValue,
                SingleMax    = Single.MaxValue,
                SingleNaN    = Single.NaN,
                SinglePosInf = Single.PositiveInfinity,
                SingleNegInf = Single.NegativeInfinity,
                DoubleEps    = Double.Epsilon,
                DoubleMin    = Double.MinValue,
                DoubleMax    = Double.MaxValue,
                DoubleNaN    = Double.NaN,
                DoublePosInf = Double.PositiveInfinity,
                DoubleNegInf = Double.NegativeInfinity,
                DecimalMin   = RowConverter.MIN_DECIMAL,
                DecimalMax   = RowConverter.MAX_DECIMAL,
                DecimalZero  = Decimal.Zero,
                DecimalOne   = Decimal.One,
                DecimalMOne  = Decimal.MinusOne,
                DateTimeMin  = DateTime.MinValue,
                DateTimeMax  = DateTime.MaxValue,
                DateTimeNow  = DateTime.Now,
                DateTimeUtc  = DateTime.UtcNow,
                TimeSpanMin  = TimeSpan.MinValue,
                TimeSpanMax  = TimeSpan.MaxValue,
                StringEmpty  = String.Empty,
                StringNull   = null,
                String       = "TypicalString",
            };

            var doc = ser.Serialize(data);

            Console.WriteLine(doc.ToJSON(JSONWritingOptions.PrettyPrint));

            Aver.IsTrue(doc.IndexOfName(ser.TypeIDFieldName) >= 0);

            var got = ser.Deserialize(doc) as TypicalData;

            averDataAreEqual(data, got);
        }