Skip to content

Commit d24dc7e

Browse files
RichardJCairafiss
authored andcommitted
Update testserver fix WaitForInitFinishForNode and tests.
1 parent 21a2370 commit d24dc7e

File tree

3 files changed

+49
-23
lines changed

3 files changed

+49
-23
lines changed

testserver/testserver.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -556,20 +556,20 @@ func (ts *testServerImpl) setPGURLForNode(nodeNum int, u *url.URL) {
556556

557557
func (ts *testServerImpl) WaitForInitFinishForNode(nodeNum int) error {
558558
db, err := sql.Open("postgres", ts.PGURLForNode(nodeNum).String())
559-
defer func() {
560-
_ = db.Close()
561-
}()
562559
if err != nil {
563560
return err
564561
}
565-
for i := 0; i < 50; i++ {
566-
if _, err = db.Query("SHOW DATABASES"); err == nil {
567-
return err
562+
defer func() {
563+
_ = db.Close()
564+
}()
565+
for i := 0; i < 100; i++ {
566+
if err = db.Ping(); err == nil {
567+
return nil
568568
}
569569
log.Printf("%s: WaitForInitFinishForNode %d: Trying again after error: %v", testserverMessagePrefix, nodeNum, err)
570570
time.Sleep(time.Millisecond * 100)
571571
}
572-
return nil
572+
return fmt.Errorf("init did not finish for node %d", nodeNum)
573573
}
574574

575575
// WaitForInit retries until a connection is successfully established.

testserver/testserver_test.go

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"os"
2424
"os/exec"
2525
"path/filepath"
26+
"runtime"
2627
"strings"
2728
"sync"
2829
"testing"
@@ -355,8 +356,8 @@ func TestRestartNode(t *testing.T) {
355356
}
356357

357358
log.Printf("Stopping Node 2")
358-
require.NoError(t, ts.StopNode(2))
359-
for i := 0; i < 2; i++ {
359+
require.NoError(t, ts.StopNode(0))
360+
for i := 1; i < 3; i++ {
360361
url := ts.PGURLForNode(i)
361362

362363
db, err := sql.Open("postgres", url.String())
@@ -368,8 +369,8 @@ func TestRestartNode(t *testing.T) {
368369
require.NoError(t, db.Close())
369370
}
370371

371-
require.NoError(t, ts.StartNode(2))
372-
require.NoError(t, ts.WaitForInitFinishForNode(2))
372+
require.NoError(t, ts.StartNode(0))
373+
require.NoError(t, ts.WaitForInitFinishForNode(0))
373374

374375
for i := 0; i < 3; i++ {
375376
url := ts.PGURLForNode(i)
@@ -382,6 +383,15 @@ func TestRestartNode(t *testing.T) {
382383
require.NoError(t, err)
383384
require.NoError(t, db.Close())
384385
}
386+
387+
url := ts.PGURLForNode(0)
388+
db, err := sql.Open("postgres", url.String())
389+
require.NoError(t, err)
390+
var out int
391+
row := db.QueryRow("SELECT 1")
392+
err = row.Scan(&out)
393+
require.NoError(t, err)
394+
require.NoError(t, db.Close())
385395
}
386396

387397
func downloadBinaryTest(filepath string, url string) error {
@@ -405,12 +415,25 @@ func downloadBinaryTest(filepath string, url string) error {
405415
}
406416

407417
func TestUpgradeNode(t *testing.T) {
408-
t.Skip("doesn't work on linux")
409-
binary21_2 := "cockroach-v21.2.12.darwin-10.9-amd64"
410-
binary22_1 := "cockroach-v22.1.0.darwin-10.9-amd64"
411-
getMacBinary := func(fileName string) {
418+
oldVersion := "v21.2.12"
419+
newVersion := "v22.1.6"
420+
421+
var oldVersionBinary, newVersionBinary string
422+
switch runtime.GOOS {
423+
case "darwin":
424+
oldVersionBinary = fmt.Sprintf("cockroach-%s.darwin-10.9-amd64", oldVersion)
425+
newVersionBinary = fmt.Sprintf("cockroach-%s.darwin-10.9-amd64", newVersion)
426+
case "linux":
427+
oldVersionBinary = fmt.Sprintf("cockroach-%s.linux-amd64", oldVersion)
428+
newVersionBinary = fmt.Sprintf("cockroach-%s.linux-amd64", newVersion)
429+
default:
430+
t.Fatalf("unsupported os for test: %s", runtime.GOOS)
431+
}
432+
433+
getBinary := func(fileName string) {
412434
require.NoError(t, exec.Command("mkdir", "./temp_binaries").Start())
413-
require.NoError(t, downloadBinaryTest(fmt.Sprintf("./temp_binaries/%s.tgz", fileName), fmt.Sprintf("https://binaries.cockroachdb.com/%s.tgz", fileName)))
435+
require.NoError(t, downloadBinaryTest(fmt.Sprintf("./temp_binaries/%s.tgz", fileName),
436+
fmt.Sprintf("https://binaries.cockroachdb.com/%s.tgz", fileName)))
414437
tarCmd := exec.Command("tar", "-zxvf", fmt.Sprintf("./temp_binaries/%s.tgz", fileName), "-C", "./temp_binaries")
415438
require.NoError(t, tarCmd.Start())
416439
require.NoError(t, tarCmd.Wait())
@@ -420,18 +443,18 @@ func TestUpgradeNode(t *testing.T) {
420443
require.NoError(t, exec.Command("rm", "-rf", "./temp_binaries").Start())
421444
}()
422445

423-
getMacBinary(binary21_2)
424-
getMacBinary(binary22_1)
446+
getBinary(oldVersionBinary)
447+
getBinary(newVersionBinary)
425448

426-
absFilePath21_2, err := filepath.Abs(fmt.Sprintf("./temp_binaries/%s/cockroach", binary21_2))
449+
absPathOldBinary, err := filepath.Abs(fmt.Sprintf("./temp_binaries/%s/cockroach", oldVersionBinary))
427450
require.NoError(t, err)
428-
absFilePath22_1, err := filepath.Abs(fmt.Sprintf("./temp_binaries/%s/cockroach", binary22_1))
451+
absPathNewBinary, err := filepath.Abs(fmt.Sprintf("./temp_binaries/%s/cockroach", newVersionBinary))
429452
require.NoError(t, err)
430453

431454
ts, err := testserver.NewTestServer(
432455
testserver.ThreeNodeOpt(),
433-
testserver.CockroachBinaryPathOpt(absFilePath21_2),
434-
testserver.UpgradeCockroachBinaryPathOpt(absFilePath22_1),
456+
testserver.CockroachBinaryPathOpt(absPathOldBinary),
457+
testserver.UpgradeCockroachBinaryPathOpt(absPathNewBinary),
435458
testserver.StoreOnDiskOpt(),
436459
)
437460
require.NoError(t, err)
@@ -444,6 +467,9 @@ func TestUpgradeNode(t *testing.T) {
444467
url := ts.PGURL()
445468
db, err := sql.Open("postgres", url.String())
446469
require.NoError(t, err)
470+
defer func() {
471+
require.NoError(t, db.Close())
472+
}()
447473

448474
var version string
449475
row := db.QueryRow("SHOW CLUSTER SETTING version")

testserver/testservernode.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (ts *testServerImpl) StartNode(i int) error {
9898
capturedI := i
9999

100100
if ts.pgURL[capturedI].u == nil {
101-
ts.pgURL[i].set = make(chan struct{})
101+
ts.pgURL[capturedI].set = make(chan struct{})
102102
go func() {
103103
if err := ts.pollListeningURLFile(capturedI); err != nil {
104104
log.Printf("%s failed to poll listening URL file: %v", testserverMessagePrefix, err)

0 commit comments

Comments
 (0)