浏览代码

Add test to expose Sample data race

Artyom Pervukhin 11 年之前
父节点
当前提交
d2ab7a99fa
共有 1 个文件被更改,包括 31 次插入0 次删除
  1. 31 0
      sample_test.go

+ 31 - 0
sample_test.go

@@ -319,3 +319,34 @@ func testUniformSampleStatistics(t *testing.T, s Sample) {
 		t.Errorf("99th percentile: 9999.99 != %v\n", ps[2])
 	}
 }
+
+// TestUniformSampleConcurrentUpdateCount would expose data race problems with
+// concurrent Update and Count calls on Sample when test is called with -race
+// argument
+func TestUniformSampleConcurrentUpdateCount(t *testing.T) {
+	if testing.Short() {
+		t.Skip("skipping in short mode")
+	}
+	s := NewUniformSample(100)
+	for i := 0; i < 100; i++ {
+		s.Update(int64(i))
+	}
+	quit := make(chan struct{})
+	go func() {
+		t := time.NewTicker(10 * time.Millisecond)
+		for {
+			select {
+			case <-t.C:
+				s.Update(rand.Int63())
+			case <-quit:
+				t.Stop()
+				return
+			}
+		}
+	}()
+	for i := 0; i < 1000; i++ {
+		s.Count()
+		time.Sleep(5 * time.Millisecond)
+	}
+	quit <- struct{}{}
+}