public async Task ClientSubscription_FromQueryData_GeneralPropertyCheck()
        {
            var testServer = new TestServerBuilder()
                             .AddGraphController <ClientSubscriptionTestController>()
                             .AddSubscriptionServer()
                             .Build();

            var schema    = testServer.Schema;
            var subServer = testServer.RetrieveSubscriptionServer();
            var queryPlan = await testServer.CreateQueryPlan("subscription { watchObjects { property1 property2  }} ");

            Assert.AreEqual(1, queryPlan.Operations.Count);
            Assert.AreEqual(0, queryPlan.Messages.Count);

            var field = queryPlan.Operations.Values.First().FieldContexts[0].Field;
            var name  = field.GetType().FullName;

            (var socketClient, var testClient) = await testServer.CreateSubscriptionClient();

            var queryData = new GraphQueryData();

            var sub = new ClientSubscription <GraphSchema>(
                testClient,
                queryData,
                queryPlan,
                queryPlan.Operations.First().Value,
                "abc123");

            Assert.IsTrue(sub.IsValid);
            Assert.AreEqual("[subscription]/WatchObjects", sub.Route.Path);
            Assert.AreEqual("abc123", sub.Id);
            Assert.AreEqual(field, sub.Field);
            Assert.AreEqual(testClient, sub.Client);
            Assert.AreEqual(queryData, sub.QueryData);
        }
        private IGraphQueryPlan CreatePlan(string queryText)
        {
            var server = new TestServerBuilder()
                         .AddGraphType <SimpleExecutionController>()
                         .Build();

            var task = server.CreateQueryPlan(queryText);

            task.Wait();
            return(task.Result);
        }
Esempio n. 3
0
        public async Task QueryPlanCacheAddLogEntry()
        {
            var server = new TestServerBuilder()
                         .AddGraphType <LogTestController>()
                         .Build();
            var queryPlan = await server.CreateQueryPlan("query Operation1{ field1 } query Operation2 { fieldException }");

            var entry = new QueryPlanCacheAddLogEntry("abc123", queryPlan);

            Assert.AreEqual(LogEventIds.QueryCacheAdd.Id, entry.EventId);
            Assert.AreEqual("abc123", entry.QueryPlanHashCode);
            Assert.AreEqual(typeof(GraphSchema).FriendlyName(true), entry.SchemaTypeName);
            Assert.AreEqual(queryPlan.Id, entry.QueryPlanId);
            Assert.IsNotNull(entry.ToString());
        }
Esempio n. 4
0
        public async Task QueryPlanGeneratedLogEntry()
        {
            var server = new TestServerBuilder()
                         .AddGraphType <LogTestController>()
                         .Build();
            var queryPlan = await server.CreateQueryPlan("query Operation1{ field1 } query Operation2 { fieldException }");

            var entry = new QueryPlanGeneratedLogEntry(queryPlan);

            Assert.AreEqual(LogEventIds.QueryPlanGenerationCompleted.Id, entry.EventId);
            Assert.AreEqual(typeof(GraphSchema).FriendlyName(true), entry.SchemaTypeName);
            Assert.AreEqual(queryPlan.Id, entry.QueryPlanId);
            Assert.AreEqual(queryPlan.IsValid, entry.QueryPlanIsValid);
            Assert.AreEqual(queryPlan.Operations.Count, entry.QueryOperationCount);
            Assert.AreEqual(queryPlan.EstimatedComplexity, entry.QueryPlanEstimatedComplexity);
            Assert.AreEqual(queryPlan.MaxDepth, entry.QueryPlanMaxDepth);
            Assert.IsNotNull(entry.ToString());
        }
Esempio n. 5
0
        public async Task <IResolvedVariableCollection> CreateResolvedVariableCollection(string queryText, string jsonDoc)
        {
            var server = new TestServerBuilder()
                         .AddGraphType <VariableTestController>()
                         .Build();

            var plan = await server.CreateQueryPlan(queryText);

            if (plan.Messages.Count > 0)
            {
                Assert.Fail(plan.Messages[0].Message);
            }

            var operation = plan.Operations.First().Value;

            var resolver = new ResolvedVariableGenerator(server.Schema, operation);

            var variableSet = InputVariableCollection.FromJsonDocument(jsonDoc);

            return(resolver.Resolve(variableSet));
        }