github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/alertmanager/merger/v2_silence_id_test.go (about)

     1  package merger
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestV2SilenceId_ReturnsNewestSilence(t *testing.T) {
    10  
    11  	// We re-use MergeV2Silences so we rely on that being primarily tested elsewhere.
    12  
    13  	in := [][]byte{
    14  		[]byte(`{"id":"77b580dd-1d9c-4b7e-9bba-13ac173cb4e5","status":{"state":"expired"},` +
    15  			`"updatedAt":"2021-04-28T17:31:02.215Z","comment":"This is the newest silence",` +
    16  			`"createdBy":"","endsAt":"2021-04-28T17:31:02.215Z","matchers":` +
    17  			`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    18  			`"startsAt":"2021-04-28T17:31:01.725Z"}`),
    19  		[]byte(`{"id":"77b580dd-1d9c-4b7e-9bba-13ac173cb4e5","status":{"state":"expired"},` +
    20  			`"updatedAt":"2021-04-28T17:31:02.000Z","comment":"Silence Comment #1",` +
    21  			`"createdBy":"","endsAt":"2021-04-28T17:31:02.215Z","matchers":` +
    22  			`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    23  			`"startsAt":"2021-04-28T17:31:01.725Z"}`),
    24  		[]byte(`{"id":"77b580dd-1d9c-4b7e-9bba-13ac173cb4e5","status":{"state":"expired"},` +
    25  			`"updatedAt":"2021-04-28T17:31:02.000Z","comment":"Silence Comment #1",` +
    26  			`"createdBy":"","endsAt":"2021-04-28T17:31:02.215Z","matchers":` +
    27  			`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    28  			`"startsAt":"2021-04-28T17:31:01.725Z"}`),
    29  	}
    30  
    31  	expected := []byte(`{"id":"77b580dd-1d9c-4b7e-9bba-13ac173cb4e5","status":{"state":"expired"},` +
    32  		`"updatedAt":"2021-04-28T17:31:02.215Z","comment":"This is the newest silence",` +
    33  		`"createdBy":"","endsAt":"2021-04-28T17:31:02.215Z","matchers":` +
    34  		`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    35  		`"startsAt":"2021-04-28T17:31:01.725Z"}`)
    36  
    37  	out, err := V2SilenceID{}.MergeResponses(in)
    38  	require.NoError(t, err)
    39  	require.Equal(t, string(expected), string(out))
    40  }
    41  
    42  func TestV2SilenceID_InvalidDifferentIDs(t *testing.T) {
    43  
    44  	// Responses containing silences with different IDs is invalid input.
    45  
    46  	in := [][]byte{
    47  		[]byte(`{"id":"77b580dd-1d9c-4b7e-9bba-13ac173cb4e5","status":{"state":"expired"},` +
    48  			`"updatedAt":"2021-04-28T17:31:02.215Z","comment":"Silence Comment #1",` +
    49  			`"createdBy":"","endsAt":"2021-04-28T17:31:02.215Z","matchers":` +
    50  			`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    51  			`"startsAt":"2021-04-28T17:31:01.725Z"}`),
    52  		[]byte(`{"id":"261248d1-4ff7-4cf1-9957-850c65f4e48b","status":{"state":"expired"},` +
    53  			`"updatedAt":"2021-04-28T17:31:02.082Z","comment":"Silence Comment #3",` +
    54  			`"createdBy":"","endsAt":"2021-04-28T17:31:02.082Z","matchers":` +
    55  			`[{"isEqual":true,"isRegex":false,"name":"instance","value":"prometheus-one"}],` +
    56  			`"startsAt":"2021-04-28T17:31:01.735Z"}`),
    57  	}
    58  
    59  	_, err := V2SilenceID{}.MergeResponses(in)
    60  	require.Error(t, err)
    61  }