MCPcopy
hub / github.com/etcd-io/bbolt / TestBucket_Delete_Quick

Function TestBucket_Delete_Quick

bucket_test.go:1935–1992  ·  view source on GitHub ↗

Ensure that a transaction can delete all key/value pairs and return to a single leaf page.

(t *testing.T)

Source from the content-addressed store, hash-verified

1933
1934// Ensure that a transaction can delete all key/value pairs and return to a single leaf page.
1935func TestBucket_Delete_Quick(t *testing.T) {
1936 if testing.Short() {
1937 t.Skip("skipping test in short mode.")
1938 }
1939
1940 if err := quick.Check(func(items testdata) bool {
1941 db := btesting.MustCreateDB(t)
1942 defer db.MustClose()
1943
1944 // Bulk insert all values.
1945 if err := db.Update(func(tx *bolt.Tx) error {
1946 if _, err := tx.CreateBucket([]byte("widgets")); err != nil {
1947 t.Fatal(err)
1948 }
1949 return nil
1950 }); err != nil {
1951 t.Fatal(err)
1952 }
1953
1954 if err := db.Update(func(tx *bolt.Tx) error {
1955 b := tx.Bucket([]byte("widgets"))
1956 for _, item := range items {
1957 if err := b.Put(item.Key, item.Value); err != nil {
1958 t.Fatal(err)
1959 }
1960 }
1961 return nil
1962 }); err != nil {
1963 t.Fatal(err)
1964 }
1965
1966 // Remove items one at a time and check consistency.
1967 for _, item := range items {
1968 if err := db.Update(func(tx *bolt.Tx) error {
1969 return tx.Bucket([]byte("widgets")).Delete(item.Key)
1970 }); err != nil {
1971 t.Fatal(err)
1972 }
1973 }
1974
1975 // Anything before our deletion index should be nil.
1976 if err := db.View(func(tx *bolt.Tx) error {
1977 if err := tx.Bucket([]byte("widgets")).ForEach(func(k, v []byte) error {
1978 t.Fatalf("bucket should be empty; found: %06x", trunc(k, 3))
1979 return nil
1980 }); err != nil {
1981 t.Fatal(err)
1982 }
1983 return nil
1984 }); err != nil {
1985 t.Fatal(err)
1986 }
1987
1988 return true
1989 }, qconfig()); err != nil {
1990 t.Error(err)
1991 }
1992}

Callers

nothing calls this directly

Calls 15

MustCreateDBFunction · 0.92
truncFunction · 0.85
qconfigFunction · 0.85
CheckMethod · 0.80
MustCloseMethod · 0.80
UpdateMethod · 0.80
ViewMethod · 0.80
FatalMethod · 0.65
FatalfMethod · 0.65
ErrorMethod · 0.65
CreateBucketMethod · 0.45
BucketMethod · 0.45

Tested by

no test coverage detected