1
0
Fork 0

Add unit test for >1GiB in-memory databases

>2GiB in-memory are still not supported.
master
Philip O'Toole 3 years ago
parent bf6e7de219
commit 08eb74493d

@ -12,6 +12,7 @@ import (
"github.com/rqlite/rqlite/command" "github.com/rqlite/rqlite/command"
"github.com/rqlite/rqlite/command/encoding" "github.com/rqlite/rqlite/command/encoding"
"github.com/rqlite/rqlite/db/testdata"
"github.com/rqlite/rqlite/testdata/chinook" "github.com/rqlite/rqlite/testdata/chinook"
) )
@ -1398,6 +1399,47 @@ func Test_DumpMemory(t *testing.T) {
} }
} }
// Test_1GiBInMemory tests that in-memory databases larger than 1GiB,
// but smaller than 2GiB, can be created without issue.
func Test_1GiBInMemory(t *testing.T) {
t.Parallel()
db := mustCreateInMemoryDatabase()
defer db.Close()
_, err := db.ExecuteStringStmt("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, txt TEXT)")
if err != nil {
t.Fatalf("failed to create table: %s", err.Error())
}
stmt := fmt.Sprintf(`INSERT INTO foo(txt) VALUES("%s")`, text.Lorum)
for i := 0; i < 1715017; i++ {
r, err := db.ExecuteStringStmt(stmt)
if err != nil {
t.Fatalf("failed to Execute statement %s", err.Error())
}
if len(r) != 1 {
t.Fatalf("unexpected length for Execute results: %d", len(r))
}
if r[0].GetError() != "" {
t.Fatalf("failed to insert record: %s", r[0].GetError())
}
}
r, err := db.ExecuteStringStmt(stmt)
if err != nil {
t.Fatalf("failed to insert record %s", err.Error())
}
fmt.Println(r)
sz, err := db.Size()
if err != nil {
t.Fatalf("failed to get size: %s", err.Error())
}
if sz <= 1073741824 {
t.Fatalf("failed to create a database greater than 1 GiB in size: %d", sz)
}
}
// Test_ParallelOperationsInMemory runs multiple accesses concurrently, ensuring // Test_ParallelOperationsInMemory runs multiple accesses concurrently, ensuring
// that correct results are returned in every goroutine. It's not 100% that this // that correct results are returned in every goroutine. It's not 100% that this
// test would bring out a bug, but it's almost 100%. // test would bring out a bug, but it's almost 100%.

@ -0,0 +1,3 @@
package text
const Lorum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ultricies turpis nisi, quis egestas enim scelerisque sit amet. Maecenas id massa tempus, pellentesque metus sit amet, faucibus ex. Fusce velit lacus, eleifend sit amet semper vitae, varius nec odio. Vestibulum dignissim massa sem, quis elementum nibh sodales ac. Mauris eget pretium diam. Praesent non diam mauris. Suspendisse finibus non purus non condimentum. In hac habitasse platea dictumst. Quisque vitae nibh justo. Aliquam tempus eget diam at commodo. Aenean nec sem leo. Cras bibendum, quam eu elementum laoreet, turpis orci bibendum arcu, id euismod justo dolor a augue"
Loading…
Cancel
Save