diff --git a/data/data_test.go b/data/data_test.go
index e7d5478..a538d54 100644
--- a/data/data_test.go
+++ b/data/data_test.go
@@ -26,7 +26,7 @@
 )
 
 const (
-	count    = 5000
+	count    = 500
 	setupSql = `
 		CREATE TABLE test_1 (id INTEGER PRIMARY KEY, counter TEXT);
 		CREATE TABLE test_2 (id INTEGER PRIMARY KEY, counter TEXT);`
@@ -48,19 +48,6 @@
 		_, err = apid.Data().DBVersionForID("common", "base")
 		Expect(err).To(HaveOccurred())
 	})
-	It("DB Begin Txn failure handled", func() {
-		var numRows int
-		db, err := apid.Data().DBForID("test")
-		db.SetMaxOpenConns(1)
-		db.SetMaxIdleConns(1)
-		err = db.QueryRow(`SELECT count(*) FROM test_2`).Scan(&numRows)
-		Expect(err).To(HaveOccurred())
-
-		tx, err := db.Begin()
-		Expect(err).NotTo(HaveOccurred())
-		tx.Commit()
-
-	})
 	It("should be able to change versions of a datbase", func() {
 		var versions []string
 		var dbs []apid.DB
@@ -94,10 +81,10 @@
 		Expect(data.DBPath(id)).ShouldNot(BeAnExistingFile())
 	})
 
-	It("should handle concurrent read & serialized write", func() {
+	It("should handle concurrent read & serialized write, and throttle", func() {
 		db, err := apid.Data().DBForID("test")
-		db.SetMaxOpenConns(1)
-		db.SetMaxIdleConns(1)
+		db.SetMaxOpenConns(10)
+		db.SetMaxIdleConns(10)
 		Expect(err).NotTo(HaveOccurred())
 		setup(db)
 		finished := make(chan bool, count+1)
@@ -118,14 +105,14 @@
 
 		for i := 0; i < count+1; i++ {
 			<-finished
-			Expect(db.Stats().OpenConnections).To(Equal(1))
 		}
+		Expect(db.Stats().OpenConnections).To(Equal(10))
 	}, 10)
 
 	It("should handle concurrent write", func() {
 		db, err := apid.Data().DBForID("test_write")
-		db.SetMaxOpenConns(1)
-		db.SetMaxIdleConns(1)
+		db.SetMaxOpenConns(10)
+		db.SetMaxIdleConns(10)
 		Expect(err).NotTo(HaveOccurred())
 		setup(db)
 		finished := make(chan bool, count)
@@ -139,8 +126,9 @@
 
 		for i := 0; i < count; i++ {
 			<-finished
-			Expect(db.Stats().OpenConnections).To(Equal(1))
 		}
+		// Only one connection should get opened, as connections are serialized.
+		Expect(db.Stats().OpenConnections).To(Equal(1))
 	}, 10)
 })
 
