Browse Source

Add benchmark for etchosts.Delete

Also added more checks to test

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Alexander Morozov 9 năm trước cách đây
mục cha
commit
de7607f509
1 tập tin đã thay đổi với 55 bổ sung0 xóa
  1. 55 0
      libnetwork/etchosts/etchosts_test.go

+ 55 - 0
libnetwork/etchosts/etchosts_test.go

@@ -223,6 +223,10 @@ func TestDelete(t *testing.T) {
 			Hosts: "testhostname2",
 			IP:    "2.2.2.2",
 		},
+		Record{
+			Hosts: "testhostname3",
+			IP:    "3.3.3.3",
+		},
 	}); err != nil {
 		t.Fatal(err)
 	}
@@ -232,6 +236,10 @@ func TestDelete(t *testing.T) {
 			Hosts: "testhostname1",
 			IP:    "1.1.1.1",
 		},
+		Record{
+			Hosts: "testhostname3",
+			IP:    "3.3.3.3",
+		},
 	}); err != nil {
 		t.Fatal(err)
 	}
@@ -307,3 +315,50 @@ func TestConcurrentWrites(t *testing.T) {
 		t.Fatalf("Expected to find '%s' got '%s'", expected, content)
 	}
 }
+
+func benchDelete(b *testing.B) {
+	b.StopTimer()
+	file, err := ioutil.TempFile("", "")
+	if err != nil {
+		b.Fatal(err)
+	}
+	defer func() {
+		b.StopTimer()
+		file.Close()
+		os.Remove(file.Name())
+		b.StartTimer()
+	}()
+
+	err = Build(file.Name(), "", "", "", nil)
+	if err != nil {
+		b.Fatal(err)
+	}
+
+	var records []Record
+	var toDelete []Record
+	for i := 0; i < 255; i++ {
+		record := Record{
+			Hosts: fmt.Sprintf("testhostname%d", i),
+			IP:    fmt.Sprintf("%d.%d.%d.%d", i, i, i, i),
+		}
+		records = append(records, record)
+		if i%2 == 0 {
+			toDelete = append(records, record)
+		}
+	}
+
+	if err := Add(file.Name(), records); err != nil {
+		b.Fatal(err)
+	}
+
+	b.StartTimer()
+	if err := Delete(file.Name(), toDelete); err != nil {
+		b.Fatal(err)
+	}
+}
+
+func BenchmarkDelete(b *testing.B) {
+	for i := 0; i < b.N; i++ {
+		benchDelete(b)
+	}
+}