Merge branch '11095-cwl-control-reuse' closes #11095
[arvados.git] / services / ws / session_v0_test.go
index d8a2b698f44d1713a708d3f13c7b17f564263d10..f6fe3f60e6bcd929ac917bc469d3b86cf2a542c7 100644 (file)
@@ -5,8 +5,6 @@ import (
        "encoding/json"
        "fmt"
        "io"
-       "net"
-       "net/http"
        "net/url"
        "os"
        "time"
@@ -27,11 +25,13 @@ func init() {
 var _ = check.Suite(&v0Suite{})
 
 type v0Suite struct {
-       token    string
-       toDelete []string
+       serverSuite serverSuite
+       token       string
+       toDelete    []string
 }
 
 func (s *v0Suite) SetUpTest(c *check.C) {
+       s.serverSuite.SetUpTest(c)
        s.token = arvadostest.ActiveToken
 }
 
@@ -228,9 +228,11 @@ func (s *v0Suite) expectLog(c *check.C, r *json.Decoder) *arvados.Log {
        return lg
 }
 
-func (s *v0Suite) testClient() (*testServer, *websocket.Conn, *json.Decoder, *json.Encoder) {
-       srv := newTestServer()
-       conn, err := websocket.Dial("ws://"+srv.addr+"/websocket?api_token="+s.token, "", "http://"+srv.addr)
+func (s *v0Suite) testClient() (*server, *websocket.Conn, *json.Decoder, *json.Encoder) {
+       go s.serverSuite.srv.Run()
+       s.serverSuite.srv.WaitReady()
+       srv := s.serverSuite.srv
+       conn, err := websocket.Dial("ws://"+srv.listener.Addr().String()+"/websocket?api_token="+s.token, "", "http://"+srv.listener.Addr().String())
        if err != nil {
                panic(err)
        }
@@ -238,47 +240,3 @@ func (s *v0Suite) testClient() (*testServer, *websocket.Conn, *json.Decoder, *js
        r := json.NewDecoder(conn)
        return srv, conn, r, w
 }
-
-type testServer struct {
-       http.Server
-       addr string
-       ln   net.Listener
-       pges *pgEventSource
-}
-
-func (srv *testServer) Close() {
-       srv.ln.Close()
-       srv.pges.cancel()
-}
-
-func newTestServer() *testServer {
-       ln, err := net.Listen("tcp", ":")
-       if err != nil {
-               panic(err)
-       }
-       cfg := defaultConfig()
-       cfg.Client = *(arvados.NewClientFromEnv())
-       pges := &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:    pges,
-                               newPermChecker: func() permChecker { return newPermChecker(cfg.Client) },
-                       },
-               },
-               addr: ln.Addr().String(),
-               ln:   ln,
-               pges: pges,
-       }
-       go pges.Run()
-       go srv.Serve(ln)
-       pges.waitReady()
-       return srv
-}