MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / TestDB_Close_CompleteShutdownFlow

Function TestDB_Close_CompleteShutdownFlow

db_test.go:871–917  ·  view source on GitHub ↗

TestDB_Close_CompleteShutdownFlow tests the complete shutdown flow

(t *testing.T)

Source from the content-addressed store, hash-verified

869
870// TestDB_Close_CompleteShutdownFlow tests the complete shutdown flow
871func TestDB_Close_CompleteShutdownFlow(t *testing.T) {
872 opts := DefaultOptions
873 opts.Dir = filepath.Join(t.TempDir(), "test-close-complete")
874 defer func() { _ = os.RemoveAll(opts.Dir) }()
875
876 db, err := Open(opts)
877 require.NoError(t, err)
878 require.NotNil(t, db)
879
880 // Create a bucket and add some data
881 bucket := "test_bucket"
882 err = db.Update(func(tx *Tx) error {
883 return tx.NewBucket(DataStructureBTree, bucket)
884 })
885 require.NoError(t, err)
886
887 // Add some test data
888 for i := 0; i < 10; i++ {
889 key := testutils.GetTestBytes(i)
890 val := testutils.GetRandomBytes(100)
891 err = db.Update(func(tx *Tx) error {
892 return tx.Put(bucket, key, val, Persistent)
893 })
894 require.NoError(t, err)
895 }
896
897 // Verify database is operational before close
898 require.False(t, db.IsClose())
899 require.False(t, db.statusMgr.isClosingOrClosed())
900
901 // Close the database
902 err = db.Close()
903 require.NoError(t, err)
904
905 // Verify database is closed
906 require.True(t, db.IsClose())
907 require.True(t, db.statusMgr.isClosed())
908
909 // Verify resources are released
910 require.Nil(t, db.ActiveFile)
911 require.Nil(t, db.Index)
912 require.Nil(t, db.fm)
913 require.Nil(t, db.commitBuffer)
914
915 // Verify file lock is released
916 require.False(t, db.flock.Locked())
917}
918
919// TestDB_Close_WithActiveTxs tests closing database with active transactions
920func TestDB_Close_WithActiveTxs(t *testing.T) {

Callers

nothing calls this directly

Calls 10

GetTestBytesFunction · 0.92
GetRandomBytesFunction · 0.92
OpenFunction · 0.85
UpdateMethod · 0.80
NewBucketMethod · 0.80
IsCloseMethod · 0.80
isClosingOrClosedMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.45
isClosedMethod · 0.45

Tested by

no test coverage detected