underlyingConn *fakes.FakeConn countingConn db.Conn ) BeforeEach(func() { underlyingConn = new(fakes.FakeConn) countingConn = metric.CountQueries(underlyingConn) }) AfterEach(func() { err := countingConn.Close() Expect(err).NotTo(HaveOccurred()) }) It("passes through calls to the underlying connection", func() { countingConn.Ping() Expect(underlyingConn.PingCallCount()).To(Equal(1)) }) It("returns the return values from the underlying connection", func() { underlyingConn.PingReturns(errors.New("disaster")) err := countingConn.Ping() Expect(err).To(MatchError("disaster")) }) Describe("query counting", func() { It("increments the global (;_;) counter", func() { _, err := countingConn.Query("SELECT $1::int", 1) Expect(err).NotTo(HaveOccurred())
explainConn db.Conn ) BeforeEach(func() { logger = lagertest.NewTestLogger("explain") underlyingConn = new(fakes.FakeConn) explainConn = db.Explain(logger, underlyingConn, 100*time.Millisecond) }) AfterEach(func() { err := explainConn.Close() Ω(err).ShouldNot(HaveOccurred()) }) It("passes through calls to the underlying connection", func() { explainConn.Ping() Ω(underlyingConn.PingCallCount()).To(Equal(1)) }) It("returns the return values from the underlying connection", func() { underlyingConn.PingReturns(errors.New("disaster")) err := explainConn.Ping() Ω(err).Should(MatchError("disaster")) }) Context("when the query takes less time than the timeout", func() { var realConn *sql.DB BeforeEach(func() {