package schedulers

import (
	"context"
	"fmt"
	"time"

	"github.com/pingcap/test-infra/services/tps/pkg/common"
)

type WaitTimeout struct {
	now func() time.Time
}

func (s *WaitTimeout) Name() string {
	return "WaitTimeout"
}

func (s *WaitTimeout) Prefilter(ctx context.Context, job *common.ArgoJob) error {
	timeout := job.Plan.WaitTimeout
	if timeout == 0 {
		return nil
	}
	if s.now().Sub(job.PlanExec.CreatedAt.Time()) > time.Duration(timeout)*time.Second {
		return fmt.Errorf("pending timeout")
	}
	return nil
}
