diff options
Diffstat (limited to 'testenv/Test-504.py')
-rwxr-xr-x | testenv/Test-504.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/testenv/Test-504.py b/testenv/Test-504.py new file mode 100755 index 0000000..036f85d --- /dev/null +++ b/testenv/Test-504.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +from sys import exit +from test.http_test import HTTPTest +from misc.wget_file import WgetFile + +""" + This test ensures that Wget handles a 504 Gateway Timeout response + correctly. + Since, we do not have a direct mechanism for conditionally sending responses + via the HTTP Server, I've used a workaround. + The server will always respond to a request for File1 with a 504 Gateway + Timeout. Using the --tries=2 option, we ensure that Wget attempts the file + only twice and then move on to the next file. Finally, check the exact + requests that the Server received and compare them, in order, to the + expected sequence of requests. + + In this case, we expect Wget to attempt File1 twice and File2 once. If Wget + considered 504 as a general Server Error, it would be a fatal failure and + Wget would request File1 only once. +""" +############# File Definitions ############################################### +File1 = """All happy families are alike; +Each unhappy family is unhappy in its own way""" +File2 = "Anyone for chocochip cookies?" + +File1_rules = { + "Response" : 504 +} + +A_File = WgetFile ("File1", File1, rules=File1_rules) +B_File = WgetFile ("File2", File2) + +Request_List = [ + [ + "GET /File1", + "GET /File1", + "GET /File2", + ] +] + + +WGET_OPTIONS = "--tries=2" +WGET_URLS = [["File1", "File2"]] + +Files = [[A_File, B_File]] + +ExpectedReturnCode = 4 +ExpectedDownloadedFiles = [B_File] + +################ Pre and Post Test Hooks ##################################### +pre_test = { + "ServerFiles" : Files +} +test_options = { + "WgetCommands" : WGET_OPTIONS, + "Urls" : WGET_URLS +} +post_test = { + "ExpectedFiles" : ExpectedDownloadedFiles, + "ExpectedRetcode" : ExpectedReturnCode, + "FilesCrawled" : Request_List +} + +err = HTTPTest ( + pre_hook=pre_test, + test_params=test_options, + post_hook=post_test +).begin () + +exit (err) |