uptime

package
v0.0.0-...-bc03976 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2024 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Calculator

type Calculator interface {
	CalculateUptime(nodeID ids.NodeID, subnetID ids.ID) (time.Duration, time.Time, error)
	CalculateUptimePercent(nodeID ids.NodeID, subnetID ids.ID) (float64, error)
	// CalculateUptimePercentFrom expects [startTime] to be truncated (floored) to the nearest second
	CalculateUptimePercentFrom(nodeID ids.NodeID, subnetID ids.ID, startTime time.Time) (float64, error)
}
var NoOpCalculator Calculator = noOpCalculator{}

type LockedCalculator

type LockedCalculator interface {
	Calculator

	SetCalculator(isBootstrapped *utils.Atomic[bool], lock sync.Locker, newC Calculator)
}

func NewLockedCalculator

func NewLockedCalculator() LockedCalculator

type Manager

type Manager interface {
	Tracker
	Calculator
}

func NewManager

func NewManager(state State, clk *mockable.Clock) Manager

type State

type State interface {
	// GetUptime returns [upDuration] and [lastUpdated] of [nodeID] on
	// [subnetID].
	// Returns [database.ErrNotFound] if [nodeID] isn't currently a validator of
	// the subnet.
	GetUptime(
		nodeID ids.NodeID,
		subnetID ids.ID,
	) (upDuration time.Duration, lastUpdated time.Time, err error)

	// SetUptime updates [upDuration] and [lastUpdated] of [nodeID] on
	// [subnetID].
	// Returns [database.ErrNotFound] if [nodeID] isn't currently a validator of
	// the subnet.
	// Invariant: expects [lastUpdated] to be truncated (floored) to the nearest
	//            second.
	SetUptime(
		nodeID ids.NodeID,
		subnetID ids.ID,
		upDuration time.Duration,
		lastUpdated time.Time,
	) error

	// GetStartTime returns the time that [nodeID] started validating
	// [subnetID].
	// Returns [database.ErrNotFound] if [nodeID] isn't currently a validator of
	// the subnet.
	GetStartTime(
		nodeID ids.NodeID,
		subnetID ids.ID,
	) (startTime time.Time, err error)
}

type TestState

type TestState struct {
	// contains filtered or unexported fields
}

func NewTestState

func NewTestState() *TestState

func (*TestState) AddNode

func (s *TestState) AddNode(nodeID ids.NodeID, subnetID ids.ID, startTime time.Time)

func (*TestState) GetStartTime

func (s *TestState) GetStartTime(nodeID ids.NodeID, subnetID ids.ID) (time.Time, error)

func (*TestState) GetUptime

func (s *TestState) GetUptime(nodeID ids.NodeID, subnetID ids.ID) (time.Duration, time.Time, error)

func (*TestState) SetUptime

func (s *TestState) SetUptime(nodeID ids.NodeID, subnetID ids.ID, upDuration time.Duration, lastUpdated time.Time) error

type Tracker

type Tracker interface {
	StartTracking(nodeIDs []ids.NodeID, subnetID ids.ID) error
	StopTracking(nodeIDs []ids.NodeID, subnetID ids.ID) error

	Connect(nodeID ids.NodeID, subnetID ids.ID) error
	IsConnected(nodeID ids.NodeID, subnetID ids.ID) bool
	Disconnect(nodeID ids.NodeID) error
}

Directories

Path Synopsis
Package uptimemock is a generated GoMock package.
Package uptimemock is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL