Documentation ¶
Overview ¶
Package util implements various utility functions used in both testing and implementation of Kubernetes. Package util may not depend on any other package in the Kubernetes package tree.
Index ¶
- Variables
- func AllPtrFieldsNil(obj interface{}) bool
- func ApplyOomScoreAdj(value int) error
- func CompileRegexps(regexpStrings []string) ([]*regexp.Regexp, error)
- func ConnectToDockerOrDie(dockerEndpoint string) *docker.Client
- func DeepHashObject(hasher hash.Hash, objectToWrite interface{})
- func FlushLogs()
- func Forever(f func(), period time.Duration)
- func GenerateSelfSignedCert(host, certPath, keyPath string) error
- func GetDockerEndpoint(dockerEndpoint string) string
- func GetHostname(hostnameOverride string) string
- func HandleCrash()
- func InitLogs()
- func IsCIdentifier(value string) bool
- func IsDNS1123Label(value string) bool
- func IsDNS1123Subdomain(value string) bool
- func IsDNS952Label(value string) bool
- func IsDNSLabel(value string) bool
- func IsDNSSubdomain(value string) bool
- func IsQualifiedName(value string) bool
- func IsValidPortNum(port int) bool
- func NewLogger(prefix string) *log.Logger
- func ObjectDiff(a, b interface{}) string
- func ObjectGoPrintDiff(a, b interface{}) string
- func ObjectGoPrintSideBySide(a, b interface{}) string
- func SliceToError(errs []error) error
- func StringDiff(a, b string) string
- func Until(f func(), period time.Duration, stopCh <-chan struct{})
- type Clock
- type FakeClock
- type FakeHandler
- type GlogWriter
- type IP
- type IPNet
- type IntOrString
- type IntstrKind
- type LogInterface
- type RateLimiter
- type RealClock
- type Runner
- type StringList
- type StringSet
- type TestInterface
- type Time
- type UUID
Constants ¶
This section is empty.
Variables ¶
var ReallyCrash bool
For testing, bypass HandleCrash.
Functions ¶
func AllPtrFieldsNil ¶ added in v0.8.0
func AllPtrFieldsNil(obj interface{}) bool
Tests whether all pointer fields in a struct are nil. This is useful when, for example, an API struct is handled by plugins which need to distinguish "no plugin accepted this spec" from "this spec is empty".
This function is only valid for structs and pointers to structs. Any other type will cause a panic. Passing a typed nil pointer will return true.
func ApplyOomScoreAdj ¶ added in v0.8.0
Writes 'value' to /proc/self/oom_score_adj.
func CompileRegexps ¶
Takes a list of strings and compiles them into a list of regular expressions
func ConnectToDockerOrDie ¶ added in v0.8.0
func ConnectToDockerOrDie(dockerEndpoint string) *docker.Client
func DeepHashObject ¶ added in v0.8.0
DeepHashObject writes specified object to hash using the spew library which follows pointers and prints actual values of the nested objects ensuring the hash does not change when a pointer changes.
func GenerateSelfSignedCert ¶ added in v0.8.0
GenerateSelfSignedCert creates a self-signed certificate and key for the given host. Host may be an IP or a DNS name The certificate will be created with file mode 0644. The key will be created with file mode 0600. If the certificate or key files already exist, they will be overwritten. Any parent directories of the certPath or keyPath will be created as needed with file mode 0755.
func GetDockerEndpoint ¶ added in v0.8.0
Get a docker endpoint, either from the string passed in, or $DOCKER_HOST environment variables
func GetHostname ¶ added in v0.8.0
func HandleCrash ¶
func HandleCrash()
HandleCrash simply catches a crash and logs an error. Meant to be called via defer.
func IsCIdentifier ¶
IsCIdentifier tests for a string that conforms the definition of an identifier in C. This checks the format, but not the length.
func IsDNS1123Label ¶ added in v0.7.0
IsDNS1123Label tests for a string that conforms to the definition of a label in DNS (RFC 1123).
func IsDNS1123Subdomain ¶ added in v0.7.0
IsDNS1123Subdomain tests for a string that conforms to the definition of a subdomain in DNS (RFC 1123).
func IsDNS952Label ¶
IsDNS952Label tests for a string that conforms to the definition of a label in DNS (RFC 952).
func IsDNSLabel ¶
IsDNSLabel tests for a string that conforms to the definition of a label in DNS (RFC 1123).
func IsDNSSubdomain ¶
IsDNSSubdomain tests for a string that conforms to the definition of a subdomain in DNS (RFC 1123).
func IsQualifiedName ¶ added in v0.7.0
IsQualifiedName tests whether a string fits the "optionally-namespaced name" pattern: [ DNS_SUBDOMAIN "/" ] DNS_LABEL
func IsValidPortNum ¶
IsValidPortNum tests that the argument is a valid, non-zero port number.
func ObjectDiff ¶
func ObjectDiff(a, b interface{}) string
ObjectDiff writes the two objects out as JSON and prints out the identical part of the objects followed by the remaining part of 'a' and finally the remaining part of 'b'. For debugging tests.
func ObjectGoPrintDiff ¶
func ObjectGoPrintDiff(a, b interface{}) string
ObjectGoPrintDiff is like ObjectDiff, but uses go-spew to print the objects, which shows absolutely everything by recursing into every single pointer (go's %#v formatters OTOH stop at a certain point). This is needed when you can't figure out why reflect.DeepEqual is returning false and nothing is showing you differences. This will.
func ObjectGoPrintSideBySide ¶ added in v0.7.0
func ObjectGoPrintSideBySide(a, b interface{}) string
ObjectGoPrintSideBySide prints a and b as textual dumps side by side, enabling easy visual scanning for mismatches.
func SliceToError ¶ added in v0.8.0
SliceToError converts an []error into a "normal" error, or nil if the slice is empty.
func StringDiff ¶
StringDiff diffs a and b and returns a human readable diff.
Types ¶
type Clock ¶ added in v0.8.0
Clock allows for injecting fake or real clocks into code that needs to do arbitrary things based on time.
type FakeHandler ¶
type FakeHandler struct { RequestReceived *http.Request RequestBody string StatusCode int ResponseBody string // For logging - you can use a *testing.T // This will keep log messages associated with the test. T LogInterface // contains filtered or unexported fields }
FakeHandler is to assist in testing HTTP requests. Notice that FakeHandler is not thread safe and you must not direct traffic to except for the request you want to test. You can do this by hiding it in an http.ServeMux.
func (*FakeHandler) ServeHTTP ¶
func (f *FakeHandler) ServeHTTP(response http.ResponseWriter, request *http.Request)
func (*FakeHandler) ValidateRequest ¶
func (f *FakeHandler) ValidateRequest(t TestInterface, expectedPath, expectedMethod string, body *string)
ValidateRequest verifies that FakeHandler received a request with expected path, method, and body.
func (*FakeHandler) ValidateRequestCount ¶ added in v0.7.0
func (f *FakeHandler) ValidateRequestCount(t TestInterface, count int)
type GlogWriter ¶
type GlogWriter struct{}
GlogWriter serves as a bridge between the standard log package and the glog package.
type IntOrString ¶
type IntOrString struct { Kind IntstrKind IntVal int StrVal string }
IntOrString is a type that can hold an int or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.
func NewIntOrStringFromInt ¶
func NewIntOrStringFromInt(val int) IntOrString
NewIntOrStringFromInt creates an IntOrString object with an int value.
func NewIntOrStringFromString ¶
func NewIntOrStringFromString(val string) IntOrString
NewIntOrStringFromString creates an IntOrString object with a string value.
func (IntOrString) MarshalJSON ¶
func (intstr IntOrString) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface.
func (*IntOrString) UnmarshalJSON ¶
func (intstr *IntOrString) UnmarshalJSON(value []byte) error
UnmarshalJSON implements the json.Unmarshaller interface.
type IntstrKind ¶
type IntstrKind int
IntstrKind represents the stored type of IntOrString.
const ( IntstrInt IntstrKind = iota // The IntOrString holds an int. IntstrString // The IntOrString holds a string. )
type LogInterface ¶
type LogInterface interface {
Logf(format string, args ...interface{})
}
LogInterface is a simple interface to allow injection of Logf to report serving errors.
type RateLimiter ¶
type RateLimiter interface { // CanAccept returns true if the rate is below the limit, false otherwise CanAccept() bool // Stop stops the rate limiter, subsequent calls to CanAccept will return false Stop() }
func NewTokenBucketRateLimiter ¶
func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter
NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach. The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a smoothed qps rate of 'qps'. The bucket is initially filled with 'burst' tokens, the rate limiter spawns a go routine which refills the bucket with one token at a rate of 'qps'. The maximum number of tokens in the bucket is capped at 'burst'. When done with the limiter, Stop() must be called to halt the associated goroutine.
type Runner ¶ added in v0.5.1
type Runner struct {
// contains filtered or unexported fields
}
Runner is an abstraction to make it easy to start and stop groups of things that can be described by a single function which waits on a channel close to exit.
type StringList ¶
type StringList []string
func (*StringList) Set ¶
func (sl *StringList) Set(value string) error
func (*StringList) String ¶
func (sl *StringList) String() string
func (*StringList) Type ¶ added in v0.7.0
func (*StringList) Type() string
type StringSet ¶
type StringSet map[string]empty
StringSet is a set of strings, implemented via map[string]struct{} for minimal memory consumption.
func NewStringSet ¶
NewStringSet creates a StringSet from a list of values.
func (StringSet) IsSuperset ¶
IsSuperset returns true iff s1 is a superset of s2.
type TestInterface ¶
type TestInterface interface { Errorf(format string, args ...interface{}) Logf(format string, args ...interface{}) }
TestInterface is a simple interface providing Errorf, to make injection for testing easier (insert 'yo dawg' meme here).
type Time ¶
Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.
func (Time) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (Time) Rfc3339Copy ¶
Rfc3339Copy returns a copy of the Time at second-level precision.
func (*Time) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaller interface.
type UUID ¶ added in v0.5.1
type UUID interface {
String() string
}
func NewUUID ¶ added in v0.5.1
func NewUUID() UUID
*
- The UUID package is naive and can generate identical UUIDs if the time interval is quick enough.
- Block subsequent UUIDs for 200 Nanoseconds, the UUID uses 100 ns increments, we block for 200 to be safe
- Blocks in a go routine, so that the caller doesn't have to wait.
- TODO: save old unused UUIDs so that no one has to block.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package config provides utility objects for decoupling sources of configuration and the actual configuration state.
|
Package config provides utility objects for decoupling sources of configuration and the actual configuration state. |
Package exec provides an injectable interface and implementations for running commands.
|
Package exec provides an injectable interface and implementations for running commands. |
Package iptables provides an interface and implementations for running iptables commands.
|
Package iptables provides an interface and implementations for running iptables commands. |
Package mount defines an interface to mounting filesystems.
|
Package mount defines an interface to mounting filesystems. |
Package wait provides tools for polling or listening for changes to a condition.
|
Package wait provides tools for polling or listening for changes to a condition. |