private void RunAssertionNewSchema()
        {
            string epl = EventRepresentationChoice.AVRO.GetAnnotationText() + " select 1 as myInt," +
                         "{1L, 2L} as myLongArray," +
                         this.GetType().FullName + ".MakeByteArray() as myByteArray, " +
                         this.GetType().FullName + ".MakeMapStringString() as myMap " +
                         "from SupportBean";

            EPStatement           statement = _epService.EPAdministrator.CreateEPL(epl);
            SupportUpdateListener listener  = new SupportUpdateListener();

            statement.AddListener(listener);

            _epService.EPRuntime.SendEvent(new SupportBean());
            EventBean @event = listener.AssertOneGetNewAndReset();
            string    json   = SupportAvroUtil.AvroToJson(@event);

            Console.WriteLine(json);
            Assert.AreEqual(1, @event.Get("myInt"));
            EPAssertionUtil.AssertEqualsExactOrder(new long[] { 1L, 2L }, @event.Get("myLongArray").UnwrapIntoArray <long>());
            Assert.IsTrue(CompatExtensions.IsEqual(new byte[] { 1, 2, 3 }, ((byte[])@event.Get("myByteArray"))));
            Assert.AreEqual("[k1=v1]", CompatExtensions.Render(@event.Get("myMap").AsStringDictionary()));

            var designSchema = SchemaBuilder.Record("name",
                                                    TypeBuilder.RequiredInt("myInt"),
                                                    TypeBuilder.Field("myLongArray", TypeBuilder.Array(TypeBuilder.Union(TypeBuilder.Null(), TypeBuilder.Long()))),
                                                    TypeBuilder.Field("myByteArray", TypeBuilder.Bytes()),
                                                    TypeBuilder.Field("myMap", TypeBuilder.Map(
                                                                          TypeBuilder.String(TypeBuilder.Property(AvroConstant.PROP_STRING_KEY, AvroConstant.PROP_STRING_VALUE)))));

            var assembledSchema = ((AvroEventType)@event.EventType).SchemaAvro;
            var compareMsg      = SupportAvroUtil.CompareSchemas(designSchema, assembledSchema);

            Assert.IsNull(compareMsg, compareMsg);

            statement.Dispose();
        }
Example #2
0
            public void Run(RegressionEnvironment env)
            {
                var insertInto = typeof(EPLInsertIntoPopulateCreateStreamAvro).FullName;
                var epl = "@Name('s0') " +
                          EventRepresentationChoice.AVRO.GetAnnotationText() +
                          " select 1 as myInt," +
                          "{1L, 2L} as myLongArray," +
                          $"{insertInto}.MakeByteArray() as myByteArray, " +
                          $"{insertInto}.MakeMapStringString() as myMap " +
                          "from SupportBean";
                env.CompileDeploy(epl).AddListener("s0");

                env.SendEventBean(new SupportBean());
                var @event = env.Listener("s0").AssertOneGetNewAndReset();
                var json = SupportAvroUtil.AvroToJson(@event);
                Console.Out.WriteLine(json);
                Assert.AreEqual(1, @event.Get("myInt"));
                EPAssertionUtil.AssertEqualsExactOrder(
                    new[] {1L, 2L},
                    @event.Get("myLongArray").UnwrapIntoArray<long>());
                CollectionAssert.AreEqual(new byte[] {1, 2, 3}, (byte[]) @event.Get("myByteArray"));
                Assert.AreEqual("{\"k1\"=\"v1\"}", @event.Get("myMap").RenderAny());

                var designSchema = SchemaBuilder.Record(
                    "name",
                    RequiredInt("myInt"),
                    Field("myLongArray", Array(LongType())),
                    Field("myByteArray", BytesType()),
                    Field("myMap", Map(StringType(Property(AvroConstant.PROP_STRING_KEY, AvroConstant.PROP_STRING_VALUE)))));

                var assembledSchema = ((AvroEventType) @event.EventType).SchemaAvro;
                var compareMsg = SupportAvroUtil.CompareSchemas(designSchema, assembledSchema);
                Assert.IsNull(compareMsg, compareMsg);

                env.UndeployAll();
            }
        private void RunAssertionNewSchema(EPServiceProvider epService)
        {
            string epl = EventRepresentationChoice.AVRO.GetAnnotationText() + " select 1 as myInt," +
                         "{1L, 2L} as myLongArray," +
                         GetType().FullName + ".MakeByteArray() as myByteArray, " +
                         GetType().FullName + ".MakeMapStringString() as myMap " +
                         "from SupportBean";

            EPStatement statement = epService.EPAdministrator.CreateEPL(epl);
            var         listener  = new SupportUpdateListener();

            statement.Events += listener.Update;

            epService.EPRuntime.SendEvent(new SupportBean());
            EventBean @event = listener.AssertOneGetNewAndReset();
            string    json   = SupportAvroUtil.AvroToJson(@event);

            Assert.AreEqual(1, @event.Get("myInt"));
            EPAssertionUtil.AssertEqualsExactOrder(new long[] { 1L, 2L }, @event.Get("myLongArray").UnwrapIntoArray <long>());
            Assert.IsTrue(Collections.AreEqual(new byte[] { 1, 2, 3 }, @event.Get("myByteArray").UnwrapIntoArray <byte>()));
            Assert.AreEqual("[k1=v1]", @event.Get("myMap").UnwrapStringDictionary().Render());

            var designSchema = SchemaBuilder.Record(
                "name",
                RequiredInt("myInt"),
                Field("myLongArray", Array(Union(NullType(), LongType()))),
                Field("myByteArray", BytesType()),
                Field("myMap", Map(StringType(Property(AvroConstant.PROP_STRING_KEY, AvroConstant.PROP_STRING_VALUE))))
                );
            Schema assembledSchema = ((AvroEventType)@event.EventType).SchemaAvro;
            string compareMsg      = SupportAvroUtil.CompareSchemas(designSchema, assembledSchema);

            Assert.IsNull(compareMsg, compareMsg);

            statement.Dispose();
        }