Use time.Duration for registering metrics
diff --git a/metrics/main.go b/metrics/main.go
index 8394171..29b73af 100644
--- a/metrics/main.go
+++ b/metrics/main.go
@@ -6,6 +6,7 @@
"log"
"net/http"
"os"
+ "time"
"github.com/fweikert/continuous-integration/metrics/clients"
"github.com/fweikert/continuous-integration/metrics/metrics"
@@ -29,6 +30,10 @@
fmt.Fprintln(w, "You should try https://bazel.build")
}
+func minutes(value int) time.Duration {
+ return time.Duration(value) * time.Minute
+}
+
func main() {
flag.Parse()
@@ -75,41 +80,41 @@
srv := service.CreateService(handleError)
buildsPerChange := metrics.CreateBuildsPerChange(bk, 500, pipelines...)
- srv.AddMetric(buildsPerChange, 60, cloudSql)
+ srv.AddMetric(buildsPerChange, minutes(60), cloudSql)
buildSuccess := metrics.CreateBuildSuccess(bk, 200, pipelines...)
- srv.AddMetric(buildSuccess, 60, cloudSql)
+ srv.AddMetric(buildSuccess, minutes(60), cloudSql)
criticalPath := metrics.CreateCriticalPath(bk, 20, pipelines...)
- srv.AddMetric(criticalPath, 60, cloudSql)
+ srv.AddMetric(criticalPath, minutes(60), cloudSql)
flakiness := metrics.CreateFlakiness(gcs, "bazel-buildkite-stats", "flaky-tests-bep", pipelines...)
- srv.AddMetric(flakiness, 60, cloudSql)
+ srv.AddMetric(flakiness, minutes(60), cloudSql)
macPerformance := metrics.CreateMacPerformance(bk, 20, pipelines...)
- srv.AddMetric(macPerformance, 60, cloudSql)
+ srv.AddMetric(macPerformance, minutes(60), cloudSql)
/*
pipelinePerformance := metrics.CreatePipelinePerformance(bk, 20, pipelines...)
- srv.AddMetric(pipelinePerformance, 60, cloudSql)
+ srv.AddMetric(pipelinePerformance, minutes(60), cloudSql)
*/
platformLoad := metrics.CreatePlatformLoad(bk, 100, settings.BuildkiteOrgs...)
- srv.AddMetric(platformLoad, 5, cloudSql)
+ srv.AddMetric(platformLoad, minutes(5), cloudSql)
platformSignificance := metrics.CreatePlatformSignificance(bk, 100, pipelines...)
- srv.AddMetric(platformSignificance, 24*60, cloudSql)
+ srv.AddMetric(platformSignificance, minutes(24*60), cloudSql)
platformUsage := metrics.CreatePlatformUsage(bk, 100, settings.BuildkiteOrgs...)
- srv.AddMetric(platformUsage, 60, cloudSql)
+ srv.AddMetric(platformUsage, minutes(60), cloudSql)
releaseDownloads := metrics.CreateReleaseDownloads(settings.GitHubOrg,
settings.GitHubRepo,
settings.GitHubApiToken, megaByte)
- srv.AddMetric(releaseDownloads, 12*60, cloudSql)
+ srv.AddMetric(releaseDownloads, minutes(12*60), cloudSql)
workerAvailability := metrics.CreateWorkerAvailability(bk, settings.BuildkiteOrgs...)
- srv.AddMetric(workerAvailability, 5, cloudSql)
+ srv.AddMetric(workerAvailability, minutes(5), cloudSql)
if *testMode {
log.Println("[Test mode] Running all jobs exactly once...")
diff --git a/metrics/service/service.go b/metrics/service/service.go
index d0116c2..12474a4 100644
--- a/metrics/service/service.go
+++ b/metrics/service/service.go
@@ -60,8 +60,8 @@
job.ticker.Stop()
}
-func createJob(metric metrics.Metric, updateIntervalMinutes uint, publisherInstances []publishers.Publisher) metricJob {
- return metricJob{metric: metric, ticker: time.NewTicker(time.Duration(updateIntervalMinutes) * time.Minute), publishers: publisherInstances}
+func createJob(metric metrics.Metric, updateInterval time.Duration, publisherInstances []publishers.Publisher) metricJob {
+ return metricJob{metric: metric, ticker: time.NewTicker(updateInterval), publishers: publisherInstances}
}
type ErrorHandler func(string, error)
@@ -75,12 +75,12 @@
return &MetricService{jobs: make(map[string]metricJob), handler: handler}
}
-func (srv *MetricService) AddMetric(metric metrics.Metric, updateIntervalMinutes uint, publisherInstances ...publishers.Publisher) error {
+func (srv *MetricService) AddMetric(metric metrics.Metric, updateInterval time.Duration, publisherInstances ...publishers.Publisher) error {
name := metric.Name()
if _, ok := srv.jobs[name]; ok {
return fmt.Errorf("There is already a job for metric '%s'", name)
}
- srv.jobs[name] = createJob(metric, updateIntervalMinutes, publisherInstances)
+ srv.jobs[name] = createJob(metric, updateInterval, publisherInstances)
return nil
}