Пример #1
0
        public async Task searchByMultipletagsTest()
        {
            Sdk <Object> sdk = GetSdk();

            // search the trace by tags
            List <String> tags = new List <string>();

            tags.Add("tag1");
            tags.Add("tag2");
            SearchTracesFilter f = new SearchTracesFilter();

            f.Tags       = tags;
            f.SearchType = SearchTracesFilter.SEARCH_TYPE.TAGS_CONTAINS;
            TracesState <Object, Object> res = await sdk.SearchTracesAsync <Object>(f, new PaginationInfo());

            Assert.Equal(1, res.TotalCount);
            Assert.Equal(config.TRACE_ID, res.Traces[0].TraceId);
        }
Пример #2
0
        public async Task traceTagsRWTest()
        {
            Sdk <object> sdk = GetSdk();

            // Add a tag to a trace
            string traceId            = config.TRACE_ID;
            Guid   uuid               = System.Guid.NewGuid();
            string randomUUIDString   = uuid.ToString();
            AddTagsToTraceInput input = new AddTagsToTraceInput(traceId, new string[] { randomUUIDString, "tag1", "tag2" });

            TraceState <Object, Object> state = await sdk.AddTagsToTraceAsync <Object>(input);

            Assert.Equal(traceId, state.TraceId);

            // search the trace by tags
            List <String> tags = new List <string>();

            tags.Add(randomUUIDString);
            SearchTracesFilter           f   = new SearchTracesFilter(tags);
            TracesState <Object, Object> res = await sdk.SearchTracesAsync <Object>(f, new PaginationInfo());

            Assert.Equal(1, res.TotalCount);
            Assert.Equal(traceId, res.Traces[0].TraceId);
        }
Пример #3
0
        /// <summary>
        /// Search all the traces of the workflow
        /// </summary>
        /// <typeparam name="SearchTracesFilter"></typeparam>
        /// <param name="filter">the filter to use in the search</param>
        /// <typeparam name="PaginationInfo"></typeparam>
        /// <param name="paginationInfo">the wanted pagination</param>
        /// <returns>The <see cref="Task{TraceState{TState, TLinkData}}"/></returns>
        public async Task <TracesState <TState, TLinkData> > SearchTracesAsync <TLinkData>(SearchTracesFilter filter,
                                                                                           PaginationInfo paginationInfo)
        {
            // create variables
            Dictionary <String, object> variables = new Dictionary <String, object> {
                { "filter", filter.GetFilters() },
                { "workflowId", this.opts.WorkflowId }
            };
            Dictionary <String, object> variablesPaginationInfo = JsonHelper.ObjectToMap(paginationInfo);

            variablesPaginationInfo.ToList().ForEach(x => variables.Add(x.Key, x.Value));

            // execute graphql query
            string query = GraphQL.QUERY_SEARCHTRACES;
            GraphQLResponse <dynamic> jsonResponse = await this.client.GraphqlAsync(query, variables, null, null);

            // get all the traces
            var traceResponse = jsonResponse.Data.workflow.traces;

            List <TraceState <TState, TLinkData> > traces = new List <TraceState <TState, TLinkData> >();
            var nodes = traceResponse.nodes;

            foreach (var node in nodes)
            {
                traces.Add(this.MakeTraceState <TLinkData>((JObject)node));
            }

            var info       = traceResponse.info;
            int totalCount = (int)traceResponse.totalCount;

            // construct the traces list object
            TracesState <TState, TLinkData> tracesList = new TracesState <TState, TLinkData>()
            {
                Traces     = traces,
                TotalCount = totalCount,
                Info       = info.ToObject <Info>()
            };

            return(tracesList);
        }