func main() { runner.Run(os.Args[1:], func() { plugin.RegisterMultiBackendAdapterFactory("handle-things", adapter.HandleThingsFactory) plugin.RegisterWrapperFactory("SessionId", session.NewSessionWrapper) plugin.RegisterWrapperFactory("Timing", timing.NewTimingWrapper) plugin.RegisterWrapperFactory("Recovery", recovery.NewRecoveryWrapper) }) }
func TestMRConfigListener(t *testing.T) { log.SetLevel(log.InfoLevel) var bHandler plugin.MultiBackendHandlerFunc = func(m plugin.BackendHandlerMap, w http.ResponseWriter, r *http.Request) { w.Write([]byte(bHandlerStuff)) ah := m[backendA] ar := httptest.NewRecorder() ah.ServeHTTP(ar, r) assert.Equal(t, aBackendResponse, ar.Body.String()) bh := m[backendB] br := httptest.NewRecorder() bh.ServeHTTP(br, r) assert.Equal(t, bBackendResponse, br.Body.String()) } var BMBAFactory = func(bhMap plugin.BackendHandlerMap) *plugin.MultiBackendAdapter { return &plugin.MultiBackendAdapter{ BackendHandlerCtx: bhMap, Handler: bHandler, } } plugin.RegisterMultiBackendAdapterFactory(multiBackendAdapterFactory, BMBAFactory) AServer := httptest.NewServer(http.HandlerFunc(handleAStuff)) BServer := httptest.NewServer(http.HandlerFunc(handleBStuff)) defer AServer.Close() defer BServer.Close() ms := mrtBuildListener(AServer.URL, BServer.URL) uriToRoutesMap := ms.organizeRoutesByUri() uriToGuardAndHandlerMap := mapRoutesToGuardAndHandler(uriToRoutesMap) uriHandlerMap := makeURIHandlerMap(uriToGuardAndHandlerMap) assert.Equal(t, 1, len(uriHandlerMap)) ls := httptest.NewServer(timing.NewTimingWrapper().Wrap(uriHandlerMap[fooURI])) defer ls.Close() resp, err := http.Get(ls.URL + fooURI) assert.Nil(t, err) body, _ := ioutil.ReadAll(resp.Body) defer resp.Body.Close() assert.True(t, strings.Contains(string(body), bHandlerStuff)) }
func makeListenerWithMultiRoutesForTest(t *testing.T, loadBalancerPolicyName string) *managedService { var bHandler plugin.MultiBackendHandlerFunc = func(m plugin.BackendHandlerMap, w http.ResponseWriter, r *http.Request) { w.Write([]byte("b stuff")) _, ok := m["A"] if ok == true { w.Write([]byte("context stuff")) } } var BMRAFactory = func(bhMap plugin.BackendHandlerMap) *plugin.MultiBackendAdapter { return &plugin.MultiBackendAdapter{ BackendHandlerCtx: bhMap, Handler: bHandler, } } plugin.RegisterMultiBackendAdapterFactory("test-multiroute-plugin", BMRAFactory) testBackends := makeTestBackends(t, "http://localhost:666", "") var r1 = route{ Name: "route2", URIRoot: "/foo2", Backends: testBackends, MultiBackendPluginName: "test-multiroute-plugin", } var ms = managedService{ Address: "localhost:1234", ListenerName: "test listener", Routes: []route{r1}, } return &ms }