github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/message/base_test.go (about)

     1  package message
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/suite"
     7  )
     8  
     9  type ComposerBaseSuite struct {
    10  	base *Base
    11  	suite.Suite
    12  }
    13  
    14  func TestComposerBaseSuite(t *testing.T) {
    15  	suite.Run(t, new(ComposerBaseSuite))
    16  }
    17  
    18  func (s *ComposerBaseSuite) SetupTest() {
    19  	s.base = &Base{}
    20  }
    21  
    22  func (s *ComposerBaseSuite) TestCollectWithBasicMetadataOnly() {
    23  	s.NoError(s.base.Collect(false))
    24  	originalTime := s.base.Time
    25  	s.NotZero(s.base.Time)
    26  	s.Zero(s.base.Hostname)
    27  	s.Zero(s.base.Process)
    28  	s.Zero(s.base.Pid)
    29  
    30  	s.NoError(s.base.Collect(false))
    31  	s.Equal(originalTime, s.base.Time, "time should not change when collecing basic metadata multiple times")
    32  }
    33  
    34  func (s *ComposerBaseSuite) TestCollectWithExtendedMetadata() {
    35  	s.Equal("", s.base.Hostname)
    36  	s.NoError(s.base.Collect(true))
    37  	s.NotZero(s.base.Hostname)
    38  	s.NotZero(s.base.Pid)
    39  	s.NotZero(s.base.Process)
    40  	s.NotZero(s.base.Time)
    41  }
    42  
    43  func (s *ComposerBaseSuite) TestCollectExtendedNoopsIfExtendedMetadataAlreadySet() {
    44  	s.base.Pid = 1
    45  	s.base.Hostname = "hostname"
    46  	s.base.Process = "process"
    47  	s.NoError(s.base.Collect(true))
    48  	s.NotZero(s.base.Time)
    49  	s.Equal(1, s.base.Pid)
    50  	s.Equal("hostname", s.base.Hostname)
    51  	s.Equal("process", s.base.Process)
    52  }
    53  
    54  func (s *ComposerBaseSuite) TestAnnotateAddsFields() {
    55  	s.Nil(s.base.Context)
    56  	s.NoError(s.base.Annotate("k", "foo"))
    57  	s.NotNil(s.base.Context)
    58  }
    59  
    60  func (s *ComposerBaseSuite) TestAnnotateErrorsForSameValue() {
    61  	s.NoError(s.base.Annotate("k", "foo"))
    62  	s.Error(s.base.Annotate("k", "foo"))
    63  
    64  	s.Equal("foo", s.base.Context["k"])
    65  }
    66  
    67  func (s *ComposerBaseSuite) TestAnnotateMultipleValues() {
    68  	s.NoError(s.base.Annotate("kOne", "foo"))
    69  	s.NoError(s.base.Annotate("kTwo", "foo"))
    70  	s.Equal("foo", s.base.Context["kOne"])
    71  	s.Equal("foo", s.base.Context["kTwo"])
    72  }