waitForClusterReady ensures the cluster is fully operational before proceeding
(t *testing.T, cluster *dgraphtest.LocalCluster, gc *dgraphapi.GrpcClient, timeout time.Duration)
| 456 | |
| 457 | // waitForClusterReady ensures the cluster is fully operational before proceeding |
| 458 | func waitForClusterReady(t *testing.T, cluster *dgraphtest.LocalCluster, gc *dgraphapi.GrpcClient, timeout time.Duration) error { |
| 459 | deadline := time.Now().Add(timeout) |
| 460 | retryDelay := 500 * time.Millisecond |
| 461 | |
| 462 | for time.Now().Before(deadline) { |
| 463 | if _, err := gc.Query("schema{}"); err != nil { |
| 464 | t.Logf("Cluster not ready yet: %v, retrying in %v", err, retryDelay) |
| 465 | time.Sleep(retryDelay) |
| 466 | retryDelay = min(retryDelay*2, 5*time.Second) |
| 467 | continue |
| 468 | } |
| 469 | |
| 470 | if err := cluster.HealthCheck(false); err != nil { |
| 471 | t.Logf("Health check failed: %v, retrying in %v", err, retryDelay) |
| 472 | time.Sleep(retryDelay) |
| 473 | retryDelay = min(retryDelay*2, 5*time.Second) |
| 474 | continue |
| 475 | } |
| 476 | |
| 477 | t.Log("Cluster is ready") |
| 478 | return nil |
| 479 | } |
| 480 | |
| 481 | return fmt.Errorf("cluster not ready within %v timeout", timeout) |
| 482 | } |
| 483 | |
| 484 | // waitForClusterStable ensures remaining alphas are accessible after some are shut down |
| 485 | func waitForClusterStable(t *testing.T, cluster *dgraphtest.LocalCluster, timeout time.Duration) error { |
no test coverage detected