mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-20 23:46:23 +01:00
ea06d2fd3c
This should prevent from `no space left on device` errors when VictoriaMetrics under-estimates the additional disk space needed for background merge. See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2603
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package storage
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestTableOpenClose(t *testing.T) {
|
|
const path = "TestTableOpenClose"
|
|
const retentionMsecs = 123 * msecsPerMonth
|
|
|
|
if err := os.RemoveAll(path); err != nil {
|
|
t.Fatalf("cannot remove %q: %s", path, err)
|
|
}
|
|
defer func() {
|
|
_ = os.RemoveAll(path)
|
|
}()
|
|
|
|
// Create a new table
|
|
var isReadOnly uint32
|
|
tb, err := openTable(path, nilGetDeletedMetricIDs, retentionMsecs, &isReadOnly)
|
|
if err != nil {
|
|
t.Fatalf("cannot create new table: %s", err)
|
|
}
|
|
|
|
// Close it
|
|
tb.MustClose()
|
|
|
|
// Re-open created table multiple times.
|
|
for i := 0; i < 10; i++ {
|
|
tb, err := openTable(path, nilGetDeletedMetricIDs, retentionMsecs, &isReadOnly)
|
|
if err != nil {
|
|
t.Fatalf("cannot open created table: %s", err)
|
|
}
|
|
tb.MustClose()
|
|
}
|
|
}
|
|
|
|
func TestTableOpenMultipleTimes(t *testing.T) {
|
|
const path = "TestTableOpenMultipleTimes"
|
|
const retentionMsecs = 123 * msecsPerMonth
|
|
|
|
defer func() {
|
|
_ = os.RemoveAll(path)
|
|
}()
|
|
|
|
var isReadOnly uint32
|
|
tb1, err := openTable(path, nilGetDeletedMetricIDs, retentionMsecs, &isReadOnly)
|
|
if err != nil {
|
|
t.Fatalf("cannot open table the first time: %s", err)
|
|
}
|
|
defer tb1.MustClose()
|
|
|
|
for i := 0; i < 10; i++ {
|
|
tb2, err := openTable(path, nilGetDeletedMetricIDs, retentionMsecs, &isReadOnly)
|
|
if err == nil {
|
|
tb2.MustClose()
|
|
t.Fatalf("expecting non-nil error when opening already opened table")
|
|
}
|
|
}
|
|
}
|