Skip to content
This repository has been archived by the owner on Mar 22, 2023. It is now read-only.

Commit

Permalink
Fix misbehaving integration tests (#590)
Browse files Browse the repository at this point in the history
* Recategorize service-fallback-support test as resource-heavy

* Clean up service after backend-request-errors test
  • Loading branch information
DaoWen authored and shamsimam committed Feb 19, 2019
1 parent 36c6317 commit 19f6f1d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 33 deletions.
71 changes: 39 additions & 32 deletions waiter/integration/waiter/request_timeout_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -68,39 +68,46 @@

(deftest ^:parallel ^:integration-fast test-backend-request-errors
(testing-using-waiter-url
(let [service-id (retrieve-service-id waiter-url {})]
(testing "backend request timeout"
(let [timeout-period 2000
extra-headers {:x-waiter-timeout timeout-period
:x-waiter-debug "true"
:x-kitchen-delay-ms (+ 2000 timeout-period)}
{:keys [headers] :as response} (make-kitchen-request waiter-url extra-headers)
response-body (:body response)
error-message (-> (waiter-settings waiter-url) :messages :backend-request-timed-out)]
(assert-response-status response 504)
(is error-message)
(is (str/includes? response-body error-message))
(is (not (str/blank? (get headers "x-waiter-backend-id"))))
(is (not (str/blank? (get headers "x-waiter-backend-host"))))
(is (not (str/blank? (get headers "x-waiter-backend-port"))))
(is (not (str/blank? (get headers "x-waiter-backend-proto"))))
(is (not (str/blank? (get headers "x-cid"))))))
(let [service-name (rand-name)
headers {:x-waiter-name service-name}
{:keys [headers request-headers service-id] :as first-response}
(make-request-with-debug-info headers #(make-kitchen-request waiter-url % :method :get))]
(assert-response-status first-response 200)
(with-service-cleanup
service-id
(testing "backend request timeout"
(let [timeout-period 2000
extra-headers {:x-kitchen-delay-ms (+ 2000 timeout-period)
:x-waiter-debug "true"
:x-waiter-name service-name
:x-waiter-timeout timeout-period}
{:keys [headers] :as response} (make-kitchen-request waiter-url extra-headers)
response-body (:body response)
error-message (-> (waiter-settings waiter-url) :messages :backend-request-timed-out)]
(assert-response-status response 504)
(is error-message)
(is (str/includes? response-body error-message))
(is (not (str/blank? (get headers "x-waiter-backend-id"))))
(is (not (str/blank? (get headers "x-waiter-backend-host"))))
(is (not (str/blank? (get headers "x-waiter-backend-port"))))
(is (not (str/blank? (get headers "x-waiter-backend-proto"))))
(is (not (str/blank? (get headers "x-cid"))))))

(testing "backend request failed"
(let [extra-headers {:x-kitchen-delay-ms 5000 ; sleep long enough to die before response
:x-waiter-debug "true"}
{:keys [headers] :as response} (make-kitchen-request waiter-url extra-headers :path "/die")
response-body (:body response)
error-message (-> (waiter-settings waiter-url) :messages :backend-request-failed)]
(assert-response-status response 502)
(is error-message)
(is (str/includes? response-body error-message))
(is (not (str/blank? (get headers "x-waiter-backend-id"))))
(is (not (str/blank? (get headers "x-waiter-backend-host"))))
(is (not (str/blank? (get headers "x-waiter-backend-port"))))
(is (not (str/blank? (get headers "x-waiter-backend-proto"))))
(is (not (str/blank? (get headers "x-cid"))))))
(delete-service waiter-url service-id))))
(testing "backend request failed"
(let [extra-headers {:x-kitchen-delay-ms 5000 ; sleep long enough to die before response
:x-waiter-debug "true"
:x-waiter-name service-name}
{:keys [headers] :as response} (make-kitchen-request waiter-url extra-headers :path "/die")
response-body (:body response)
error-message (-> (waiter-settings waiter-url) :messages :backend-request-failed)]
(assert-response-status response 502)
(is error-message)
(is (str/includes? response-body error-message))
(is (not (str/blank? (get headers "x-waiter-backend-id"))))
(is (not (str/blank? (get headers "x-waiter-backend-host"))))
(is (not (str/blank? (get headers "x-waiter-backend-port"))))
(is (not (str/blank? (get headers "x-waiter-backend-proto"))))
(is (not (str/blank? (get headers "x-cid"))))))))))

; Marked explicit because it's flaky
(deftest ^:parallel ^:integration-fast ^:explicit test-request-queue-timeout-slow-start-app
Expand Down
2 changes: 1 addition & 1 deletion waiter/integration/waiter/token_request_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -1284,7 +1284,7 @@
(finally
(delete-token-and-assert waiter-url token))))))

(deftest ^:parallel ^:integration-slow test-service-fallback-support
(deftest ^:parallel ^:integration-slow ^:resource-heavy test-service-fallback-support
(testing-using-waiter-url
(let [service-name (rand-name)
token (create-token-name waiter-url service-name)
Expand Down
3 changes: 3 additions & 0 deletions waiter/src/waiter/util/client_tools.clj
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,9 @@
(log/info "service id: " service-id))
service-id))

(defn retrieve-kitchen-service-id [waiter-url waiter-headers & options]
(pc/mapply retrieve-service-id waiter-url (merge (kitchen-request-headers) waiter-headers) options))

(defn waiter-settings [waiter-url & {:keys [cookies] :or {cookies []}}]
(let [settings-result (make-request waiter-url "/settings" :verbose true :cookies cookies)
settings-json (try-parse-json (:body settings-result))]
Expand Down

0 comments on commit 19f6f1d

Please sign in to comment.