1
0
Fork 0

Merge pull request #1172 from rqlite/abl-1

ABL
master
Philip O'Toole 2 years ago committed by GitHub
commit 485a56ab3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -121,7 +121,7 @@ func Test_MultiNodeCluster(t *testing.T) {
// Kill the leader and wait for the new leader. // Kill the leader and wait for the new leader.
leader.Deprovision() leader.Deprovision()
c.RemoveNode(leader) c = c.RemoveNode(leader)
leader, err = c.WaitForNewLeader(leader) leader, err = c.WaitForNewLeader(leader)
if err != nil { if err != nil {
t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error()) t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error())
@ -345,7 +345,7 @@ func Test_MultiNodeClusterBootstrap(t *testing.T) {
// Kill the leader and wait for the new leader. // Kill the leader and wait for the new leader.
leader.Deprovision() leader.Deprovision()
c.RemoveNode(leader) c = c.RemoveNode(leader)
leader, err = c.WaitForNewLeader(leader) leader, err = c.WaitForNewLeader(leader)
if err != nil { if err != nil {
t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error()) t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error())
@ -1064,7 +1064,7 @@ func Test_MultiNodeClusterNodeEncrypted(t *testing.T) {
// Kill the leader and wait for the new leader. // Kill the leader and wait for the new leader.
leader.Deprovision() leader.Deprovision()
c.RemoveNode(leader) c = c.RemoveNode(leader)
leader, err = c.WaitForNewLeader(leader) leader, err = c.WaitForNewLeader(leader)
if err != nil { if err != nil {
t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error()) t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error())
@ -1183,7 +1183,7 @@ func Test_MultiNodeClusterSnapshot(t *testing.T) {
// Kill original node. // Kill original node.
node1.Deprovision() node1.Deprovision()
c.RemoveNode(node1) c = c.RemoveNode(node1)
var leader *Node var leader *Node
leader, err = c.WaitForNewLeader(node1) leader, err = c.WaitForNewLeader(node1)
if err != nil { if err != nil {
@ -1305,7 +1305,7 @@ func Test_MultiNodeClusterWithNonVoter(t *testing.T) {
// Kill the leader and wait for the new leader. // Kill the leader and wait for the new leader.
leader.Deprovision() leader.Deprovision()
c.RemoveNode(leader) c = c.RemoveNode(leader)
leader, err = c.WaitForNewLeader(leader) leader, err = c.WaitForNewLeader(leader)
if err != nil { if err != nil {
t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error()) t.Fatalf("failed to find new cluster leader after killing leader: %s", err.Error())
@ -1580,7 +1580,6 @@ func Test_MultiNodeClusterReapNodes(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("failed waiting for leader: %s", err.Error()) t.Fatalf("failed waiting for leader: %s", err.Error())
} }
c = Cluster{node1, node2, node3, nonVoter}
// Confirm non-voter node is in the the cluster config. // Confirm non-voter node is in the the cluster config.
nodes, err := leader.Nodes(true) nodes, err := leader.Nodes(true)
@ -1783,19 +1782,3 @@ func Test_MultiNodeClusterNoReapReadOnlyZero(t *testing.T) {
t.Fatalf("didn't time out waiting for node to be removed") t.Fatalf("didn't time out waiting for node to be removed")
} }
} }
func mustGetExpvar(n *Node) string {
j, err := n.Expvar()
if err != nil {
panic(err.Error())
}
return j
}
func mustGetExpvarKey(n *Node, k string) string {
j, err := n.ExpvarKey(k)
if err != nil {
panic(err.Error())
}
return j
}

@ -7,7 +7,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/fs"
"net" "net"
"net/http" "net/http"
"net/url" "net/url"
@ -235,7 +235,7 @@ func (n *Node) Nodes(includeNonVoters bool) (NodesStatus, error) {
return nil, fmt.Errorf("nodes endpoint returned: %s", resp.Status) return nil, fmt.Errorf("nodes endpoint returned: %s", resp.Status)
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -259,7 +259,7 @@ func (n *Node) Status() (string, error) {
return "", fmt.Errorf("status endpoint returned: %s", resp.Status) return "", fmt.Errorf("status endpoint returned: %s", resp.Status)
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -306,7 +306,7 @@ func (n *Node) ExpvarKey(k string) (string, error) {
return "", fmt.Errorf("expvar endpoint returned: %s", resp.Status) return "", fmt.Errorf("expvar endpoint returned: %s", resp.Status)
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -339,7 +339,7 @@ func (n *Node) postExecute(stmt string) (string, error) {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -357,7 +357,7 @@ func (n *Node) postExecuteQueued(stmt string, wait bool) (string, error) {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -376,7 +376,7 @@ func (n *Node) query(stmt, consistency string) (string, error) {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -389,7 +389,7 @@ func (n *Node) postQuery(stmt string) (string, error) {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -413,7 +413,7 @@ func PostExecuteStmtMulti(apiAddr string, stmts []string) (string, error) {
return "", err return "", err
} }
defer resp.Body.Close() defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", err return "", err
} }
@ -477,13 +477,15 @@ func (c Cluster) Followers() ([]*Node, error) {
// RemoveNode removes the given node from the list of nodes representing // RemoveNode removes the given node from the list of nodes representing
// a cluster. // a cluster.
func (c Cluster) RemoveNode(node *Node) { func (c Cluster) RemoveNode(node *Node) Cluster {
nodes := []*Node{}
for i, n := range c { for i, n := range c {
if n.RaftAddr == node.RaftAddr { if n.RaftAddr == node.RaftAddr {
c = append(c[:i], c[i+1:]...) continue
return
} }
nodes = append(nodes, c[i])
} }
return nodes
} }
// FindNodeByRaftAddr returns the node with the given Raft address. // FindNodeByRaftAddr returns the node with the given Raft address.
@ -656,7 +658,7 @@ func mustNewLeaderNode() *Node {
func mustTempDir() string { func mustTempDir() string {
var err error var err error
path, err := ioutil.TempDir("", "rqlilte-system-test-") path, err := os.MkdirTemp("", "rqlilte-system-test-")
if err != nil { if err != nil {
panic("failed to create temp dir") panic("failed to create temp dir")
} }
@ -769,7 +771,7 @@ func mustCreateTLSConfig(certFile, keyFile, caCertFile string) *tls.Config {
} }
if caCertFile != "" { if caCertFile != "" {
asn1Data, err := ioutil.ReadFile(caCertFile) asn1Data, err := os.ReadFile(caCertFile)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
@ -878,7 +880,7 @@ func copyDir(src string, dst string) (err error) {
return return
} }
entries, err := ioutil.ReadDir(src) entries, err := os.ReadDir(src)
if err != nil { if err != nil {
return return
} }
@ -894,7 +896,7 @@ func copyDir(src string, dst string) (err error) {
} }
} else { } else {
// Skip symlinks. // Skip symlinks.
if entry.Mode()&os.ModeSymlink != 0 { if entry.Type()&fs.ModeSymlink != 0 {
continue continue
} }

@ -237,7 +237,7 @@ func Test_MultiNodeClusterQueuedRequestForwardOK(t *testing.T) {
if len(followers) != 1 { if len(followers) != 1 {
t.Fatalf("got incorrect number of followers: %d", len(followers)) t.Fatalf("got incorrect number of followers: %d", len(followers))
} }
res, err = followers[0].ExecuteQueued(`INSERT INTO foo(name) VALUES("fiona")`, false) _, err = followers[0].ExecuteQueued(`INSERT INTO foo(name) VALUES("fiona")`, false)
if err != nil { if err != nil {
t.Fatalf("failed to insert record: %s", err.Error()) t.Fatalf("failed to insert record: %s", err.Error())
} }

@ -467,6 +467,9 @@ LOOP:
t.Fatalf("queued response is not valid: %s", resp) t.Fatalf("queued response is not valid: %s", resp)
} }
r, err := node.Query(`SELECT COUNT(*) FROM foo`) r, err := node.Query(`SELECT COUNT(*) FROM foo`)
if err != nil {
t.Fatalf(`query failed: %s`, err.Error())
}
if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[6]]}]}`; got != exp { if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[6]]}]}`; got != exp {
t.Fatalf("incorrect results, exp: %s, got: %s", exp, got) t.Fatalf("incorrect results, exp: %s, got: %s", exp, got)
} }
@ -581,6 +584,9 @@ func Test_SingleNodeQueuedEmptyNil(t *testing.T) {
t.Fatalf("queued response is not valid: %s", resp) t.Fatalf("queued response is not valid: %s", resp)
} }
r, err := node.Query(`SELECT COUNT(*) FROM foo`) r, err := node.Query(`SELECT COUNT(*) FROM foo`)
if err != nil {
t.Fatalf(`query failed: %s`, err.Error())
}
if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[3]]}]}`; got != exp { if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[3]]}]}`; got != exp {
t.Fatalf("incorrect results, exp: %s, got: %s", exp, got) t.Fatalf("incorrect results, exp: %s, got: %s", exp, got)
} }
@ -603,6 +609,9 @@ func Test_SingleNodeQueuedEmptyNil(t *testing.T) {
t.Fatalf("queued response is not valid: %s", resp) t.Fatalf("queued response is not valid: %s", resp)
} }
r, err = node.Query(`SELECT COUNT(*) FROM foo`) r, err = node.Query(`SELECT COUNT(*) FROM foo`)
if err != nil {
t.Fatalf(`query failed: %s`, err.Error())
}
if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[6]]}]}`; got != exp { if got, exp := r, `{"results":[{"columns":["COUNT(*)"],"types":[""],"values":[[6]]}]}`; got != exp {
t.Fatalf("incorrect results, exp: %s, got: %s", exp, got) t.Fatalf("incorrect results, exp: %s, got: %s", exp, got)
} }

Loading…
Cancel
Save