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); }
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); }
/// <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); }