aboutsummaryrefslogtreecommitdiff
path: root/middleware
diff options
context:
space:
mode:
Diffstat (limited to 'middleware')
-rw-r--r--middleware/health/health_test.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/middleware/health/health_test.go b/middleware/health/health_test.go
new file mode 100644
index 000000000..c5ef9cc42
--- /dev/null
+++ b/middleware/health/health_test.go
@@ -0,0 +1,37 @@
+package health
+
+import (
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "testing"
+)
+
+func TestHealth(t *testing.T) {
+ // We use a random port instead of a fixed port like 8080 that may have been
+ // occupied by some other process.
+ health := Health{Addr: ":0"}
+ if err := health.Startup(); err != nil {
+ t.Fatalf("Unable to startup the health server: %v", err)
+ }
+ defer health.Shutdown()
+
+ // Reconstruct the http address based on the port allocated by operating system.
+ address := fmt.Sprintf("http://%s%s", health.ln.Addr().String(), path)
+
+ response, err := http.Get(address)
+ if err != nil {
+ t.Fatalf("Unable to query %s: %v", address, err)
+ }
+ defer response.Body.Close()
+ if response.StatusCode != 200 {
+ t.Errorf("Invalid status code: expecting '200', got '%d'", response.StatusCode)
+ }
+ content, err := ioutil.ReadAll(response.Body)
+ if err != nil {
+ t.Fatalf("Unable to get response body from %s: %v", address, err)
+ }
+ if string(content) != "OK" {
+ t.Errorf("Invalid response body: expecting 'OK', got '%s'", string(content))
+ }
+}