|
@@ -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)
|
|
|
+ }
|
|
|
+}
|