config

package
v0.4.4 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2021 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package config provides configuration for `supraworker` application.

Index

Constants

View Source
const (
	// ProjectName defines project name
	ProjectName = "supraworker"
	// Default number of workers
	DefaultNumWorkers = 5
)
View Source
const StopReadJobsOutputAfter5Min = 5 * time.Minute
View Source
const TimeoutJobsAfter5MinInTerminalState = 5 * time.Minute

Variables

View Source
var (
	// CfgFile defines Path to the config.
	CfgFile string
	// ClientId defines Identification for the instance.
	ClientId string
	// NumWorkers parallel threads for processing jobs.
	NumWorkers int
	// C defines main configuration structure.
	C = Config{
		CallAPIDelaySec: int(2),
		NumActiveJobs:   0,
		NumFreeSlots:    0,
		NumWorkers:      0,
	}
)
View Source
var (
	// Set of constants for fetching Job's REST API
	CFG_PREFIX_JOBS                 = "jobs"
	CFG_PREFIX_JOBS_TIMEOUT         = "timeout"
	CFG_PREFIX_JOB_TIMEOUT_DURATION = "job_max_duration"
	CFG_PREFIX_JOBS_FETCHER         = "fetch"

	//CFG_PREFIX_COMMUNICATOR defines parameter in the config for Communicators
	CFG_PREFIX_COMMUNICATOR  = "communicator"
	CFG_PREFIX_COMMUNICATORS = "communicators"
	// HTTP Communicator tuning
	// User for allowed response codes definmition.
	CFG_PREFIX_ALLOWED_RESPONSE_CODES = "codes"
	// Defines backoff prefixes
	// More information at
	//   https://github.com/cenkalti/backoff/blob/v4.0.2/exponential.go#L9
	CFG_PREFIX_BACKOFF = "backoff"

	// MaxInterval caps the RetryInterval and not the randomized interval.
	CFG_PREFIX_BACKOFF_MAXINTERVAL = "maxinterval"
	// After MaxElapsedTime the ExponentialBackOff returns Stop.
	// It never stops if MaxElapsedTime == 0.
	CFG_PREFIX_BACKOFF_MAXELAPSEDTIME  = "maxelapsedtime"
	CFG_PREFIX_BACKOFF_INITIALINTERVAL = "initialinterval"

	CFG_COMMUNICATOR_PARAMS_KEY = "params"
	CFG_INTERVAL_PARAMETER      = "interval"
)

Functions

func GetBool added in v0.2.3

func GetBool(section string) bool

GetBool return section string or default.

func GetIntSlice added in v0.2.3

func GetIntSlice(section string, param string, def []int) []int

GetIntSlice returns []int or default.

func GetMapStringMapStringTemplatedDefault added in v0.2.3

func GetMapStringMapStringTemplatedDefault(section string, param string, def map[string]string) map[string]map[string]string

GetMapStringMapStringTemplatedDefault returns map of [string]string maps templated & enriched by default.

func GetStringDefault added in v0.2.3

func GetStringDefault(section string, def string) string

GetStringDefault return section string or default.

func GetStringMapStringTemplated added in v0.2.3

func GetStringMapStringTemplated(section string, param string) map[string]string

func GetStringMapStringTemplatedDefault added in v0.2.3

func GetStringMapStringTemplatedDefault(section string, param string, def map[string]string) map[string]string

func GetStringMapStringTemplatedFromMap added in v0.2.3

func GetStringMapStringTemplatedFromMap(section string, param string, from map[string]string) map[string]string

func GetStringMapStringTemplatedFromMapDefault added in v0.2.3

func GetStringMapStringTemplatedFromMapDefault(section string, param string, from map[string]string, def map[string]string) map[string]string

func GetStringTemplatedDefault added in v0.2.0

func GetStringTemplatedDefault(section string, def string) string

func GetTimeDurationDefault added in v0.2.3

func GetTimeDurationDefault(section string, param string, def time.Duration) (interval time.Duration)

GetTimeDuration return delay for the section with default of 1 second. Example config: section:

interval: 5s

func LoadCfgForTests added in v0.2.3

func LoadCfgForTests(t *testing.T, CfgFile string) (Config, Config)

func NewFlakyTestServer added in v0.4.0

func NewFlakyTestServer(t *testing.T, out <-chan string, isFlakyNow <-chan bool, maxTimeout time.Duration) *httptest.Server

func NewTestServer added in v0.2.3

func NewTestServer(t *testing.T, in func() interface{}, out func(string)) *httptest.Server

func ReinitializeConfig

func ReinitializeConfig()

ReinitializeConfig on load or file change

func StringToCfgForTests added in v0.4.0

func StringToCfgForTests(t *testing.T, yaml []byte) (Config, Config)

func TestMain added in v0.2.3

func TestMain(m *testing.M)

Types

type Config

type Config struct {
	// Identification for the process
	ClientId            string `mapstructure:"clientId"`
	NumActiveJobs       int64  // Number of jobs
	NumFreeSlots        int    // Number of free jobs slots
	NumWorkers          int    `mapstructure:"workers"`
	PrometheusNamespace string
	PrometheusService   string
	ClusterId           string `mapstructure:"clusterId"`
	ClusterPool         string `mapstructure:"clusterPool"`
	URL                 string // Used for overload URL for Tests "{{.URL}}"

	// delay between API calls to prevent Denial-of-service
	CallAPIDelaySec int `mapstructure:"api_delay_sec"`
	// Config version
	ConfigVersion string `mapstructure:"version"`
}

Config is top level Configuration structure

Jump to

Keyboard shortcuts

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