// Copyright 2020 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 linux || darwin
// +build linux darwin

package pool

import (
	"testing"
	"time"

	"golang.org/x/build/dashboard"
)

func TestPoolDetermineDeleteTimeout(t *testing.T) {
	testCases := []struct {
		desc        string
		hostValue   time.Duration
		wantTimeout time.Duration
	}{
		{
			desc:        "default",
			wantTimeout: 2 * time.Hour,
		},
		{
			desc:        "from-host",
			hostValue:   8 * time.Hour,
			wantTimeout: 8 * time.Hour,
		},
	}
	for _, tc := range testCases {
		t.Run(tc.desc, func(t *testing.T) {
			h := &dashboard.HostConfig{
				CustomDeleteTimeout: tc.hostValue,
			}
			if got := determineDeleteTimeout(h); got != tc.wantTimeout {
				t.Errorf("determineDeleteTimeout(%+v) = %s; want %s", h, got, tc.wantTimeout)
			}
		})
	}
}

func TestPoolIsBuildlet(t *testing.T) {
	testCases := []struct {
		desc string
		name string
		want bool
	}{
		{"valid", "buildlet-gce-tinker", true},
		{"invalid", "gce-tinker", false},
	}
	for _, tc := range testCases {
		t.Run(tc.desc, func(t *testing.T) {
			if got := isBuildlet(tc.name); got != tc.want {
				t.Errorf("isBuildlet(%q) = %t; want %t", tc.name, got, tc.want)
			}
		})
	}
}
