~hudson-openstack/burrow/trunk

« back to all changes in this revision

Viewing changes to test/backend/test_http.py

  • Committer: Tarmac
  • Author(s): Eric Day
  • Date: 2011-08-16 21:13:03 UTC
  • mfrom: (33.1.1 doc-updates)
  • Revision ID: tarmac-20110816211303-xu1zvok0cdrmit20
Test case cleanup, moved backend base test cases to test.backend (out of memory test).

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
 
 
15
'''Unittests for the HTTP backend. This starts the WSGI server so
 
16
tests the WSGI frontend as well.'''
 
17
 
15
18
import atexit
16
19
import ConfigParser
17
20
import os
18
21
import signal
 
22
import sys
19
23
import time
20
24
 
21
 
import burrow.server
22
25
import burrow.backend.http
23
 
import test.backend.test_memory
24
 
 
25
 
 
26
 
class TestHTTP(test.backend.test_memory.TestMemory):
27
 
    '''Unittests for the HTTP backend.'''
 
26
import test.backend
 
27
 
 
28
 
 
29
class HTTPBase(test.backend.Base):
 
30
    '''Base test case for http backend.'''
28
31
 
29
32
    def setUp(self):
30
33
        config = (ConfigParser.ConfigParser(), 'test')
32
35
        self.check_empty()
33
36
 
34
37
 
35
 
def kill_server():
36
 
    try:
37
 
        pid_file = open('TestHTTP.pid', 'r')
38
 
        pid = pid_file.read()
39
 
        pid_file.close()
40
 
        try:
41
 
            os.kill(int(pid), signal.SIGUSR1)
42
 
            time.sleep(1)
43
 
            os.kill(int(pid), signal.SIGTERM)
44
 
        except OSError:
45
 
            pass
46
 
        os.unlink('TestHTTP.pid')
47
 
    except IOError:
48
 
        pass
 
38
class TestHTTPAccounts(HTTPBase, test.backend.TestAccounts):
 
39
    '''Test case for accounts with http backend.'''
 
40
    pass
 
41
 
 
42
 
 
43
class TestHTTPQueues(HTTPBase, test.backend.TestQueues):
 
44
    '''Test case for queues with http backend.'''
 
45
    pass
 
46
 
 
47
 
 
48
class TestHTTPMessages(HTTPBase, test.backend.TestMessages):
 
49
    '''Test case for messages with http backend.'''
 
50
    pass
 
51
 
 
52
 
 
53
class TestHTTPMessage(HTTPBase, test.backend.TestMessage):
 
54
    '''Test case for message with http backend.'''
 
55
    pass
49
56
 
50
57
 
51
58
def start_server():
 
59
    '''Fork and start the server, saving the pid in a file.'''
52
60
    kill_server()
53
61
    pid = os.fork()
54
62
    if pid == 0:
57
65
            cov = coverage.coverage(data_suffix=True)
58
66
            cov.start()
59
67
 
60
 
            def save_coverage(signum, frame):
 
68
            def save_coverage(_signum, _frame):
 
69
                '''Callback for signal to save coverage info to file.'''
61
70
                cov.save()
62
71
 
63
72
            signal.signal(signal.SIGUSR1, save_coverage)
64
 
        except:
 
73
        except ImportError:
65
74
            pass
66
 
        server = burrow.server.Server(add_default_log_handler=False)
 
75
        server = burrow.Server(add_default_log_handler=False)
67
76
        server.frontends[0].default_ttl = 0
68
77
        server.run()
69
 
        os.exit(0)
 
78
        sys.exit(0)
70
79
    pid_file = open('TestHTTP.pid', 'w')
71
80
    pid_file.write(str(pid))
72
81
    pid_file.close()
74
83
    time.sleep(1)
75
84
 
76
85
 
 
86
def kill_server():
 
87
    '''Try killing the server if the pid file exists.'''
 
88
    try:
 
89
        pid_file = open('TestHTTP.pid', 'r')
 
90
        pid = pid_file.read()
 
91
        pid_file.close()
 
92
        try:
 
93
            os.kill(int(pid), signal.SIGUSR1)
 
94
            time.sleep(1)
 
95
            os.kill(int(pid), signal.SIGTERM)
 
96
        except OSError:
 
97
            pass
 
98
        os.unlink('TestHTTP.pid')
 
99
    except IOError:
 
100
        pass
 
101
 
 
102
 
77
103
start_server()