@ -12,7 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
import { defaultFilters , defaultTagFilter } from '../../useSearch' ;
import { DEFAULT_SPAN_FILTERS , DEFAULT_TAG_FILTERS } from 'app/features/explore/state/constants' ;
import { TraceSpan } from '../types/trace' ;
import { filterSpans } from './filter-spans' ;
@ -123,208 +124,222 @@ describe('filterSpans', () => {
const spans = [ span0 , span2 ] as TraceSpan [ ] ;
it ( 'should return `undefined` if spans is falsy' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , spanName : 'operationName' } , null ) ) . toBe ( undefined ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , spanName : 'operationName' } , null ) ) . toBe ( undefined ) ;
} ) ;
// Service / span name
it ( 'should return spans whose serviceName match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName2' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName2' , serviceNameOperator : '!=' } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , serviceNameOperator : '!=' } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
} ) ;
it ( 'should return spans whose operationName match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , spanName : 'operationName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , spanName : 'operationName2' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , spanName : 'operationName2' , spanNameOperator : '!=' } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , spanName : 'operationName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , spanName : 'operationName2' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , spanName : 'operationName2' , spanNameOperator : '!=' } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
} ) ;
// Durations
it ( 'should return spans whose duration match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , from : '2ns' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , from : '2us' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , from : '2ms' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , from : '3.05ms' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , from : '3.05ms' , fromOperator : '>=' } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '2ns' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '2us' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '2ms' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '3.05ms' } , spans ) ) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '3.05ms' , fromOperator : '>=' } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , from : '3.05ms' , fromOperator : '>=' , to : '4ms' } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '3.05ms' , fromOperator : '>=' , to : '4ms' } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , to : '4ms' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , to : '5ms' , toOperator : '<=' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , to : '4ms' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , to : '5ms' , toOperator : '<=' } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
} ) ;
// Tags
it ( 'should return spans whose tags kv.key match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey0' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey2' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ] } , spans ) ) . toEqual (
new Set ( [ spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey2' , operator : '!=' } ] } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' , operator : '!=' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
} ) ;
it ( 'should return spans whose kind, statusCode, statusMessage, libraryName, libraryVersion, traceState, or id match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'kind' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'kind' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'kind' , value : 'kind0' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'kind' , value : 'kind0' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'kind' , operator : '!=' , value : 'kind0' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'kind' , operator : '!=' , value : 'kind0' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'status' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'status' , value : 'unset' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status' , value : 'unset' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'status' , operator : '!=' , value : 'unset' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status' , operator : '!=' , value : 'unset' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'status.message' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status.message' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'status.message' , value : 'statusMessage0' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status.message' , value : 'statusMessage0' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
tags : [ { . . . defaultTagFilter , key : 'status.message' , operator : '!=' , value : 'statusMessage0' } ] ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'status.message' , operator : '!=' , value : 'statusMessage0' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'library.name' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.name' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'library.name' , value : 'libraryName' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.name' , value : 'libraryName' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
tags : [ { . . . defaultTagFilter , key : 'library.name' , operator : '!=' , value : 'libraryName' } ] ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.name' , operator : '!=' , value : 'libraryName' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'library.version' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.version' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'library.version' , value : 'libraryVersion0' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.version' , value : 'libraryVersion0' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
tags : [ { . . . defaultTagFilter , key : 'library.version' , operator : '!=' , value : 'libraryVersion0' } ] ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'library.version' , operator : '!=' , value : 'libraryVersion0' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'trace.state' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'trace.state' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'trace.state' , value : 'traceState0' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'trace.state' , value : 'traceState0' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
tags : [ { . . . defaultTagFilter , key : 'trace.state' , operator : '!=' , value : 'traceState0' } ] ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'trace.state' , operator : '!=' , value : 'traceState0' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'id' } ] } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'id' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'id' , value : 'span-id-0' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'id' , value : 'span-id-0' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'id' , operator : '!=' , value : 'span-id-0' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'id' , operator : '!=' , value : 'span-id-0' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
} ) ;
it ( 'should return spans whose process.tags kv.key match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'processTagKey1' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'processTagKey0' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'processTagKey2' } ] } , spans ) ) . toEqual (
new Set ( [ spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'processTagKey2' , operator : '!=' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'processTagKey1' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'processTagKey0' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'processTagKey2' } ] } , spans )
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'processTagKey2' , operator : '!=' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
} ) ;
it ( 'should return spans whose logs have a field whose kv.key match a filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'logFieldKey1' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 , spanID2 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'logFieldKey0' } ] } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'logFieldKey2' } ] } , spans ) ) . toEqual (
new Set ( [ spanID2 ] )
) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'logFieldKey2' , operator : '!=' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'logFieldKey1' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'logFieldKey0' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'logFieldKey2' } ] } , spans )
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'logFieldKey2' , operator : '!=' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
} ) ;
it ( 'it should return logs have a name which matches the filter' , ( ) = > {
expect ( filterSpans ( { . . . defaultFilters , query : 'logName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , query : 'logName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
} ) ;
it ( 'should return no spans when logs is null' , ( ) = > {
const nullSpan = { . . . span0 , logs : null } ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'logFieldKey1' } ] } , [
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'logFieldKey1' } ] } , [
nullSpan ,
] as unknown as TraceSpan [ ] )
) . toEqual ( new Set ( [ ] ) ) ;
@ -332,35 +347,50 @@ describe('filterSpans', () => {
it ( "should return spans whose tags' kv.key and kv.value match a filter" , ( ) = > {
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' } ] } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' , operator : '=' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' , operator : '=' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' , operator : '!=' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' , operator : '!=' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , operator : '=~' , value : 'tagValue' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , operator : '=~' , value : 'tagValue' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , operator : '!~' , value : 'tagValue1' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , operator : '!~' , value : 'tagValue1' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , operator : '!~' , value : 'tag' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , operator : '!~' , value : 'tag' } ] } ,
spans
)
) . toEqual ( new Set ( [ ] ) ) ;
@ -368,14 +398,23 @@ describe('filterSpans', () => {
it ( "should not return spans whose tags' kv.key match a filter but kv.value/operator does not match" , ( ) = > {
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , operator : '!=' } ] } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , operator : '!=' } ] } ,
spans
)
) . toEqual ( new Set ( ) ) ;
expect (
filterSpans ( { . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey2' , operator : '!=' } ] } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' , operator : '!=' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , tags : [ { . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' , operator : '!=' } ] } ,
{
. . . DEFAULT_SPAN_FILTERS ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' , operator : '!=' } ] ,
} ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
@ -386,10 +425,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey1' } ,
{ . . . defaultTagFilter , key : 'tagKey0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ,
] ,
} ,
spans
@ -398,10 +437,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . defaultTagFilter , key : 'tagKey0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ,
] ,
} ,
spans
@ -410,10 +449,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . defaultTagFilter , key : 'tagKey0' , value : 'tagValue0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' , value : 'tagValue0' } ,
] ,
} ,
spans
@ -424,10 +463,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey0' } ,
{ . . . defaultTagFilter , key : 'tagKey2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ,
] ,
} ,
spans
@ -436,10 +475,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey0' , value : '' } ,
{ . . . defaultTagFilter , key : 'tagKey2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' , value : '' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ,
] ,
} ,
spans
@ -450,10 +489,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey0' , value : 'tagValue0' } ,
{ . . . defaultTagFilter , key : 'tagKey2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' , value : 'tagValue0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ,
] ,
} ,
spans
@ -462,10 +501,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey0' , value : 'tagValue0' } ,
{ . . . defaultTagFilter , key : 'tagKey2' , value : 'tagValue2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' , value : 'tagValue0' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' , value : 'tagValue2' } ,
] ,
} ,
spans
@ -474,10 +513,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue2' } ,
] ,
} ,
spans
@ -486,10 +525,10 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
tags : [
{ . . . defaultTagFilter , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . defaultTagFilter , key : 'tagKey2' , value : 'tagValue2' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , value : 'tagValue1' } ,
{ . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' , value : 'tagValue2' } ,
] ,
} ,
spans
@ -497,69 +536,78 @@ describe('filterSpans', () => {
) . toEqual ( new Set ( ) ) ;
// query
expect ( filterSpans ( { . . . defaultFilters , query : 'serviceName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , query : 'tagKey1' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . defaultFilters , query : 'does_not_exist' } , spans ) ) . toEqual ( new Set ( [ ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , query : 'serviceName0' } , spans ) ) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , query : 'tagKey1' } , spans ) ) . toEqual ( new Set ( [ spanID0 , spanID2 ] ) ) ;
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , query : 'does_not_exist' } , spans ) ) . toEqual ( new Set ( [ ] ) ) ;
} ) ;
// Multiple
it ( 'should return spans with multiple filters' , ( ) = > {
// service name + span name
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , spanName : 'operationName0' } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , spanName : 'operationName2' } , spans ) ) . toEqual (
new Set ( [ ] )
) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , spanName : 'operationName0' } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , spanName : 'operationName2' } , spans )
) . toEqual ( new Set ( [ ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName0' , spanName : 'operationName2' , spanNameOperator : '!=' } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , spanName : 'operationName2' , spanNameOperator : '!=' } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
// service name + span name + duration
expect (
filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , spanName : 'operationName0' , from : '2ms' } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , spanName : 'operationName0' , from : '2ms' } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , spanName : 'operationName0' , to : '2ms' } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , spanName : 'operationName0' , to : '2ms' } ,
spans
)
) . toEqual ( new Set ( [ ] ) ) ;
expect (
filterSpans ( { . . . defaultFilters , serviceName : 'serviceName2' , spanName : 'operationName2' , to : '6ms' } , spans )
filterSpans (
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , spanName : 'operationName2' , to : '6ms' } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
// service name + tag key
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName0' , tags : [ { . . . defaultTagFilter , key : 'tagKey0' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName0' , tags : [ { . . . defaultTagFilter , key : 'tagKey1' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName2' , tags : [ { . . . defaultTagFilter , key : 'tagKey1' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName2' , tags : [ { . . . defaultTagFilter , key : 'tagKey2' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
serviceName : 'serviceName0' ,
tags : [ { . . . defaultTagFilter , key : 'tagKey1' , operator : '!=' } ] ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey1' , operator : '!=' } ] ,
} ,
spans
)
@ -567,38 +615,38 @@ describe('filterSpans', () => {
// duration + tag
expect (
filterSpans ( { . . . defaultFilters , from : '2ms' , tags : [ { . . . defaultTagFilter , key : 'tagKey0' } ] } , spans )
filterSpans ( { . . . DEFAULT_SPAN_FILTERS , from : '2ms' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey0' } ] } , spans )
) . toEqual ( new Set ( [ spanID0 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , to : '5ms' , toOperator : '<=' , tags : [ { . . . defaultTagFilter , key : 'tagKey2' } ] } ,
{ . . . DEFAULT_SPAN_FILTERS , to : '5ms' , toOperator : '<=' , tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' } ] } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
// query + other
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , query : 'tag' } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , query : 'tag' } , spans ) ) . toEqual (
new Set ( [ spanID0 ] )
) ;
expect ( filterSpans ( { . . . defaultFilters , serviceName : 'serviceName0' , query : 'tagKey2' } , spans ) ) . toEqual (
expect ( filterSpans ( { . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName0' , query : 'tagKey2' } , spans ) ) . toEqual (
new Set ( [ ] )
) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName2' , spanName : 'operationName2' , query : 'tagKey1' } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , spanName : 'operationName2' , query : 'tagKey1' } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{ . . . defaultFilters , serviceName : 'serviceName2' , spanName : 'operationName2' , to : '6ms' , query : 'kind2' } ,
{ . . . DEFAULT_SPAN_FILTERS , serviceName : 'serviceName2' , spanName : 'operationName2' , to : '6ms' , query : 'kind2' } ,
spans
)
) . toEqual ( new Set ( [ spanID2 ] ) ) ;
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
serviceName : 'serviceName0' ,
spanName : 'operationName0' ,
from : '2ms' ,
@ -612,14 +660,14 @@ describe('filterSpans', () => {
expect (
filterSpans (
{
. . . defaultFilters ,
. . . DEFAULT_SPAN_FILTERS ,
serviceName : 'serviceName0' ,
spanName : 'operationName2' ,
spanNameOperator : '!=' ,
from : '3.05ms' ,
fromOperator : '>=' ,
to : '3.5ms' ,
tags : [ { . . . defaultTagFilter , key : 'tagKey2' , operator : '!=' } ] ,
tags : [ { . . . DEFAULT_TAG_FILTERS , key : 'tagKey2' , operator : '!=' } ] ,
} ,
spans
)