@@ -79,6 +79,9 @@ const (
7979// By default, we allocate 20% of available memory to the test server.
8080const defaultStoreMemSize = 0.2
8181
82+ const testserverMessagePrefix = "cockroach-go testserver"
83+ const tenantserverMessagePrefix = "cockroach-go tenantserver"
84+
8285// TestServer is a helper to run a real cockroach node.
8386type TestServer interface {
8487 // Start starts the server.
@@ -164,7 +167,7 @@ func NewDBForTestWithDatabase(
164167
165168 db , err := sql .Open ("postgres" , url .String ())
166169 if err != nil {
167- t .Fatal ( err )
170+ t .Fatalf ( "%s: %v" , testserverMessagePrefix , err )
168171 }
169172
170173 return db , func () {
@@ -276,7 +279,7 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
276279 // return error.
277280 return nil , err
278281 }
279- log .Printf ("Failed to fetch latest binary: %s, attempting to use cockroach binary from your PATH" , err )
282+ log .Printf ("%s: Failed to fetch latest binary: %v attempting to use cockroach binary from your PATH" , testserverMessagePrefix , err )
280283 cockroachBinary = "cockroach"
281284 } else {
282285 log .Printf ("Using automatically-downloaded binary: %s" , cockroachBinary )
@@ -287,13 +290,15 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
287290 // which get us over the socket filename length limit.
288291 baseDir , err := ioutil .TempDir ("/tmp" , "cockroach-testserver" )
289292 if err != nil {
290- return nil , fmt .Errorf ("could not create temp directory: %s" , err )
293+ return nil , fmt .Errorf ("%s: could not create temp directory: %w" ,
294+ testserverMessagePrefix , err )
291295 }
292296
293297 mkDir := func (name string ) (string , error ) {
294298 path := filepath .Join (baseDir , name )
295299 if err := os .MkdirAll (path , 0755 ); err != nil {
296- return "" , fmt .Errorf ("could not create %s directory: %s: %s" , name , path , err )
300+ return "" , fmt .Errorf ("%s: could not create %s directory: %s: %w" ,
301+ testserverMessagePrefix , name , path , err )
297302 }
298303 return path , nil
299304 }
@@ -302,11 +307,11 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
302307 // https://github.com/cockroachdb/cockroach-go/issues/109
303308 logDir , err := mkDir (logsDirName )
304309 if err != nil {
305- return nil , err
310+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
306311 }
307312 certsDir , err := mkDir (certsDirName )
308313 if err != nil {
309- return nil , err
314+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
310315 }
311316
312317 listeningURLFile := filepath .Join (baseDir , "listen-url" )
@@ -327,7 +332,7 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
327332 {"cert" , "create-client" , "root" },
328333 } {
329334 if err := exec .Command (cockroachBinary , append (args , certArgs ... )... ).Run (); err != nil {
330- return nil , err
335+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
331336 }
332337 }
333338 secureOpt = "--certs-dir=" + certsDir
@@ -339,17 +344,17 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
339344 versionCmd := exec .Command (cockroachBinary , "version" )
340345 versionOutput , err := versionCmd .CombinedOutput ()
341346 if err != nil {
342- return nil , err
347+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
343348 }
344349 reader := bufio .NewReader (bytes .NewReader (versionOutput ))
345350 versionLine , err := reader .ReadString ('\n' )
346351 if err != nil {
347- return nil , err
352+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
348353 }
349354 versionLineTokens := strings .Fields (versionLine )
350355 v , err := version .Parse (versionLineTokens [2 ])
351356 if err != nil {
352- return nil , err
357+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
353358 }
354359 startCmd := "start-single-node"
355360 if ! v .AtLeast (version .MustParse ("v19.2.0-alpha" )) {
@@ -388,15 +393,15 @@ func NewTestServer(opts ...TestServerOpt) (TestServer, error) {
388393 ts .pgURL .set = make (chan struct {})
389394
390395 if err := ts .Start (); err != nil {
391- return nil , err
396+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
392397 }
393398
394399 if ts .PGURL () == nil {
395- return nil , errors . New ( "testserver : url not found" )
400+ return nil , fmt . Errorf ( "%s : url not found", testserverMessagePrefix )
396401 }
397402
398403 if err := ts .WaitForInit (); err != nil {
399- return nil , err
404+ return nil , fmt . Errorf ( "%s: %w" , testserverMessagePrefix , err )
400405 }
401406
402407 return ts , nil
@@ -439,7 +444,7 @@ func (ts *testServerImpl) WaitForInit() error {
439444 if _ , err = db .Query ("SHOW DATABASES" ); err == nil {
440445 return err
441446 }
442- log .Printf ("WaitForInit: Trying again after error: %v" , err )
447+ log .Printf ("%s: WaitForInit: Trying again after error: %v" , testserverMessagePrefix , err )
443448 time .Sleep (time .Millisecond * 100 )
444449 }
445450 return err
@@ -460,14 +465,14 @@ func (ts *testServerImpl) pollListeningURLFile() error {
460465 if err == nil {
461466 break
462467 } else if ! os .IsNotExist (err ) {
463- return fmt .Errorf ("unexpected error while reading listening URL file: %v " , err )
468+ return fmt .Errorf ("unexpected error while reading listening URL file: %w " , err )
464469 }
465470 time .Sleep (100 * time .Millisecond )
466471 }
467472
468473 u , err := url .Parse (string (bytes .TrimSpace (data )))
469474 if err != nil {
470- return fmt .Errorf ("failed to parse SQL URL: %v " , err )
475+ return fmt .Errorf ("failed to parse SQL URL: %w " , err )
471476 }
472477 ts .pgURL .orig = * u
473478 if pw := ts .serverArgs .rootPW ; pw != "" {
@@ -507,7 +512,7 @@ func (ts *testServerImpl) Start() error {
507512 case stateStopped , stateFailed :
508513 // Start() can only be called once.
509514 return errors .New (
510- "Start() cannot be used to restart a stopped or failed server. " +
515+ "` Start()` cannot be used to restart a stopped or failed server. " +
511516 "Please use NewTestServer()" )
512517 }
513518 }
@@ -523,7 +528,7 @@ func (ts *testServerImpl) Start() error {
523528 if len (ts .stdout ) > 0 {
524529 wr , err := newFileLogWriter (ts .stdout )
525530 if err != nil {
526- return fmt .Errorf ("unable to open file %s: %s " , ts .stdout , err )
531+ return fmt .Errorf ("unable to open file %s: %w " , ts .stdout , err )
527532 }
528533 ts .stdoutBuf = wr
529534 }
@@ -532,7 +537,7 @@ func (ts *testServerImpl) Start() error {
532537 if len (ts .stderr ) > 0 {
533538 wr , err := newFileLogWriter (ts .stderr )
534539 if err != nil {
535- return fmt .Errorf ("unable to open file %s: %s " , ts .stderr , err )
540+ return fmt .Errorf ("unable to open file %s: %w " , ts .stderr , err )
536541 }
537542 ts .stderrBuf = wr
538543 }
@@ -549,33 +554,37 @@ func (ts *testServerImpl) Start() error {
549554 if err != nil {
550555 log .Print (err .Error ())
551556 if err := ts .stdoutBuf .Close (); err != nil {
552- log .Printf ("failed to close stdout: %s" , err )
557+ log .Printf ("%s: failed to close stdout: %v" , testserverMessagePrefix , err )
553558 }
554559 if err := ts .stderrBuf .Close (); err != nil {
555- log .Printf ("failed to close stderr: %s" , err )
560+ log .Printf ("%s: failed to close stderr: %v" , testserverMessagePrefix , err )
556561 }
557562
558563 ts .mu .Lock ()
559564 ts .state = stateFailed
560565 ts .mu .Unlock ()
561566
562- return fmt .Errorf ("failure starting process: %s " , err )
567+ return fmt .Errorf ("failure starting process: %w " , err )
563568 }
564569
565570 go func () {
566571 err := ts .cmd .Wait ()
567572
568573 if err := ts .stdoutBuf .Close (); err != nil {
569- log .Printf ("failed to close stdout: %s" , err )
574+ log .Printf ("%s: failed to close stdout: %v" , testserverMessagePrefix , err )
570575 }
571576 if err := ts .stderrBuf .Close (); err != nil {
572- log .Printf ("failed to close stderr: %s" , err )
577+ log .Printf ("%s: failed to close stderr: %v" , testserverMessagePrefix , err )
573578 }
574579
575580 ps := ts .cmd .ProcessState
576581 sy := ps .Sys ().(syscall.WaitStatus )
577582
578- log .Printf ("Process %d exited with status %d: %v" , ps .Pid (), sy .ExitStatus (), err )
583+ log .Printf ("%s: Process %d exited with status %d: %v" ,
584+ testserverMessagePrefix ,
585+ ps .Pid (),
586+ sy .ExitStatus (),
587+ err )
579588 log .Print (ps .String ())
580589
581590 ts .mu .Lock ()
@@ -590,7 +599,7 @@ func (ts *testServerImpl) Start() error {
590599 if ts .pgURL .u == nil {
591600 go func () {
592601 if err := ts .pollListeningURLFile (); err != nil {
593- log .Printf ("%v" , err )
602+ log .Printf ("%s: %v" , testserverMessagePrefix , err )
594603 close (ts .pgURL .set )
595604 ts .Stop ()
596605 }
@@ -608,11 +617,13 @@ func (ts *testServerImpl) Stop() {
608617 defer ts .mu .RUnlock ()
609618
610619 if ts .state == stateNew {
611- log .Fatal ( " Stop() called, but Start() was never called" )
620+ log .Fatalf ( "%s: Stop() called, but Start() was never called", testserverMessagePrefix )
612621 }
613622 if ts .state == stateFailed {
614- log .Fatalf ("Stop() called, but process exited unexpectedly. Stdout:\n %s\n Stderr:\n %s\n " ,
615- ts .Stdout (), ts .Stderr ())
623+ log .Fatalf ("%s: Stop() called, but process exited unexpectedly. Stdout:\n %s\n Stderr:\n %s\n " ,
624+ testserverMessagePrefix ,
625+ ts .Stdout (),
626+ ts .Stderr ())
616627 return
617628 }
618629
0 commit comments