mirror of
https://github.com/mirror/wget.git
synced 2025-03-26 12:06:06 +08:00
Create package test for test case classes
delete mode 100644 testenv/WgetTest.py create mode 100644 testenv/test/__init__.py create mode 100644 testenv/test/base_test.py create mode 100644 testenv/test/http_test.py
This commit is contained in:
parent
507383df07
commit
d26c8ebb16
@ -1,3 +1,9 @@
|
|||||||
|
2014-03-13 Zihang Chen <chsc4698@gmail.com>
|
||||||
|
|
||||||
|
* test: (new package) package for test case classes
|
||||||
|
* WgetTest.py: Split into test/base_test.py and test/http_test.py.
|
||||||
|
* Test-*.py: Optimize the imports according to changes of WgetTest.py
|
||||||
|
|
||||||
2014-03-13 Zihang Chen <chsc4698@gmail.com>
|
2014-03-13 Zihang Chen <chsc4698@gmail.com>
|
||||||
|
|
||||||
* server: (new package) package for the server classes
|
* server: (new package) package for the server classes
|
||||||
|
@ -17,10 +17,9 @@ Structure:
|
|||||||
(both HTTP and FTP) for testing Wget. The HTTP server runs an instance of
|
(both HTTP and FTP) for testing Wget. The HTTP server runs an instance of
|
||||||
Python's http.server module. The FTP server is to be implemented.
|
Python's http.server module. The FTP server is to be implemented.
|
||||||
|
|
||||||
* WgetTest.py: This file contains various functions and global variables for
|
* test: This package contains the test case classes for HTTP and FTP. The
|
||||||
each instance of the server that is initiated. It includes functions to
|
test case classes includes methods for initializing and cleaning up of the
|
||||||
start and stop the server, to initialze the test environment and to cleanup
|
test environment.
|
||||||
after a test.
|
|
||||||
|
|
||||||
* Test-Proto.py: This is a prototype Test Case file. The file defines all
|
* Test-Proto.py: This is a prototype Test Case file. The file defines all
|
||||||
the acceptable elements and their uses. Typically, one must copy this file
|
the acceptable elements and their uses. Typically, one must copy this file
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest, HTTPS, HTTP
|
from test.http_test import HTTPTest
|
||||||
|
from test.base_test import HTTP, HTTPS
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest, HTTP, HTTPS
|
from test.http_test import HTTPTest
|
||||||
|
from misc.constants import HTTP, HTTPS
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest, HTTP, HTTPS
|
from test.http_test import HTTPTest
|
||||||
|
from misc.constants import HTTP, HTTPS
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from WgetTest import HTTPTest
|
from test.http_test import HTTPTest
|
||||||
from misc.wget_file import WgetFile
|
from misc.wget_file import WgetFile
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
1
testenv/test/__init__.py
Normal file
1
testenv/test/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
@ -3,22 +3,25 @@ import shutil
|
|||||||
import shlex
|
import shlex
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
from server.http import http_server
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
import shlex
|
||||||
|
import shutil
|
||||||
from subprocess import call
|
from subprocess import call
|
||||||
from misc.colour_terminal import print_red, print_green, print_blue
|
from misc.colour_terminal import print_red, print_green, print_blue
|
||||||
from difflib import unified_diff
|
from difflib import unified_diff
|
||||||
from exc.test_failed import TestFailed
|
from exc.test_failed import TestFailed
|
||||||
import conf
|
import conf
|
||||||
from server.http import http_server
|
|
||||||
|
|
||||||
HTTP = "HTTP"
|
HTTP = "HTTP"
|
||||||
HTTPS = "HTTPS"
|
HTTPS = "HTTPS"
|
||||||
|
|
||||||
|
|
||||||
""" Class that defines methods common to both HTTP and FTP Tests. """
|
|
||||||
|
|
||||||
class CommonMethods:
|
class CommonMethods:
|
||||||
|
|
||||||
|
""" Class that defines methods common to both HTTP and FTP Tests. """
|
||||||
|
|
||||||
TestFailed = TestFailed
|
TestFailed = TestFailed
|
||||||
|
|
||||||
def init_test_env (self, name):
|
def init_test_env (self, name):
|
||||||
@ -131,107 +134,3 @@ class CommonMethods:
|
|||||||
r_obj = conf.find_conf(rule)(file_obj.rules[rule])
|
r_obj = conf.find_conf(rule)(file_obj.rules[rule])
|
||||||
server_rules[rule] = r_obj
|
server_rules[rule] = r_obj
|
||||||
return server_rules
|
return server_rules
|
||||||
|
|
||||||
|
|
||||||
""" Class for HTTP Tests. """
|
|
||||||
|
|
||||||
class HTTPTest (CommonMethods):
|
|
||||||
|
|
||||||
# Temp Notes: It is expected that when pre-hook functions are executed, only an empty test-dir exists.
|
|
||||||
# pre-hook functions are executed just prior to the call to Wget is made.
|
|
||||||
# post-hook functions will be executed immediately after the call to Wget returns.
|
|
||||||
|
|
||||||
def __init__ (
|
|
||||||
self,
|
|
||||||
name="Unnamed Test",
|
|
||||||
pre_hook=dict(),
|
|
||||||
test_params=dict(),
|
|
||||||
post_hook=dict(),
|
|
||||||
servers=[HTTP]
|
|
||||||
):
|
|
||||||
try:
|
|
||||||
self.Server_setup (name, pre_hook, test_params, post_hook, servers)
|
|
||||||
except TestFailed as tf:
|
|
||||||
print_red("Error: " + tf.error)
|
|
||||||
self.tests_passed = False
|
|
||||||
except Exception as ae:
|
|
||||||
print_red("Unhandled Exception Caught.")
|
|
||||||
print ( ae.__str__ ())
|
|
||||||
traceback.print_exc ()
|
|
||||||
self.tests_passed = False
|
|
||||||
else:
|
|
||||||
print_green("Test Passed")
|
|
||||||
finally:
|
|
||||||
self._exit_test ()
|
|
||||||
|
|
||||||
def Server_setup (self, name, pre_hook, test_params, post_hook, servers):
|
|
||||||
self.name = name
|
|
||||||
self.server_types = servers
|
|
||||||
self.servers = len (servers)
|
|
||||||
print_blue("Running Test " + self.name)
|
|
||||||
self.init_test_env (name)
|
|
||||||
self.server_list = list()
|
|
||||||
self.domain_list = list()
|
|
||||||
for server_type in servers:
|
|
||||||
server_inst = getattr (self, "init_" + server_type + "_Server") ()
|
|
||||||
self.server_list.append (server_inst)
|
|
||||||
domain = self.get_domain_addr (server_inst.server_address)
|
|
||||||
self.domain_list.append (domain)
|
|
||||||
#self.server = self.init_HTTP_Server ()
|
|
||||||
#self.domain = self.get_domain_addr (self.server.server_address)
|
|
||||||
|
|
||||||
self.pre_hook_call (pre_hook)
|
|
||||||
self.call_test (test_params)
|
|
||||||
self.post_hook_call (post_hook)
|
|
||||||
|
|
||||||
|
|
||||||
def hook_call(self, configs, name):
|
|
||||||
for conf_name, conf_arg in configs.items():
|
|
||||||
try:
|
|
||||||
# conf.find_conf(conf_name) returns the required conf class,
|
|
||||||
# then the class is instantiated with conf_arg, then the
|
|
||||||
# conf instance is called with this test instance itself to
|
|
||||||
# invoke the desired hook
|
|
||||||
conf.find_conf(conf_name)(conf_arg)(self)
|
|
||||||
except AttributeError as e:
|
|
||||||
print(e)
|
|
||||||
self.stop_HTTP_Server()
|
|
||||||
raise TestFailed("%s %s not defined." %
|
|
||||||
(name, conf_name))
|
|
||||||
|
|
||||||
|
|
||||||
def pre_hook_call (self, pre_hook):
|
|
||||||
self.hook_call(pre_hook, 'Pre Test Function')
|
|
||||||
|
|
||||||
def call_test (self, test_params):
|
|
||||||
self.hook_call(test_params, 'Test Option')
|
|
||||||
|
|
||||||
try:
|
|
||||||
self.act_retcode = self.exec_wget (self.options, self.urls, self.domain_list)
|
|
||||||
except TestFailed as tf:
|
|
||||||
self.stop_HTTP_Server ()
|
|
||||||
raise TestFailed (tf.__str__ ())
|
|
||||||
self.stop_HTTP_Server ()
|
|
||||||
|
|
||||||
def post_hook_call (self, post_hook):
|
|
||||||
self.hook_call(post_hook, 'Post Test Function')
|
|
||||||
|
|
||||||
def init_HTTP_Server (self):
|
|
||||||
server = http_server.HTTPd ()
|
|
||||||
server.start ()
|
|
||||||
return server
|
|
||||||
|
|
||||||
def init_HTTPS_Server (self):
|
|
||||||
server = http_server.HTTPSd ()
|
|
||||||
server.start ()
|
|
||||||
return server
|
|
||||||
|
|
||||||
def stop_HTTP_Server (self):
|
|
||||||
self.Request_remaining = list ()
|
|
||||||
for server in self.server_list:
|
|
||||||
server_req = server.server_inst.get_req_headers ()
|
|
||||||
self.Request_remaining.append (server_req)
|
|
||||||
server.server_inst.shutdown ()
|
|
||||||
|
|
||||||
|
|
||||||
# vim: set ts=4 sts=4 sw=4 tw=80 et :
|
|
107
testenv/test/http_test.py
Normal file
107
testenv/test/http_test.py
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
import traceback
|
||||||
|
import conf
|
||||||
|
from exc.test_failed import TestFailed
|
||||||
|
from misc.colour_terminal import print_red, print_green, print_blue
|
||||||
|
from server.http import http_server
|
||||||
|
from test.base_test import CommonMethods, HTTP
|
||||||
|
|
||||||
|
|
||||||
|
class HTTPTest (CommonMethods):
|
||||||
|
|
||||||
|
""" Class for HTTP Tests. """
|
||||||
|
|
||||||
|
# Temp Notes: It is expected that when pre-hook functions are executed, only an empty test-dir exists.
|
||||||
|
# pre-hook functions are executed just prior to the call to Wget is made.
|
||||||
|
# post-hook functions will be executed immediately after the call to Wget returns.
|
||||||
|
|
||||||
|
def __init__ (
|
||||||
|
self,
|
||||||
|
name="Unnamed Test",
|
||||||
|
pre_hook=dict(),
|
||||||
|
test_params=dict(),
|
||||||
|
post_hook=dict(),
|
||||||
|
servers=[HTTP]
|
||||||
|
):
|
||||||
|
try:
|
||||||
|
self.Server_setup (name, pre_hook, test_params, post_hook, servers)
|
||||||
|
except TestFailed as tf:
|
||||||
|
print_red("Error: " + tf.error)
|
||||||
|
self.tests_passed = False
|
||||||
|
except Exception as ae:
|
||||||
|
print_red("Unhandled Exception Caught.")
|
||||||
|
print ( ae.__str__ ())
|
||||||
|
traceback.print_exc ()
|
||||||
|
self.tests_passed = False
|
||||||
|
else:
|
||||||
|
print_green("Test Passed")
|
||||||
|
finally:
|
||||||
|
self._exit_test ()
|
||||||
|
|
||||||
|
def Server_setup (self, name, pre_hook, test_params, post_hook, servers):
|
||||||
|
self.name = name
|
||||||
|
self.server_types = servers
|
||||||
|
self.servers = len (servers)
|
||||||
|
print_blue("Running Test " + self.name)
|
||||||
|
self.init_test_env (name)
|
||||||
|
self.server_list = list()
|
||||||
|
self.domain_list = list()
|
||||||
|
for server_type in servers:
|
||||||
|
server_inst = getattr (self, "init_" + server_type + "_Server") ()
|
||||||
|
self.server_list.append (server_inst)
|
||||||
|
domain = self.get_domain_addr (server_inst.server_address)
|
||||||
|
self.domain_list.append (domain)
|
||||||
|
#self.server = self.init_HTTP_Server ()
|
||||||
|
#self.domain = self.get_domain_addr (self.server.server_address)
|
||||||
|
|
||||||
|
self.pre_hook_call (pre_hook)
|
||||||
|
self.call_test (test_params)
|
||||||
|
self.post_hook_call (post_hook)
|
||||||
|
|
||||||
|
|
||||||
|
def hook_call(self, configs, name):
|
||||||
|
for conf_name, conf_arg in configs.items():
|
||||||
|
try:
|
||||||
|
# conf.find_conf(conf_name) returns the required conf class,
|
||||||
|
# then the class is instantiated with conf_arg, then the
|
||||||
|
# conf instance is called with this test instance itself to
|
||||||
|
# invoke the desired hook
|
||||||
|
conf.find_conf(conf_name)(conf_arg)(self)
|
||||||
|
except AttributeError as e:
|
||||||
|
print(e)
|
||||||
|
self.stop_HTTP_Server()
|
||||||
|
raise TestFailed("%s %s not defined." %
|
||||||
|
(name, conf_name))
|
||||||
|
|
||||||
|
|
||||||
|
def pre_hook_call (self, pre_hook):
|
||||||
|
self.hook_call(pre_hook, 'Pre Test Function')
|
||||||
|
|
||||||
|
def call_test (self, test_params):
|
||||||
|
self.hook_call(test_params, 'Test Option')
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.act_retcode = self.exec_wget (self.options, self.urls, self.domain_list)
|
||||||
|
except TestFailed as tf:
|
||||||
|
self.stop_HTTP_Server ()
|
||||||
|
raise TestFailed (tf.__str__ ())
|
||||||
|
self.stop_HTTP_Server ()
|
||||||
|
|
||||||
|
def post_hook_call (self, post_hook):
|
||||||
|
self.hook_call(post_hook, 'Post Test Function')
|
||||||
|
|
||||||
|
def init_HTTP_Server (self):
|
||||||
|
server = http_server.HTTPd ()
|
||||||
|
server.start ()
|
||||||
|
return server
|
||||||
|
|
||||||
|
def init_HTTPS_Server (self):
|
||||||
|
server = http_server.HTTPSd ()
|
||||||
|
server.start ()
|
||||||
|
return server
|
||||||
|
|
||||||
|
def stop_HTTP_Server (self):
|
||||||
|
self.Request_remaining = list ()
|
||||||
|
for server in self.server_list:
|
||||||
|
server_req = server.server_inst.get_req_headers ()
|
||||||
|
self.Request_remaining.append (server_req)
|
||||||
|
server.server_inst.shutdown ()
|
Loading…
Reference in New Issue
Block a user