Skip to content

Commit

Permalink
Merge pull request #234 from signalfx/reportsha
Browse files Browse the repository at this point in the history
Add optional dockerTag to commit metric
  • Loading branch information
mdubbyap committed May 11, 2022
2 parents 9a067f2 + 8f2869d commit da9af03
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
15 changes: 11 additions & 4 deletions reportsha/reportsha.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"expvar"
"fmt"
"io/ioutil"
"os"
"sync"

"github.com/signalfx/golib/v3/datapoint"
Expand All @@ -19,6 +20,7 @@ type SHA1Reporter struct {
FileName string
Logger log.Logger
Fi fileInfo
Tag string
oc sync.Once
}

Expand All @@ -42,8 +44,9 @@ func load(fileName string) (fileInfo, error) {
return fi, nil
}

func (s *SHA1Reporter) loadFileInfo() {
func (s *SHA1Reporter) loadInfo() {
s.oc.Do(func() {
s.Tag = os.Getenv("DOCKER_TAG")
fi, err := load(s.FileName)
if err != nil {
s.Logger.Log(log.Err, err, logkey.Name, s.FileName, "Cannot load file info!")
Expand All @@ -56,16 +59,20 @@ func (s *SHA1Reporter) loadFileInfo() {

// Var returns an expvar that is the build file info
func (s *SHA1Reporter) Var() expvar.Var {
s.loadFileInfo()
s.loadInfo()
return expvar.Func(func() interface{} {
return s.Fi
})
}

// Datapoints returns a single datapoint that includes the commit sha loaded from a config file
func (s *SHA1Reporter) Datapoints() []*datapoint.Datapoint {
s.loadFileInfo()
s.loadInfo()
dims := map[string]string{"commit": s.Fi.Commit}
if len(s.Tag) > 0 {
dims["dockerTag"] = s.Tag
}
return []*datapoint.Datapoint{
sfxclient.Gauge("fileinfo_commit", map[string]string{"commit": s.Fi.Commit}, int64(1)),
sfxclient.Gauge("fileinfo_commit", dims, int64(1)),
}
}
2 changes: 2 additions & 0 deletions reportsha/reportsha_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ func TestReportSha(t *testing.T) {
}

Convey("Commit should load ok", func() {
os.Setenv("DOCKER_TAG", "foo")
dps := reporter.Datapoints()
So(dps[0].Dimensions["commit"], ShouldEqual, "b70a843b07741e04ce6845aaefdbcb077787b4a3")
So(dps[0].Dimensions["dockerTag"], ShouldEqual, "foo")
So(reporter.Var().String(), ShouldContainSubstring, "b70a843b07741e04ce6845aaefdbcb077787b4a3")
})

Expand Down
2 changes: 0 additions & 2 deletions sfxclient/sfxclient_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,9 @@ func TestScheduler_ReportingTimeout(t *testing.T) {

func TestCollectDatapointDebug(t *testing.T) {
Convey("testing collect datapoints with debug mode enabled", t, func() {
var handleErrors []error
var handleErrRet error
s := &Scheduler{
ErrorHandler: func(e error) error {
handleErrors = append(handleErrors, e)
return errors.Wrap(handleErrRet, e)
},
ReportingDelayNs: time.Second.Nanoseconds(),
Expand Down

0 comments on commit da9af03

Please sign in to comment.