Browse Source

Add benchmark for Conn.GetRoutingKey

Adrien Bustany 10 years ago
parent
commit
9981847067
1 changed files with 33 additions and 0 deletions
  1. 33 0
      stress_test.go

+ 33 - 0
stress_test.go

@@ -38,3 +38,36 @@ func BenchmarkConnStress(b *testing.B) {
 	b.RunParallel(writer)
 	b.RunParallel(writer)
 
 
 }
 }
+
+func BenchmarkConnRoutingKey(b *testing.B) {
+	const workers = 16
+
+	cluster := createCluster()
+	cluster.NumConns = 1
+	cluster.NumStreams = workers
+	cluster.ConnPoolType = NewTokenAwareConnPool
+	session := createSessionFromCluster(cluster, b)
+	defer session.Close()
+
+	if err := createTable(session, "CREATE TABLE IF NOT EXISTS routing_key_stress (id int primary key)"); err != nil {
+		b.Fatal(err)
+	}
+
+	var seed uint64
+	writer := func(pb *testing.PB) {
+		seed := atomic.AddUint64(&seed, 1)
+		var i uint64 = 0
+		query := session.Query("insert into routing_key_stress (id) values (?)")
+
+		for pb.Next() {
+			if _, err := query.Bind(i * seed).GetRoutingKey(); err != nil {
+				b.Error(err)
+				return
+			}
+			i++
+		}
+	}
+
+	b.SetParallelism(workers)
+	b.RunParallel(writer)
+}