public void AddObjectToSchema()
        {
            var schema = _schemaRegistryService.AddSchema(
                _fixture.Create <string>(),
                _fixture.Create <GeneralObject>().ToJSONString(),
                SchemaType.Types.Type.DocumentStorage).Result;

            var schemaObjectsBefore = _queryService.GetAllObjectsFromSchema(schema.Id_).ExecuteWithRetryPolicy().Result;

            Assert.Equal(System.Net.HttpStatusCode.OK, schemaObjectsBefore.StatusCode);
            Assert.Equal("{}", schemaObjectsBefore.Content);
            var objectId = Guid.NewGuid().ToString();

            _kafkaProducer.Produce(new InsertObject()
            {
                schemaId = schema.Id_,
                objectId = objectId,
                data     = _fixture.Create <GeneralObject>(),
            });

            var schemaObjectsAfter = _queryService.GetAllObjectsFromSchema(schema.Id_).ExecuteWithRetryPolicy(m => m.Content.Equals("{}")).Result;

            Assert.Equal(System.Net.HttpStatusCode.OK, schemaObjectsAfter.StatusCode);
            Assert.Contains(objectId, schemaObjectsAfter.Content);
        }
Esempio n. 2
0
        public void SingleSchema_NoRelations()
        {
            var indexName        = _fixture.Create <string>();
            var objectData       = _fixture.Create <Person>();
            var objectId         = _fixture.Create <string>();
            var schemaDefinition = JsonSchema.FromType(typeof(Person)).ToJson();

            var schemaId           = _schemaRegistryService.AddSchema("test_schema", schemaDefinition, SchemaType.Types.Type.DocumentStorage).Result;
            var materializerFields = new Dictionary <string, object>();

            materializerFields.Add("firstName", new SimpleFiled
            {
                simple = new SimpleItem
                {
                    field_name = "firstName",
                    field_type = "string"
                }
            });
            _schemaRegistryService.AddViewToSchema(schemaId.Id_, "test_view", materializerFields, new List <Relation>(), $"{{ \"index_name\": \"{indexName}\" }}", MaterializerBackend.ElasticSearch);
            _kafkaProducer.Produce(new InsertObject
            {
                objectId = objectId,
                schemaId = schemaId.Id_,
                data     = objectData
            });
            var result = RetryHelper.TryFetch(() => ElasticsearchConnector.QueryAll <PersonView1>(new Uri(_options.CDL_ELASTICSEARCH_NODE), indexName), arr => arr.Count == 0).Result.ToArray();

            Assert.Single(result);
            Assert.Equal(objectData.FirstName, result[0].FirstName);
        }
Esempio n. 3
0
 public Task Consume(ConsumeContext <Message> context)
 {
     return(topicProducer.Produce(new AuditMessage
     {
         Text = context.Message.Text
     }));
 }
Esempio n. 4
0
        async Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeEventContext <TInstance> consumeContext = context.CreateConsumeContext();

            var message = await _asyncMessageFactory(consumeContext).ConfigureAwait(false);

            ITopicProducer <TMessage> producer = context.GetProducer <TMessage>();

            await producer.Produce(message, _pipe).ConfigureAwait(false);
        }
        async Task Faulted(BehaviorContext <TInstance> context)
        {
            if (context.TryGetExceptionContext(out ConsumeExceptionEventContext <TInstance, TException> exceptionContext))
            {
                var message = await _asyncMessageFactory(exceptionContext).ConfigureAwait(false);

                ITopicProducer <TMessage> producer = context.GetProducer <TMessage>();

                await producer.Produce(message, _pipe).ConfigureAwait(false);
            }
        }
 public async Task Produce(TEvent message)
 {
     await _topicProducer.Produce(message);
 }
        public async void MaterializerOnDemand()
        {
            var name       = _fixture.Create <string>();
            var objectId_a = Guid.NewGuid().ToString();
            var payload_a  = _fixture.Create <Person>();
            var viewName   = _fixture.Create <string>();
            var schema_a   = _schemaRegistryService.AddSchema(
                name,
                _fixture.Create <GeneralObject>().ToJSONString(),
                SchemaType.Types.Type.DocumentStorage).Result;
            var viewFields      = new Dictionary <string, object>();
            var relation        = _edgeRegistryService.AddRelation(schema_a.Id_, schema_a.Id_).Result;
            var relationForView = new List <Relation>();

            relationForView.Add(new Relation()
            {
                GlobalId  = relation.RelationId_,
                LocalId   = _fixture.Create <UInt32>(),
                SearchFor = new SearchFor()
                {
                    SearchFor_ = SearchFor.Types.Direction.Children,
                }
            });

            viewFields.Add("firstName", new SimpleFiled()
            {
                simple = new SimpleItem()
                {
                    field_name = "firstName",
                    field_type = "String"
                }
            });
            viewFields.Add("lastName", new SimpleFiled()
            {
                simple = new SimpleItem()
                {
                    field_name = "lastName",
                    field_type = "String"
                }
            });
            var view           = _schemaRegistryService.AddViewToSchema(schema_a.Id_, viewName, viewFields, new List <Relation>()).Result;
            var viewDetails    = _schemaRegistryService.GetView(view.Id_).Result;
            var schemaWithView = _schemaRegistryService.GetFullSchema(schema_a.Id_).Result;

            Assert.True(schemaWithView.Views.Count == 1);

            _kafkaProducer.Produce(new InsertObject()
            {
                schemaId = schema_a.Id_,
                objectId = objectId_a,
                data     = payload_a
            }).Wait();
            Thread.Sleep(1000);

            var res = _onDemandMaterializerService.Materialize(view.Id_, new List <string>()
            {
                schema_a.Id_
            });

            //should have only one row
            while (await res.ResponseStream.MoveNext())
            {
                Assert.True(res.ResponseStream.Current.Fields.Count == 2);
                Assert.Contains(payload_a.FirstName, res.ResponseStream.Current.Fields["firstName"]);
                Assert.Contains(payload_a.LastName, res.ResponseStream.Current.Fields["lastName"]);
            }
        }
        public void ResolveTree()
        {
            var objectIdForParentSchema = Guid.NewGuid().ToString();
            var objectIdForChildSchema  = Guid.NewGuid().ToString();
            var parentSchemaName        = _fixture.Create <string>();
            var childSchemaName         = _fixture.Create <string>();
            var parentSchema            = _schemaRegistryService.AddSchema(
                parentSchemaName,
                _fixture.Create <Person>().ToJSONString(),
                SchemaType.Types.Type.DocumentStorage).Result;
            var childSchema = _schemaRegistryService.AddSchema(
                childSchemaName,
                _fixture.Create <Car>().ToJSONString(),
                SchemaType.Types.Type.DocumentStorage).Result;

            _kafkaProducer.Produce(new InsertObject()
            {
                schemaId = parentSchema.Id_,
                objectId = objectIdForParentSchema,
                data     = _fixture.Create <Person>(),
            });
            _kafkaProducer.Produce(new InsertObject()
            {
                schemaId = childSchema.Id_,
                objectId = objectIdForChildSchema,
                data     = _fixture.Create <Car>(),
            });

            var relation = _edgeRegistryService.AddRelation(childSchema.Id_, parentSchema.Id_).Result;
            var newEdge  = new Edge()
            {
                RelationId     = relation.RelationId_,
                ParentObjectId = objectIdForParentSchema,
            };

            newEdge.ChildObjectIds.Add(objectIdForChildSchema);
            _edgeRegistryService.AddEdges(new List <Edge>()
            {
                newEdge
            });
            var relations = new List <Relation>();

            relations.Add(new Relation()
            {
                GlobalId  = relation.RelationId_,
                LocalId   = 1,
                SearchFor = new SearchFor()
                {
                    SearchFor_ = SearchFor.Types.Direction.Children
                },
            });
            var tree = _edgeRegistryService.ResolveTree(relations).Result;

            Assert.True(tree.Rows.Count == 1);
            var treeObject = tree.Rows[0];

            Assert.True(treeObject.HasBaseObjectId);
            Assert.True(treeObject.BaseObjectId.Equals(objectIdForParentSchema));
            Assert.True(treeObject.RelationObjectIds.Count.Equals(1));
            Assert.True(treeObject.RelationObjectIds[0].Equals(objectIdForChildSchema));
        }