SYMBOL INDEX (354 symbols across 52 files) FILE: acl.go type ACL (line 9) | type ACL struct method GenACL (line 18) | func (acl *ACL) GenACL(val string) error { method String (line 22) | func (acl ACL) String() string { FILE: acl_test.go constant validACLDoc (line 10) | validACLDoc = `{ function TestGenACL (line 37) | func TestGenACL(t *testing.T) { FILE: backend.go type Backend (line 14) | type Backend struct type BackendOptions (line 20) | type BackendOptions struct function NewBackend (line 24) | func NewBackend(name string, serverURL string, options BackendOptions) (... function newWeaverReverseProxy (line 37) | func newWeaverReverseProxy(target *url.URL, options BackendOptions) *htt... FILE: backend_test.go function TestNewBackend (line 10) | func TestNewBackend(t *testing.T) { function TestNewBackendFailsWhenURLIsInvalid (line 21) | func TestNewBackendFailsWhenURLIsInvalid(t *testing.T) { FILE: cmd/weaver-server/main.go function main (line 20) | func main() { function startWeaver (line 37) | func startWeaver(_ *cli.Context) error { FILE: config/config.go type Config (line 18) | type Config struct function Load (line 35) | func Load() { function ServerReadTimeoutInMillis (line 66) | func ServerReadTimeoutInMillis() time.Duration { function ServerWriteTimeoutInMillis (line 70) | func ServerWriteTimeoutInMillis() time.Duration { function ProxyServerAddress (line 74) | func ProxyServerAddress() string { function ETCDKeyPrefix (line 78) | func ETCDKeyPrefix() string { function NewRelicConfig (line 82) | func NewRelicConfig() newrelic.Config { function SentryDSN (line 86) | func SentryDSN() string { function StatsD (line 90) | func StatsD() StatsDConfig { function Proxy (line 94) | func Proxy() ProxyConfig { function NewETCDClient (line 98) | func NewETCDClient() (etcd.Client, error) { function LogLevel (line 113) | func LogLevel() string { function extractStringValue (line 117) | func extractStringValue(key string) string { function extractBoolValue (line 122) | func extractBoolValue(key string) bool { function extractBoolValueDefaultToFalse (line 127) | func extractBoolValueDefaultToFalse(key string) bool { function extractIntValue (line 135) | func extractIntValue(key string) int { function checkPresenceOf (line 145) | func checkPresenceOf(key string) { FILE: config/config_test.go function TestShouldLoadConfigFromFile (line 13) | func TestShouldLoadConfigFromFile(t *testing.T) { function TestShouldLoadFromEnvVars (line 23) | func TestShouldLoadFromEnvVars(t *testing.T) { FILE: config/newrelic.go function loadNewRelicConfig (line 7) | func loadNewRelicConfig() newrelic.Config { FILE: config/proxy.go type ProxyConfig (line 5) | type ProxyConfig struct method ProxyDialerTimeoutInMS (line 23) | func (pc ProxyConfig) ProxyDialerTimeoutInMS() time.Duration { method ProxyDialerKeepAliveInMS (line 27) | func (pc ProxyConfig) ProxyDialerKeepAliveInMS() time.Duration { method ProxyMaxIdleConns (line 31) | func (pc ProxyConfig) ProxyMaxIdleConns() int { method ProxyIdleConnTimeoutInMS (line 35) | func (pc ProxyConfig) ProxyIdleConnTimeoutInMS() time.Duration { method KeepAliveEnabled (line 39) | func (pc ProxyConfig) KeepAliveEnabled() bool { function loadProxyConfig (line 13) | func loadProxyConfig() ProxyConfig { FILE: config/statsd.go type StatsDConfig (line 3) | type StatsDConfig struct method Prefix (line 21) | func (sdc StatsDConfig) Prefix() string { method FlushPeriodInSeconds (line 25) | func (sdc StatsDConfig) FlushPeriodInSeconds() int { method Host (line 29) | func (sdc StatsDConfig) Host() string { method Port (line 33) | func (sdc StatsDConfig) Port() int { method Enabled (line 37) | func (sdc StatsDConfig) Enabled() bool { function loadStatsDConfig (line 11) | func loadStatsDConfig() StatsDConfig { FILE: endpoint.go type EndpointConfig (line 13) | type EndpointConfig struct method genShardKeyFunc (line 20) | func (endpointConfig *EndpointConfig) genShardKeyFunc() (shardKeyFunc,... type Endpoint (line 31) | type Endpoint struct method Shard (line 52) | func (endpoint *Endpoint) Shard(request *http.Request) (*Backend, erro... function NewEndpoint (line 36) | func NewEndpoint(endpointConfig *EndpointConfig, sharder Sharder) (*Endp... type shardKeyFunc (line 61) | type shardKeyFunc FILE: endpoint_test.go function TestNewEndpoint (line 11) | func TestNewEndpoint(t *testing.T) { function TestNewEndpoint_SharderIsNil (line 26) | func TestNewEndpoint_SharderIsNil(t *testing.T) { type stubSharder (line 39) | type stubSharder struct method Shard (line 42) | func (stub *stubSharder) Shard(key string) (*Backend, error) { FILE: etcd/aclkey.go constant ACLKeyFormat (line 11) | ACLKeyFormat = "/%s/acls/%s/acl" type ACLKey (line 15) | type ACLKey function GenACLKey (line 18) | func GenACLKey(key string) ACLKey { function GenKey (line 22) | func GenKey(acl *weaver.ACL, pfx string) ACLKey { FILE: etcd/routeloader.go function NewRouteLoader (line 19) | func NewRouteLoader() (*RouteLoader, error) { type RouteLoader (line 31) | type RouteLoader struct method PutACL (line 37) | func (routeLoader *RouteLoader) PutACL(acl *weaver.ACL) (ACLKey, error) { method GetACL (line 51) | func (routeLoader *RouteLoader) GetACL(key ACLKey) (*weaver.ACL, error) { method DelACL (line 75) | func (routeLoader *RouteLoader) DelACL(key ACLKey) error { method WatchRoutes (line 83) | func (routeLoader *RouteLoader) WatchRoutes(ctx context.Context, upser... method BootstrapRoutes (line 131) | func (routeLoader *RouteLoader) BootstrapRoutes(ctx context.Context, u... function initEtcd (line 165) | func initEtcd(routeLoader *RouteLoader) (etcd.KeysAPI, string) { FILE: etcd/routeloader_test.go type RouteLoaderSuite (line 22) | type RouteLoaderSuite struct method SetupTest (line 28) | func (es *RouteLoaderSuite) SetupTest() { method TestNewRouteLoader (line 38) | func (es *RouteLoaderSuite) TestNewRouteLoader() { method TestPutACL (line 46) | func (es *RouteLoaderSuite) TestPutACL() { method TestBootstrapRoutes (line 76) | func (es *RouteLoaderSuite) TestBootstrapRoutes() { method TestBootstrapRoutesSucceedWhenARouteUpsertFails (line 97) | func (es *RouteLoaderSuite) TestBootstrapRoutesSucceedWhenARouteUpsert... method TestBootstrapRoutesSucceedWhenARouteDoesntExist (line 126) | func (es *RouteLoaderSuite) TestBootstrapRoutesSucceedWhenARouteDoesnt... method TestBootstrapRoutesSucceedWhenARouteHasInvalidData (line 131) | func (es *RouteLoaderSuite) TestBootstrapRoutesSucceedWhenARouteHasInv... method TestWatchRoutesUpsertRoutesWhenRoutesSet (line 144) | func (es *RouteLoaderSuite) TestWatchRoutesUpsertRoutesWhenRoutesSet() { method TestWatchRoutesUpsertRoutesWhenRoutesUpdated (line 162) | func (es *RouteLoaderSuite) TestWatchRoutesUpsertRoutesWhenRoutesUpdat... method TestWatchRoutesDeleteRouteWhenARouteIsDeleted (line 181) | func (es *RouteLoaderSuite) TestWatchRoutesDeleteRouteWhenARouteIsDele... function TestRouteLoaderSuite (line 42) | func TestRouteLoaderSuite(tst *testing.T) { function newTestACL (line 201) | func newTestACL(matcher string) *weaver.ACL { function genRouteProcessorMock (line 224) | func genRouteProcessorMock(c chan *weaver.ACL) func(*weaver.ACL) error { function deepEqual (line 231) | func deepEqual(t *testing.T, expected *weaver.ACL, actual *weaver.ACL) { function assertEqualJSON (line 240) | func assertEqualJSON(t *testing.T, json1, json2 json.RawMessage) { function failingUpsertRouteFunc (line 252) | func failingUpsertRouteFunc(acl *weaver.ACL) error { function successUpsertRouteFunc (line 256) | func successUpsertRouteFunc(acl *weaver.ACL) error { FILE: examples/body_lookup/main.go type estimationRequest (line 14) | type estimationRequest struct function getEnv (line 19) | func getEnv(key string, fallback string) string { function handler (line 26) | func handler(w http.ResponseWriter, r *http.Request) { function handlePing (line 30) | func handlePing(w http.ResponseWriter, r *http.Request) { function getAmount (line 34) | func getAmount() float64 { function handleEstimate (line 41) | func handleEstimate(w http.ResponseWriter, r *http.Request) { function main (line 47) | func main() { FILE: pkg/instrumentation/newrelic.go type ctxKey (line 13) | type ctxKey constant txKey (line 15) | txKey ctxKey = 0 function InitNewRelic (line 19) | func InitNewRelic() newrelic.Application { function ShutdownNewRelic (line 32) | func ShutdownNewRelic() { function NewRelicApp (line 38) | func NewRelicApp() newrelic.Application { function StartRedisSegmentNow (line 42) | func StartRedisSegmentNow(op string, coll string, txn newrelic.Transacti... function NewContext (line 53) | func NewContext(ctx context.Context, w http.ResponseWriter) context.Cont... function NewContextWithTransaction (line 64) | func NewContextWithTransaction(ctx context.Context, tx newrelic.Transact... function GetTx (line 68) | func GetTx(ctx context.Context) (newrelic.Transaction, bool) { FILE: pkg/instrumentation/statsd.go function InitiateStatsDMetrics (line 15) | func InitiateStatsDMetrics() error { function StatsDClient (line 37) | func StatsDClient() *statsd.Client { function CloseStatsDClient (line 41) | func CloseStatsDClient() { function NewTiming (line 48) | func NewTiming() statsd.Timing { function IncrementTotalRequestCount (line 56) | func IncrementTotalRequestCount() { function IncrementAPIRequestCount (line 60) | func IncrementAPIRequestCount(apiName string) { function IncrementAPIStatusCount (line 64) | func IncrementAPIStatusCount(apiName string, httpStatusCode int) { function IncrementAPIBackendRequestCount (line 68) | func IncrementAPIBackendRequestCount(apiName, backendName string) { function IncrementAPIBackendStatusCount (line 72) | func IncrementAPIBackendStatusCount(apiName, backendName string, httpSta... function IncrementCrashCount (line 76) | func IncrementCrashCount() { function IncrementNotFound (line 80) | func IncrementNotFound() { function IncrementInternalAPIStatusCount (line 84) | func IncrementInternalAPIStatusCount(aclName string, statusCode int) { function TimeTotalLatency (line 88) | func TimeTotalLatency(timing statsd.Timing) { function TimeAPILatency (line 96) | func TimeAPILatency(apiName string, timing statsd.Timing) { function TimeAPIBackendLatency (line 104) | func TimeAPIBackendLatency(apiName, backendName string, timing statsd.Ti... function incrementProbe (line 112) | func incrementProbe(key string) { FILE: pkg/logger/logger.go function SetupLogger (line 14) | func SetupLogger() { function AddHook (line 28) | func AddHook(hook logrus.Hook) { function Debug (line 32) | func Debug(args ...interface{}) { function Debugf (line 36) | func Debugf(format string, args ...interface{}) { function Debugln (line 40) | func Debugln(args ...interface{}) { function Debugrf (line 44) | func Debugrf(r *http.Request, format string, args ...interface{}) { function Error (line 48) | func Error(args ...interface{}) { function Errorf (line 52) | func Errorf(format string, args ...interface{}) { function Errorln (line 56) | func Errorln(args ...interface{}) { function Errorrf (line 60) | func Errorrf(r *http.Request, format string, args ...interface{}) { function ErrorWithFieldsf (line 64) | func ErrorWithFieldsf(fields logrus.Fields, format string, args ...inter... function Fatal (line 68) | func Fatal(args ...interface{}) { function Fatalf (line 72) | func Fatalf(format string, args ...interface{}) { function Fatalln (line 76) | func Fatalln(args ...interface{}) { function Info (line 80) | func Info(args ...interface{}) { function Infof (line 84) | func Infof(format string, args ...interface{}) { function Infoln (line 88) | func Infoln(args ...interface{}) { function Inforf (line 92) | func Inforf(r *http.Request, format string, args ...interface{}) { function InfoWithFieldsf (line 96) | func InfoWithFieldsf(fields logrus.Fields, format string, args ...interf... function ProxyInfo (line 100) | func ProxyInfo(aclName string, downstreamHost string, r *http.Request, r... function httpRequestFields (line 110) | func httpRequestFields(r *http.Request) logrus.Fields { function httpResponseFields (line 129) | func httpResponseFields(responseStatus int, rw http.ResponseWriter) logr... function Warn (line 141) | func Warn(args ...interface{}) { function Warnf (line 145) | func Warnf(format string, args ...interface{}) { function Warnln (line 149) | func Warnln(args ...interface{}) { function WithField (line 153) | func WithField(key string, value interface{}) *logrus.Entry { function WithFields (line 157) | func WithFields(fields logrus.Fields) *logrus.Entry { function httpRequestLogEntry (line 161) | func httpRequestLogEntry(r *http.Request) *logrus.Entry { FILE: pkg/matcher/matcher.go function New (line 17) | func New(matcherName string) (MatcherFunc, bool) { type MatcherFunc (line 22) | type MatcherFunc FILE: pkg/matcher/matcher_test.go function TestBodyMatcher (line 12) | func TestBodyMatcher(t *testing.T) { function TestBodyMatcherParseInt (line 24) | func TestBodyMatcherParseInt(t *testing.T) { function TestBodyMatcherParseTypeAssertFail (line 36) | func TestBodyMatcherParseTypeAssertFail(t *testing.T) { function TestBodyMatcherFail (line 49) | func TestBodyMatcherFail(t *testing.T) { function TestHeaderMatcher (line 61) | func TestHeaderMatcher(t *testing.T) { function TestHeadersCsvMatcherWithSingleHeader (line 73) | func TestHeadersCsvMatcherWithSingleHeader(t *testing.T) { function TestHeadersCsvMatcherWithSingleHeaderWhenNoneArePresent (line 87) | func TestHeadersCsvMatcherWithSingleHeaderWhenNoneArePresent(t *testing.... function TestHeadersCsvMatcherWithZeroHeaders (line 97) | func TestHeadersCsvMatcherWithZeroHeaders(t *testing.T) { function TestHeadersCsvMatcherWithMultipleHeaders (line 111) | func TestHeadersCsvMatcherWithMultipleHeaders(t *testing.T) { function TestHeadersCsvMatcherWithMultipleHeadersWhenSomeArePresent (line 125) | func TestHeadersCsvMatcherWithMultipleHeadersWhenSomeArePresent(t *testi... function TestHeadersCsvMatcherWithMultipleHeadersWhenNoneArePresent (line 137) | func TestHeadersCsvMatcherWithMultipleHeadersWhenNoneArePresent(t *testi... function TestHeaderMatcherFail (line 147) | func TestHeaderMatcherFail(t *testing.T) { function TestParamMatcher (line 158) | func TestParamMatcher(t *testing.T) { function TestParamMatcherFail (line 169) | func TestParamMatcherFail(t *testing.T) { function TestPathMatcher (line 180) | func TestPathMatcher(t *testing.T) { function TestPathMatcherFail (line 191) | func TestPathMatcherFail(t *testing.T) { FILE: pkg/shard/domain.go type CustomError (line 12) | type CustomError struct method Error (line 16) | func (e *CustomError) Error() string { function Error (line 20) | func Error(msg string) error { type BackendDefinition (line 24) | type BackendDefinition struct method Validate (line 30) | func (bd BackendDefinition) Validate() error { function toBackends (line 42) | func toBackends(shardConfig map[string]BackendDefinition) (map[string]*w... function parseBackend (line 61) | func parseBackend(shardConfig BackendDefinition) (*weaver.Backend, error) { FILE: pkg/shard/hashring.go function NewHashRingStrategy (line 14) | func NewHashRingStrategy(data json.RawMessage) (weaver.Sharder, error) { type HashRingStrategy (line 35) | type HashRingStrategy struct method Shard (line 40) | func (rs HashRingStrategy) Shard(key string) (*weaver.Backend, error) { type HashRingStrategyConfig (line 45) | type HashRingStrategyConfig struct method Validate (line 50) | func (hrCfg HashRingStrategyConfig) Validate() error { function hashringBackends (line 64) | func hashringBackends(cfg HashRingStrategyConfig) (*hashring.HashRingClu... FILE: pkg/shard/hashring_test.go function TestNewHashringStrategy (line 16) | func TestNewHashringStrategy(t *testing.T) { function TestShouldFailToCreateWhenWrongBackends (line 31) | func TestShouldFailToCreateWhenWrongBackends(t *testing.T) { function TestShouldFailToCreateWhenNoBackends (line 42) | func TestShouldFailToCreateWhenNoBackends(t *testing.T) { function TestShouldFailToCreateWhenNoBackendURL (line 52) | func TestShouldFailToCreateWhenNoBackendURL(t *testing.T) { function TestShouldFailToCreateWhenTotalVirtualBackendsIsIncorrect (line 64) | func TestShouldFailToCreateWhenTotalVirtualBackendsIsIncorrect(t *testin... function TestShouldFailToCreateWhenBackendURLIsMissing (line 77) | func TestShouldFailToCreateWhenBackendURLIsMissing(t *testing.T) { function TestShouldDefaultTotalVirtualBackendsWhenValueMissing (line 88) | func TestShouldDefaultTotalVirtualBackendsWhenValueMissing(t *testing.T) { function TestShouldFailToCreateWithIncorrectRange (line 99) | func TestShouldFailToCreateWithIncorrectRange(t *testing.T) { function TestShouldFailToCreateWithIncorrectRangeSpec (line 110) | func TestShouldFailToCreateWithIncorrectRangeSpec(t *testing.T) { function TestShouldFailToCreateHashRingOutOfBounds (line 121) | func TestShouldFailToCreateHashRingOutOfBounds(t *testing.T) { function TestShouldFailToCreateHashRingOnOverlap (line 134) | func TestShouldFailToCreateHashRingOnOverlap(t *testing.T) { function TestShouldFailToCreateHashRingForMissingValuesInTheRangeInMiddle (line 147) | func TestShouldFailToCreateHashRingForMissingValuesInTheRangeInMiddle(t ... function TestShouldFailToCreateHashRingForMissingValuesInTheRangeAtStart (line 160) | func TestShouldFailToCreateHashRingForMissingValuesInTheRangeAtStart(t *... function TestShouldCheckBackendConfiguration (line 173) | func TestShouldCheckBackendConfiguration(t *testing.T) { function TestShouldCheckBackendConfigurationForBackendName (line 188) | func TestShouldCheckBackendConfigurationForBackendName(t *testing.T) { function TestShouldCheckBackendConfigurationForBackendUrl (line 201) | func TestShouldCheckBackendConfigurationForBackendUrl(t *testing.T) { function TestShouldCheckBackendConfigurationForTimeout (line 214) | func TestShouldCheckBackendConfigurationForTimeout(t *testing.T) { function TestShouldShardConsistently (line 228) | func TestShouldShardConsistently(t *testing.T) { function TestShouldShardConsistentlyOverALargeRange (line 248) | func TestShouldShardConsistentlyOverALargeRange(t *testing.T) { function TestShouldShardConsistentlyAcrossRuns (line 280) | func TestShouldShardConsistentlyAcrossRuns(t *testing.T) { function TestShouldShardUniformally (line 315) | func TestShouldShardUniformally(t *testing.T) { function bToMb (line 356) | func bToMb(b uint64) uint64 { function PrintMemUsage (line 360) | func PrintMemUsage() runtime.MemStats { function TestShouldShardWithoutLeakingMemory (line 372) | func TestShouldShardWithoutLeakingMemory(t *testing.T) { function TestToMeasureTimeForSharding (line 397) | func TestToMeasureTimeForSharding(t *testing.T) { FILE: pkg/shard/lookup.go function NewLookupStrategy (line 9) | func NewLookupStrategy(data json.RawMessage) (weaver.Sharder, error) { type LookupStrategy (line 25) | type LookupStrategy struct method Shard (line 29) | func (ls *LookupStrategy) Shard(key string) (*weaver.Backend, error) { FILE: pkg/shard/lookup_test.go function TestNewLookupStrategy (line 11) | func TestNewLookupStrategy(t *testing.T) { function TestNewLookupStrategyFailWhenTimeoutIsInvalid (line 27) | func TestNewLookupStrategyFailWhenTimeoutIsInvalid(t *testing.T) { function TestNewLookupStrategyFailWhenNoBackendGiven (line 39) | func TestNewLookupStrategyFailWhenNoBackendGiven(t *testing.T) { function TestNewLookupStrategyFailWhenBackendIsNotString (line 51) | func TestNewLookupStrategyFailWhenBackendIsNotString(t *testing.T) { function TestNewLookupStrategyFailWhenBackendIsNotAValidURL (line 63) | func TestNewLookupStrategyFailWhenBackendIsNotAValidURL(t *testing.T) { function TestNewLookupStrategyFailsWhenConfigIsInvalid (line 75) | func TestNewLookupStrategyFailsWhenConfigIsInvalid(t *testing.T) { function TestNewLookupStrategyFailsWhenConfigValueIsInvalid (line 85) | func TestNewLookupStrategyFailsWhenConfigValueIsInvalid(t *testing.T) { FILE: pkg/shard/modulo.go function NewModuloStrategy (line 11) | func NewModuloStrategy(data json.RawMessage) (weaver.Sharder, error) { type ModuloStrategy (line 27) | type ModuloStrategy struct method Shard (line 31) | func (ms ModuloStrategy) Shard(key string) (*weaver.Backend, error) { FILE: pkg/shard/modulo_test.go function TestNewModuloShardStrategy (line 11) | func TestNewModuloShardStrategy(t *testing.T) { function TestNewModuloShardStrategyFailure (line 28) | func TestNewModuloShardStrategyFailure(t *testing.T) { function TestNewModuloStrategyFailWhenTimeoutIsInvalid (line 44) | func TestNewModuloStrategyFailWhenTimeoutIsInvalid(t *testing.T) { function TestNewModuloStrategyFailWhenNoBackendGiven (line 57) | func TestNewModuloStrategyFailWhenNoBackendGiven(t *testing.T) { function TestNewModuloStrategyFailWhenBackendIsNotString (line 70) | func TestNewModuloStrategyFailWhenBackendIsNotString(t *testing.T) { function TestNewModuloStrategyFailWhenBackendIsNotAValidURL (line 83) | func TestNewModuloStrategyFailWhenBackendIsNotAValidURL(t *testing.T) { function TestNewModuloStrategyFailsWhenConfigIsInvalid (line 96) | func TestNewModuloStrategyFailsWhenConfigIsInvalid(t *testing.T) { function TestNewModuloStrategyFailsWhenConfigValueIsInvalid (line 106) | func TestNewModuloStrategyFailsWhenConfigValueIsInvalid(t *testing.T) { FILE: pkg/shard/no.go function NewNoStrategy (line 11) | func NewNoStrategy(data json.RawMessage) (weaver.Sharder, error) { type NoStrategy (line 32) | type NoStrategy struct method Shard (line 36) | func (ns *NoStrategy) Shard(key string) (*weaver.Backend, error) { type NoStrategyConfig (line 40) | type NoStrategyConfig struct FILE: pkg/shard/no_test.go function TestNewNoStrategy (line 11) | func TestNewNoStrategy(t *testing.T) { function TestNewNoStrategyFailsWhenConfigIsInvalid (line 24) | func TestNewNoStrategyFailsWhenConfigIsInvalid(t *testing.T) { function TestNewNoStrategyFailsWhenBackendURLInvalid (line 34) | func TestNewNoStrategyFailsWhenBackendURLInvalid(t *testing.T) { function TestNewNoStrategyFailsWhenConfigValueIsInvalid (line 47) | func TestNewNoStrategyFailsWhenConfigValueIsInvalid(t *testing.T) { function TestNoStrategyFailWhenBackendIsNotAValidURL (line 57) | func TestNoStrategyFailWhenBackendIsNotAValidURL(t *testing.T) { FILE: pkg/shard/prefix_lookup.go constant defaultBackendKey (line 12) | defaultBackendKey = "default" constant defaultPrefixSplitter (line 13) | defaultPrefixSplitter = "-" type prefixLookupConfig (line 16) | type prefixLookupConfig struct method Validate (line 21) | func (plg prefixLookupConfig) Validate() error { function NewPrefixLookupStrategy (line 29) | func NewPrefixLookupStrategy(data json.RawMessage) (weaver.Sharder, erro... type PrefixLookupStrategy (line 56) | type PrefixLookupStrategy struct method Shard (line 61) | func (pls *PrefixLookupStrategy) Shard(key string) (*weaver.Backend, e... FILE: pkg/shard/prefix_lookup_test.go function TestNewPrefixLookupStrategy (line 11) | func TestNewPrefixLookupStrategy(t *testing.T) { function TestNewPrefixLookupStrategyWithDefaultPrefixSplitter (line 30) | func TestNewPrefixLookupStrategyWithDefaultPrefixSplitter(t *testing.T) { function TestNewPrefixLookupStrategyForNoPrefix (line 48) | func TestNewPrefixLookupStrategyForNoPrefix(t *testing.T) { function TestNewPrefixLookupStrategyFailWhenTimeoutIsInvalid (line 68) | func TestNewPrefixLookupStrategyFailWhenTimeoutIsInvalid(t *testing.T) { function TestNewPrefixLookupStrategyFailWhenNoBackendGiven (line 84) | func TestNewPrefixLookupStrategyFailWhenNoBackendGiven(t *testing.T) { function TestNewPrefixLookupStrategyFailWhenBackendIsNotString (line 100) | func TestNewPrefixLookupStrategyFailWhenBackendIsNotString(t *testing.T) { function TestNewPrefixLookupStrategyFailWhenBackendIsNotAValidURL (line 116) | func TestNewPrefixLookupStrategyFailWhenBackendIsNotAValidURL(t *testing... function TestNewPrefixLookupStrategyFailsWhenConfigIsInvalid (line 132) | func TestNewPrefixLookupStrategyFailsWhenConfigIsInvalid(t *testing.T) { function TestNewPrefixLookupStrategyFailsWhenConfigValueIsInvalid (line 142) | func TestNewPrefixLookupStrategyFailsWhenConfigValueIsInvalid(t *testing... FILE: pkg/shard/s2.go function NewS2Strategy (line 18) | func NewS2Strategy(data json.RawMessage) (weaver.Sharder, error) { type S2Strategy (line 48) | type S2Strategy struct method s2ID (line 129) | func (s2s *S2Strategy) s2ID(key string) (uint64, error) { method Shard (line 144) | func (s2s *S2Strategy) Shard(key string) (*weaver.Backend, error) { type S2StrategyConfig (line 54) | type S2StrategyConfig struct method Validate (line 60) | func (s2cfg S2StrategyConfig) Validate() error { method validateS2IDs (line 70) | func (s2cfg S2StrategyConfig) validateS2IDs() error { function s2idFromLatLng (line 89) | func s2idFromLatLng(latLng []string) (s2id geos2.CellID, err error) { function s2idFromSmartID (line 113) | func s2idFromSmartID(smartIDComponents []string, pos int) (s2id geos2.Ce... FILE: pkg/shard/s2_test.go function TestNewS2StrategySuccess (line 72) | func TestNewS2StrategySuccess(t *testing.T) { function TestNewS2StrategyFailure (line 78) | func TestNewS2StrategyFailure(t *testing.T) { function TestNewS2StrategyFailureWithMissingKeySeparator (line 85) | func TestNewS2StrategyFailureWithMissingKeySeparator(t *testing.T) { function TestNewS2StrategyFailureWithOverlappingShards (line 92) | func TestNewS2StrategyFailureWithOverlappingShards(t *testing.T) { function TestNewS2StrategyFailureWithInvalidS2ID (line 99) | func TestNewS2StrategyFailureWithInvalidS2ID(t *testing.T) { function TestS2StrategyS2IDSuccess (line 106) | func TestS2StrategyS2IDSuccess(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidLat (line 119) | func TestS2StrategyS2IDFailureForInvalidLat(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidLng (line 125) | func TestS2StrategyS2IDFailureForInvalidLng(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidLatLngObject (line 131) | func TestS2StrategyS2IDFailureForInvalidLatLngObject(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidAlphanumeric (line 137) | func TestS2StrategyS2IDFailureForInvalidAlphanumeric(t *testing.T) { function TestS2StrategyS2IDWithSmartIDSuccess (line 146) | func TestS2StrategyS2IDWithSmartIDSuccess(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidS2ID (line 159) | func TestS2StrategyS2IDFailureForInvalidS2ID(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidSmartID (line 166) | func TestS2StrategyS2IDFailureForInvalidSmartID(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidSeparatorConfig (line 173) | func TestS2StrategyS2IDFailureForInvalidSeparatorConfig(t *testing.T) { function TestS2StrategyS2IDFailureForInvalidPositionConfig (line 180) | func TestS2StrategyS2IDFailureForInvalidPositionConfig(t *testing.T) { function TestS2StrategyShardSuccess (line 192) | func TestS2StrategyShardSuccess(t *testing.T) { function TestS2StrategySmartIDShardSuccess (line 205) | func TestS2StrategySmartIDShardSuccess(t *testing.T) { function TestS2StrategyShardSuccessForDefaultBackend (line 223) | func TestS2StrategyShardSuccessForDefaultBackend(t *testing.T) { function TestS2StrategyShardFailure (line 231) | func TestS2StrategyShardFailure(t *testing.T) { function TestGeneratesCustomError (line 252) | func TestGeneratesCustomError(t *testing.T) { FILE: pkg/shard/shard.go function New (line 10) | func New(name string, cfg json.RawMessage) (weaver.Sharder, error) { type sharderGenerator (line 19) | type sharderGenerator FILE: pkg/util/s2.go type s2List (line 9) | type s2List method Len (line 11) | func (s2l s2List) Len() int { method Less (line 15) | func (s2l s2List) Less(i int, j int) bool { method Swap (line 19) | func (s2l s2List) Swap(i int, j int) { function toS2List (line 23) | func toS2List(ints []uint64) s2List { function ContainsOverlappingS2IDs (line 31) | func ContainsOverlappingS2IDs(ids []uint64) bool { FILE: pkg/util/s2_test.go function TestS2Len (line 10) | func TestS2Len(t *testing.T) { function TestS2Less (line 20) | func TestS2Less(t *testing.T) { function TestS2Swap (line 28) | func TestS2Swap(t *testing.T) { function TestContainsOverlappingS2IDsTrueCase (line 40) | func TestContainsOverlappingS2IDsTrueCase(t *testing.T) { function TestContainsOverlappingS2IDsFalseCase (line 48) | func TestContainsOverlappingS2IDsFalseCase(t *testing.T) { function TestToS2List (line 56) | func TestToS2List(t *testing.T) { FILE: pkg/util/util.go function ToSnake (line 8) | func ToSnake(in string) string { function BoolToOnOff (line 24) | func BoolToOnOff(on bool) string { FILE: pkg/util/util_test.go type SnakeTest (line 7) | type SnakeTest struct function TestToSnake (line 29) | func TestToSnake(t *testing.T) { FILE: server/error.go type weaverResponse (line 10) | type weaverResponse struct type errorDetails (line 14) | type errorDetails struct function notFoundError (line 21) | func notFoundError(w http.ResponseWriter, r *http.Request) { function internalServerError (line 42) | func internalServerError(w http.ResponseWriter, r *http.Request) { type err503Handler (line 63) | type err503Handler struct method ServeHTTP (line 67) | func (eh err503Handler) ServeHTTP(w http.ResponseWriter, r *http.Reque... FILE: server/error_test.go function Test404Handler (line 11) | func Test404Handler(t *testing.T) { function Test500Handler (line 21) | func Test500Handler(t *testing.T) { function Test503Handler (line 31) | func Test503Handler(t *testing.T) { FILE: server/handler.go type proxy (line 12) | type proxy struct method ServeHTTP (line 16) | func (proxy *proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { method pingHandler (line 67) | func (proxy *proxy) pingHandler(w http.ResponseWriter, r *http.Request) { function wrapNewRelicHandler (line 73) | func wrapNewRelicHandler(proxy *proxy) http.Handler { FILE: server/handler_test.go type ProxySuite (line 19) | type ProxySuite struct method SetupTest (line 25) | func (ps *ProxySuite) SetupTest() { method TestProxyHandlerOnSuccessfulRouting (line 38) | func (ps *ProxySuite) TestProxyHandlerOnSuccessfulRouting() { method TestProxyHandlerOnBodyBasedMatcherWithModuloSharding (line 84) | func (ps *ProxySuite) TestProxyHandlerOnBodyBasedMatcherWithModuloShar... method TestProxyHandlerOnPathBasedMatcherWithModuloSharding (line 131) | func (ps *ProxySuite) TestProxyHandlerOnPathBasedMatcherWithModuloShar... method TestProxyHandlerOnFailureRouting (line 177) | func (ps *ProxySuite) TestProxyHandlerOnFailureRouting() { method TestProxyHandlerOnMissingBackend (line 188) | func (ps *ProxySuite) TestProxyHandlerOnMissingBackend() { method TestHealthCheckWithPingRoute (line 224) | func (ps *ProxySuite) TestHealthCheckWithPingRoute() { method TestHealthCheckWithDefaultRoute (line 234) | func (ps *ProxySuite) TestHealthCheckWithDefaultRoute() { function TestProxySuite (line 34) | func TestProxySuite(t *testing.T) { FILE: server/loader.go type UpsertRouteFunc (line 9) | type UpsertRouteFunc type DeleteRouteFunc (line 10) | type DeleteRouteFunc type RouteLoader (line 12) | type RouteLoader interface FILE: server/mock.go type mockRouteLoader (line 9) | type mockRouteLoader struct method BootstrapRoutes (line 13) | func (mrl *mockRouteLoader) BootstrapRoutes(ctx context.Context, upser... method WatchRoutes (line 18) | func (mrl *mockRouteLoader) WatchRoutes(ctx context.Context, upsertRou... FILE: server/recovery.go function Recover (line 12) | func Recover(next http.Handler) http.Handler { FILE: server/recovery_test.go type testHandler (line 13) | type testHandler struct method ServeHTTP (line 15) | func (th testHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { function TestRecoverMiddleware (line 19) | func TestRecoverMiddleware(t *testing.T) { FILE: server/router.go type Router (line 13) | type Router struct method Route (line 20) | func (router *Router) Route(req *http.Request) (*weaver.ACL, error) { method WatchRouteUpdates (line 45) | func (router *Router) WatchRouteUpdates(routeSyncCtx context.Context) { method BootstrapRoutes (line 49) | func (router *Router) BootstrapRoutes(ctx context.Context) error { method upsertACL (line 53) | func (router *Router) upsertACL(acl *weaver.ACL) error { method deleteACL (line 57) | func (router *Router) deleteACL(acl *weaver.ACL) error { type apiName (line 18) | type apiName function NewRouter (line 38) | func NewRouter(loader RouteLoader) *Router { FILE: server/router_test.go type RouterSuite (line 20) | type RouterSuite struct method SetupTest (line 26) | func (rs *RouterSuite) SetupTest() { method TestRouteNotFound (line 38) | func (rs *RouterSuite) TestRouteNotFound() { method TestRouteInvalidACL (line 46) | func (rs *RouterSuite) TestRouteInvalidACL() { method TestRouteReturnsACL (line 58) | func (rs *RouterSuite) TestRouteReturnsACL() { method TestBootstrapRoutesUseBootstrapRoutesOfRouteLoader (line 99) | func (rs *RouterSuite) TestBootstrapRoutesUseBootstrapRoutesOfRouteLoa... method TestBootstrapRoutesUseBootstrapRoutesOfRouteLoaderFail (line 113) | func (rs *RouterSuite) TestBootstrapRoutesUseBootstrapRoutesOfRouteLoa... method TestWatchRouteUpdatesCallsWatchRoutesOfLoader (line 127) | func (rs *RouterSuite) TestWatchRouteUpdatesCallsWatchRoutesOfLoader() { function TestRouterSuite (line 34) | func TestRouterSuite(t *testing.T) { FILE: server/server.go type Weaver (line 14) | type Weaver struct function ShutdownServer (line 18) | func ShutdownServer(ctx context.Context) { function StartServer (line 22) | func StartServer(ctx context.Context, routeLoader RouteLoader) { FILE: server/wrapped_response_writer.go type wrapperResponseWriter (line 5) | type wrapperResponseWriter struct method Header (line 10) | func (w *wrapperResponseWriter) Header() http.Header { method Write (line 14) | func (w *wrapperResponseWriter) Write(data []byte) (int, error) { method WriteHeader (line 18) | func (w *wrapperResponseWriter) WriteHeader(statusCode int) { FILE: sharder.go type Sharder (line 3) | type Sharder interface