-
-type testServer struct {
- http.Server
- addr string
- stop chan bool
-}
-
-func (srv *testServer) Close() {
- close(srv.stop)
-}
-
-func newTestServer() *testServer {
- ln, err := net.Listen("tcp", ":")
- if err != nil {
- panic(err)
- }
- cfg := defaultConfig()
- cfg.Client = *(arvados.NewClientFromEnv())
- es := &pgEventSource{
- DataSource: testDBConfig().ConnectionString(),
- QueueSize: 4,
- }
- srv := &testServer{
- Server: http.Server{
- Addr: ":",
- ReadTimeout: 10 * time.Second,
- WriteTimeout: 10 * time.Second,
- Handler: &router{
- Config: &cfg,
- eventSource: es,
- newPermChecker: func() permChecker { return newPermChecker(cfg.Client) },
- },
- },
- addr: ln.Addr().String(),
- stop: make(chan bool),
- }
- go es.Run()
- go srv.Serve(ln)
- go func() {
- <-srv.stop
- ln.Close()
- es.cancel()
- }()
- es.waitReady()
- return srv
-}