Ensure that a transaction can delete all key/value pairs and return to a single leaf page.
(t *testing.T)
| 1933 | |
| 1934 | // Ensure that a transaction can delete all key/value pairs and return to a single leaf page. |
| 1935 | func 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 | } |
nothing calls this directly
no test coverage detected