Retry Elasticsearch logging health check

pull/6/head
Satnam Singh 2015-06-23 09:36:56 -07:00
parent cb9f7d17f5
commit 52461b772a
1 changed files with 21 additions and 10 deletions

View File

@ -63,13 +63,18 @@ func ClusterLevelLoggingWithElasticsearch(f *Framework) {
return return
} }
// graceTime is how long to keep retrying requests for status information.
const graceTime = 2 * time.Minute
// ingestionTimeout is how long to keep retrying to wait for all the
// logs to be ingested.
const ingestionTimeout = 3 * time.Minute
// Check for the existence of the Elasticsearch service. // Check for the existence of the Elasticsearch service.
By("Checking the Elasticsearch service exists.") By("Checking the Elasticsearch service exists.")
s := f.Client.Services(api.NamespaceDefault) s := f.Client.Services(api.NamespaceDefault)
// Make a few attempts to connect. This makes the test robust against // Make a few attempts to connect. This makes the test robust against
// being run as the first e2e test just after the e2e cluster has been created. // being run as the first e2e test just after the e2e cluster has been created.
var err error var err error
const graceTime = 10 * time.Minute
for start := time.Now(); time.Since(start) < graceTime; time.Sleep(5 * time.Second) { for start := time.Now(); time.Since(start) < graceTime; time.Sleep(5 * time.Second) {
if _, err = s.Get("elasticsearch-logging"); err == nil { if _, err = s.Get("elasticsearch-logging"); err == nil {
break break
@ -139,14 +144,20 @@ func ClusterLevelLoggingWithElasticsearch(f *Framework) {
// Now assume we really are talking to an Elasticsearch instance. // Now assume we really are talking to an Elasticsearch instance.
// Check the cluster health. // Check the cluster health.
By("Checking health of Elasticsearch service.") By("Checking health of Elasticsearch service.")
body, err := f.Client.Get(). var body []byte
Namespace(api.NamespaceDefault). for start := time.Now(); time.Since(start) < graceTime; time.Sleep(5 * time.Second) {
Prefix("proxy"). body, err = f.Client.Get().
Resource("services"). Namespace(api.NamespaceDefault).
Name("elasticsearch-logging"). Prefix("proxy").
Suffix("_cluster/health"). Resource("services").
Param("health", "pretty"). Name("elasticsearch-logging").
DoRaw() Suffix("_cluster/health").
Param("health", "pretty").
DoRaw()
if err == nil {
break
}
}
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
health, err := bodyToJSON(body) health, err := bodyToJSON(body)
@ -244,7 +255,7 @@ func ClusterLevelLoggingWithElasticsearch(f *Framework) {
By("Checking all the log lines were ingested into Elasticsearch") By("Checking all the log lines were ingested into Elasticsearch")
missing := 0 missing := 0
expected := nodeCount * countTo expected := nodeCount * countTo
for start := time.Now(); time.Since(start) < graceTime; time.Sleep(10 * time.Second) { for start := time.Now(); time.Since(start) < ingestionTimeout; time.Sleep(10 * time.Second) {
// Debugging code to report the status of the elasticsearch logging endpoints. // Debugging code to report the status of the elasticsearch logging endpoints.
esPods, err := f.Client.Pods(api.NamespaceDefault).List(labels.Set{esKey: esValue}.AsSelector(), fields.Everything()) esPods, err := f.Client.Pods(api.NamespaceDefault).List(labels.Set{esKey: esValue}.AsSelector(), fields.Everything())