// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build go1.16 && (linux || darwin)
// +build go1.16
// +build linux darwin

package main

import (
	"context"
	"time"

	"go.opencensus.io/stats"
	"go.opencensus.io/stats/view"
	"go.opencensus.io/tag"
	"golang.org/x/build/internal/coordinator/pool"
)

var (
	kHostType           = tag.MustNewKey("go-build/coordinator/host_type")
	mReverseBuildlets   = stats.Int64("go-build/coordinator/reverse_buildlets_count", "number of reverse buildlets", stats.UnitDimensionless)
	mGitHubAPIRemaining = stats.Int64("go-build/githubapi/remaining", "remaining GitHub API rate limit", stats.UnitDimensionless)
)

// views should contain all measurements. All *view.View added to this
// slice will be registered and exported to the metric service.
var views = []*view.View{
	{
		Name:        "go-build/coordinator/reverse_buildlets_count",
		Description: "Number of reverse buildlets that are up",
		Measure:     mReverseBuildlets,
		TagKeys:     []tag.Key{kHostType},
		Aggregation: view.LastValue(),
	},
	{
		Name:        "go-build/githubapi/remaining",
		Description: "Remaining GitHub API rate limit",
		Measure:     mGitHubAPIRemaining,
		Aggregation: view.LastValue(),
	},
}

// reportReverseCountMetrics gathers and reports
// a count of running reverse buildlets per type.
func reportReverseCountMetrics() {
	for {
		// 1. Gather # buildlets up per reverse builder type.
		totals := pool.ReversePool().HostTypeCount()
		// 2. Write counts out to the metrics recorder, grouped by hostType.
		for hostType, n := range totals {
			stats.RecordWithTags(context.Background(),
				[]tag.Mutator{tag.Upsert(kHostType, hostType)},
				mReverseBuildlets.M(int64(n)))
		}

		time.Sleep(5 * time.Minute)
	}
}
