func prepareServer(serviceName string) *httptest.Server {
	// wir schreiben einen fake server. Dieser server stellt den eigentlichen service dar,
	// an den du deine Requests weiterleiten möchtest (beispielsweise der authentication-service).
	// Falls er angesprochen wird soll er den Statuscode 418 (im a teapot) zurückgesendet.
	serviceHandler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		w.WriteHeader(http.StatusTeapot)
	}))
	server := httptest.NewServer(serviceHandler)

	// der servicecache wird so konfiguriert, dass er immer die url des eben erstellten server zurückliefert.
	// Wir umgehen somit die periodischen Anfragen an den discovery-service.
	fakeRetriever := func(consulAddress string) (map[string]*api.AgentService, error) {
		services := make(map[string]*api.AgentService)
		serviceUrl, _ := url.Parse(server.URL)
		parts := strings.Split(serviceUrl.Host, ":")
		host := parts[0]
		port, _ := strconv.Atoi(parts[1])
		services[serviceName] = createService(serviceName+"1", serviceName, port, host, "public", "interactive-lecture")
		return services, nil
	}
	// wir configurieren den cache und bauen anschließend unseren mock-retreiver ein.
	cache, _ := servicecache.Configure("discovery:8500", 1*time.Millisecond, serviceName)
	cache.SetServiceRetriever(fakeRetriever)
	return server
}
func main() {
	r := mux.NewRouter()
	servicecache.Configure("discovery:8500", 10*time.Second, "authentication-service", "lecture-service")
	//serviceclient.Configure(cacheadapter.New("discovery:8500", 10*time.Second, 5*time.Second, 3))
	servicecache.Start(3, 5*time.Second)
	log.Println("listening on 8000")
	// Bind to a port and pass our router in
	http.ListenAndServe(":8000", r)
}