1
0
Fork 0

Add more upgrade tests

master
Philip O'Toole 2 years ago
parent 0a5774e751
commit 055365b751

@ -713,7 +713,8 @@ func Test_SingleNodeNoSQLInjection(t *testing.T) {
}
}
func Test_SingleNodeRestart(t *testing.T) {
// Test_SingleNodeUpgrade6_0_0 tests upgrade from a simple 6.0.0 system.
func Test_SingleNodeUpgrade6_0_0(t *testing.T) {
// Deprovision of a node deletes the node's dir, so make a copy first.
srcdir := filepath.Join("testdata", "v6.0.0-data")
destdir := mustTempDir()
@ -756,6 +757,94 @@ func Test_SingleNodeRestart(t *testing.T) {
}
}
// Test_SingleNodeUpgrade7_0_0 tests upgrade from a simple 7.0.0 system.
func Test_SingleNodeUpgrade7_0_0(t *testing.T) {
// Deprovision of a node deletes the node's dir, so make a copy first.
srcdir := filepath.Join("testdata", "v7.0.0-data")
destdir := mustTempDir()
if err := os.Remove(destdir); err != nil {
t.Fatalf("failed to remove dest dir: %s", err)
}
if err := copyDir(srcdir, destdir); err != nil {
t.Fatalf("failed to copy node test directory: %s", err)
}
mux, ln := mustNewOpenMux("")
defer ln.Close()
node := mustNodeEncrypted(destdir, true, false, mux, "node1")
defer node.Deprovision()
if _, err := node.WaitForLeader(); err != nil {
t.Fatal("node never became leader")
}
// Let's wait a few seconds to be sure logs are applied.
n := 0
for {
time.Sleep(1 * time.Second)
r, err := node.QueryNoneConsistency(`SELECT COUNT(*) FROM foo`)
if err != nil {
t.Fatalf("query failed: %s", err)
}
expected := `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[20]]}]}`
if r != expected {
if n == 10 {
t.Fatalf(`query received wrong result, got: %s exp: %s`, r, expected)
}
} else {
break // Test successful!
}
n++
}
}
// Test_SingleNodeUpgrade7_9_2 tests upgrade from a simple 7.9.2 system.
func Test_SingleNodeUpgrade7_9_2(t *testing.T) {
// Deprovision of a node deletes the node's dir, so make a copy first.
srcdir := filepath.Join("testdata", "v7.9.2-data")
destdir := mustTempDir()
if err := os.Remove(destdir); err != nil {
t.Fatalf("failed to remove dest dir: %s", err)
}
if err := copyDir(srcdir, destdir); err != nil {
t.Fatalf("failed to copy node test directory: %s", err)
}
mux, ln := mustNewOpenMux("")
defer ln.Close()
node := mustNodeEncrypted(destdir, true, false, mux, "node1")
defer node.Deprovision()
if _, err := node.WaitForLeader(); err != nil {
t.Fatal("node never became leader")
}
// Let's wait a few seconds to be sure logs are applied.
n := 0
for {
time.Sleep(1 * time.Second)
r, err := node.QueryNoneConsistency(`SELECT COUNT(*) FROM foo`)
if err != nil {
t.Fatalf("query failed: %s", err)
}
expected := `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[20]]}]}`
if r != expected {
if n == 10 {
t.Fatalf(`query received wrong result, got: %s exp: %s`, r, expected)
}
} else {
break // Test successful!
}
n++
}
}
func Test_SingleNodeNodes(t *testing.T) {
node := mustNewLeaderNode()
defer node.Deprovision()

@ -0,0 +1,12 @@
#!/bin/bash
curl -s -XPOST 'localhost:4001/db/execute' -H "Content-Type: application/json" -d '[
"CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)"
]'
for i in {1..20}
do
curl -s -XPOST 'localhost:4001/db/execute' -H "Content-Type: application/json" -d '[
"INSERT INTO foo(name) VALUES(\"fiona\")"
]'
done

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save