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

Function TestDB_Close_ResourceCleanup

db_test.go:1257–1312  ·  view source on GitHub ↗

TestDB_Close_ResourceCleanup tests that all resources are properly cleaned up

(t *testing.T)

Source from the content-addressed store, hash-verified

1255
1256// TestDB_Close_ResourceCleanup tests that all resources are properly cleaned up
1257func TestDB_Close_ResourceCleanup(t *testing.T) {
1258 opts := DefaultOptions
1259 opts.Dir = filepath.Join(t.TempDir(), "test-close-cleanup")
1260 defer func() { _ = os.RemoveAll(opts.Dir) }()
1261
1262 db, err := Open(opts)
1263 require.NoError(t, err)
1264 require.NotNil(t, db)
1265
1266 bucket := "test_bucket"
1267 err = db.Update(func(tx *Tx) error {
1268 return tx.NewBucket(DataStructureBTree, bucket)
1269 })
1270 require.NoError(t, err)
1271
1272 // Add some data
1273 for i := 0; i < 10; i++ {
1274 key := testutils.GetTestBytes(i)
1275 val := testutils.GetRandomBytes(100)
1276 err = db.Update(func(tx *Tx) error {
1277 return tx.Put(bucket, key, val, Persistent)
1278 })
1279 require.NoError(t, err)
1280 }
1281
1282 // Close database
1283 err = db.Close()
1284 require.NoError(t, err)
1285
1286 // Verify all resources are released
1287 require.Nil(t, db.ActiveFile, "ActiveFile should be nil")
1288 require.Nil(t, db.Index, "Index should be nil")
1289 require.Nil(t, db.fm, "FileManager should be nil")
1290 require.Nil(t, db.commitBuffer, "commitBuffer should be nil")
1291
1292 // Verify file lock is released
1293 require.False(t, db.flock.Locked(), "File lock should be released")
1294
1295 // Verify we can open the database again (proves lock is released)
1296 db2, err := Open(opts)
1297 require.NoError(t, err)
1298 require.NotNil(t, db2)
1299
1300 // Verify data is still accessible
1301 err = db2.View(func(tx *Tx) error {
1302 val, err := tx.Get(bucket, testutils.GetTestBytes(0))
1303 require.NoError(t, err)
1304 require.NotNil(t, val)
1305 return nil
1306 })
1307 require.NoError(t, err)
1308
1309 // Clean up
1310 err = db2.Close()
1311 require.NoError(t, err)
1312}
1313
1314// TestDB_Close_ErrorHandling tests error handling during component shutdown

Callers

nothing calls this directly

Calls 9

GetTestBytesFunction · 0.92
GetRandomBytesFunction · 0.92
OpenFunction · 0.85
UpdateMethod · 0.80
NewBucketMethod · 0.80
ViewMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected