tests/mock_swift.py: Support adding testinfo.json

This commit is contained in:
Martin Pitt 2015-09-17 11:05:33 +02:00
parent 50673de2d8
commit 4df8700f8b

View File

@ -8,6 +8,7 @@ import sys
import socket import socket
import time import time
import tempfile import tempfile
import json
try: try:
from http.server import HTTPServer, BaseHTTPRequestHandler from http.server import HTTPServer, BaseHTTPRequestHandler
@ -25,7 +26,7 @@ class SwiftHTTPRequestHandler(BaseHTTPRequestHandler):
/container/path/result.tar) or listing the container contents /container/path/result.tar) or listing the container contents
(/container/?prefix=foo&delimiter=@&marker=foo/bar). (/container/?prefix=foo&delimiter=@&marker=foo/bar).
''' '''
# map container -> result.tar path -> (exitcode, testpkg-version) # map container -> result.tar path -> (exitcode, testpkg-version[, testinfo])
results = {} results = {}
def do_GET(self): def do_GET(self):
@ -43,7 +44,12 @@ class SwiftHTTPRequestHandler(BaseHTTPRequestHandler):
self.send_error(404, 'File not found (only result.tar supported)') self.send_error(404, 'File not found (only result.tar supported)')
return return
try: try:
(exitcode, pkgver) = self.results[container][os.path.dirname(path)] fields = self.results[container][os.path.dirname(path)]
try:
(exitcode, pkgver, testinfo) = fields
except ValueError:
(exitcode, pkgver) = fields
testinfo = None
except KeyError: except KeyError:
self.send_error(404, 'File not found') self.send_error(404, 'File not found')
return return
@ -65,6 +71,13 @@ class SwiftHTTPRequestHandler(BaseHTTPRequestHandler):
ti = tarfile.TarInfo('testpkg-version') ti = tarfile.TarInfo('testpkg-version')
ti.size = len(contents) ti.size = len(contents)
results.addfile(ti, io.BytesIO(contents)) results.addfile(ti, io.BytesIO(contents))
# add testinfo.json
if testinfo:
contents = json.dumps(testinfo).encode()
ti = tarfile.TarInfo('testinfo.json')
ti.size = len(contents)
results.addfile(ti, io.BytesIO(contents))
self.wfile.write(tar.getvalue()) self.wfile.write(tar.getvalue())
def list_container(self, container, query): def list_container(self, container, query):
@ -107,7 +120,7 @@ class AutoPkgTestSwiftServer:
'''Set served results. '''Set served results.
results is a map: container -> result.tar path -> results is a map: container -> result.tar path ->
(exitcode, testpkg-version) (exitcode, testpkg-version, testinfo)
''' '''
SwiftHTTPRequestHandler.results = results SwiftHTTPRequestHandler.results = results
@ -145,7 +158,7 @@ if __name__ == '__main__':
srv = AutoPkgTestSwiftServer() srv = AutoPkgTestSwiftServer()
srv.set_results({'autopkgtest-series': { srv.set_results({'autopkgtest-series': {
'series/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1'), 'series/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1'),
'series/i386/g/green/20150101_100000@': (0, 'green 1'), 'series/i386/g/green/20150101_100000@': (0, 'green 1', {'custom_environment': ['ADT_TEST_TRIGGERS=green']}),
'series/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1'), 'series/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1'),
'series/i386/l/lightgreen/20150101_100101@': (4, 'lightgreen 2'), 'series/i386/l/lightgreen/20150101_100101@': (4, 'lightgreen 2'),
'series/i386/l/lightgreen/20150101_100102@': (0, 'lightgreen 3'), 'series/i386/l/lightgreen/20150101_100102@': (0, 'lightgreen 3'),