~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-10 05:48:15 UTC
  • mfrom: (16.3.23 backend-unittests)
  • Revision ID: tarmac-20110810054815-xzg9slms24xpdnrp
Added HTTP backend unit tests that work against a running server (auto started/killed with test).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2011 OpenStack LLC.
 
2
#
 
3
# Licensed under the Apache License, Version 2.0 (the "License");
 
4
# you may not use this file except in compliance with the License.
 
5
# You may obtain a copy of the License at
 
6
#
 
7
#     http://www.apache.org/licenses/LICENSE-2.0
 
8
#
 
9
# Unless required by applicable law or agreed to in writing, software
 
10
# distributed under the License is distributed on an "AS IS" BASIS,
 
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
12
# See the License for the specific language governing permissions and
 
13
# limitations under the License.
 
14
 
 
15
import atexit
 
16
import ConfigParser
 
17
import os
 
18
import signal
 
19
import time
 
20
 
 
21
import burrow.server
 
22
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.'''
 
28
 
 
29
    def setUp(self):
 
30
        config = (ConfigParser.ConfigParser(), 'test')
 
31
        self.backend = burrow.backend.http.Backend(config)
 
32
        self.check_empty()
 
33
 
 
34
 
 
35
def kill_server():
 
36
    try:
 
37
        pid_file = open('server.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('server.pid')
 
47
    except IOError:
 
48
        pass
 
49
 
 
50
 
 
51
def start_server():
 
52
    pid = os.fork()
 
53
    if pid == 0:
 
54
        try:
 
55
            import coverage
 
56
            cov = coverage.coverage(data_suffix=True)
 
57
            cov.start()
 
58
 
 
59
            def save_coverage(signum, frame):
 
60
                cov.save()
 
61
 
 
62
            signal.signal(signal.SIGUSR1, save_coverage)
 
63
        except:
 
64
            pass
 
65
        server = burrow.server.Server(add_default_log_handler=False)
 
66
        server.frontends[0].default_ttl = 0
 
67
        server.run()
 
68
        os.exit(0)
 
69
    pid_file = open('server.pid', 'w')
 
70
    pid_file.write(str(pid))
 
71
    pid_file.close()
 
72
    time.sleep(1)
 
73
 
 
74
 
 
75
kill_server()
 
76
start_server()
 
77
atexit.register(kill_server)