コード例 #1
0
ファイル: ssh_test.go プロジェクト: vframbach/cli
			echoHandler.HandleConnectionStub = func(conn net.Conn) {
				io.Copy(conn, conn)
				conn.Close()
			}

			realListener, err := net.Listen("tcp", "127.0.0.1:0")
			Expect(err).NotTo(HaveOccurred())
			echoAddress = realListener.Addr().String()

			echoListener = &fake_net.FakeListener{}
			echoListener.AcceptStub = realListener.Accept
			echoListener.CloseStub = realListener.Close
			echoListener.AddrStub = realListener.Addr

			fakeLocalListener = &fake_net.FakeListener{}
			fakeLocalListener.AcceptReturns(nil, errors.New("Not Accepting Connections"))

			echoServer = server.NewServer(logger.Session("echo"), "", echoHandler)
			echoServer.SetListener(echoListener)
			go echoServer.Serve()

			opts = &options.SSHOptions{
				AppName: "app-1",
				ForwardSpecs: []options.ForwardSpec{{
					ListenAddress:  localAddress,
					ConnectAddress: echoAddress,
				}},
			}

			currentApp.State = "STARTED"
			currentApp.Diego = true
コード例 #2
0
			srv.SetListener(fakeListener)
			srv.Serve()
		})

		It("accepts inbound connections", func() {
			Expect(fakeListener.AcceptCallCount()).To(Equal(2))
		})

		It("passes the connection to the connection handler", func() {
			Eventually(handler.HandleConnectionCallCount).Should(Equal(1))
			Expect(handler.HandleConnectionArgsForCall(0)).To(Equal(fakeConn))
		})

		Context("when accept returns a permanent error", func() {
			BeforeEach(func() {
				fakeListener.AcceptReturns(nil, errors.New("oops"))
			})

			It("closes the listener", func() {
				Expect(fakeListener.CloseCallCount()).To(Equal(1))
			})
		})

		Context("when accept returns a temporary error", func() {
			var timeCh chan time.Time

			BeforeEach(func() {
				timeCh = make(chan time.Time, 3)

				fakeListener.AcceptStub = func() (net.Conn, error) {
					timeCh := timeCh