diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 19addad..de43648 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -1,4 +1,4 @@ -name: Task-Ranker +name: Build and Test on: push: @@ -34,4 +34,8 @@ jobs: run: go build -v . - name: Test - run: go test -v ./... + run: | + ./create_test_env + sleep 3s + go test -v ./... + ./tear_down_test_env diff --git a/README.md b/README.md index 74178d1..8cacc48 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -# Task Ranker +# Task Ranker +[![GoDoc](https://godoc.org/github.com/pradykaushik/task-ranker?status.svg)](https://godoc.org/github.com/pradykaushik/task-ranker) +![Build](https://github.com/pradykaushik/task-ranker/workflows/Build%20and%20Test/badge.svg) + Rank tasks running as docker containers in a cluster. Task Ranker runs as a cron job on a specified schedule. Each time the task ranker is run, diff --git a/datafetcher/prometheus/dataFetcher.go b/datafetcher/prometheus/dataFetcher.go index 796990e..4e37acf 100644 --- a/datafetcher/prometheus/dataFetcher.go +++ b/datafetcher/prometheus/dataFetcher.go @@ -23,6 +23,7 @@ import ( "github.com/prometheus/client_golang/api" "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" + "net/http" "time" ) @@ -59,6 +60,11 @@ func WithPrometheusEndpoint(endpoint string) Option { if endpoint == "" { return errors.New("invalid endpoint") } + // Validating the prometheus endpoint. + _, err := http.Get(endpoint + "/metrics") + if err != nil { + return errors.Wrap(err, "invalid endpoint for prometheus server") + } f.endpoint = endpoint return nil } diff --git a/entities/task.go b/entities/task.go index b0229b6..2ec63f4 100644 --- a/entities/task.go +++ b/entities/task.go @@ -75,11 +75,5 @@ func (t Task) GetHostname() string { } func (t Task) String() string { - var buf bytes.Buffer - buf.WriteString("[") - buf.WriteString(fmt.Sprintf("TaskID = %s,", t.ID)) - buf.WriteString(fmt.Sprintf("Hostname = %s,", t.Hostname)) - buf.WriteString(fmt.Sprintf("Weight = %f,", t.Weight)) - buf.WriteString("]") - return buf.String() + return fmt.Sprintf("[TaskID = %s, Hostname = %s, Weight = %f]", t.ID, t.Hostname, t.Weight) } diff --git a/ranker_e2e_test.go b/ranker_e2e_test.go index 0dc632a..0808121 100644 --- a/ranker_e2e_test.go +++ b/ranker_e2e_test.go @@ -42,6 +42,9 @@ func initTaskRanker(strategy string) (*TaskRanker, error) { prometheusDataFetcher, err = prometheus.NewDataFetcher( prometheus.WithPrometheusEndpoint("http://localhost:9090")) + if err != nil { + return nil, err + } dummyReceiver = new(dummyTaskRanksReceiver) tRanker, err = New(