blob: 73ca0d7baaa72a89ded806f0c4183eadb196e660 [file] [log] [blame]
#!/usr/bin/python
"""Fake loguploader for unit tests.
"""
import BaseHTTPServer
import cgi
import socket
import subprocess
import sys
import zlib
g = {}
class LogHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/plain')
self.end_headers()
self.wfile.write(g['url'])
def do_POST(self):
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': self.headers['Content-Type'],
})
post_data = form['file'].file.read()
g['post_body'] = zlib.decompress(post_data)
self.send_response(302)
self.end_headers()
def upload_logs(text):
s = BaseHTTPServer.HTTPServer(('localhost', 0), LogHandler)
sn = s.socket.getsockname()
port = sn[1]
g['url'] = url = 'http://127.0.0.1:%d/' % port
up = subprocess.Popen(['./upload-logs', '--consensus_key=ABCDEFG',
'--server=' + url, '--stdin=dmesg'], bufsize=8192,
stdin=subprocess.PIPE)
up.stdin.write(text)
up.stdin.close()
s.handle_request()
s.handle_request()
s.server_close()
up.wait()
return g['post_body']
def main():
assert('00:11:22:33:44:55' not in upload_logs('foo 00:11:22:33:44:55 bar'))
assert('00-11-22-33-44-55' not in upload_logs('foo 00-11-22-33-44-55'))
assert('00_11_22_33_44_55' not in upload_logs('00_11_22_33_44_55 bar'))
assert('00_11_22_33_44_55' not in upload_logs('00_11_22_33_44_55 foo\n'))
assert(upload_logs('00:11:22:33:44:55') == 'XOMWAQ')
assert(upload_logs('00-11-22-33-44-55') == 'XOMWAQ')
assert(upload_logs('00_11_22_33_44_55') == 'XOMWAQ')
assert('not_a_mac_address' in upload_logs('not_a_mac_address'))
if __name__ == '__main__':
main()