mirror of
https://github.com/mozilla-services/syncstorage-rs.git
synced 2025-08-06 20:06:57 +02:00
* feat: Remove support for BrowserID * mark test only functions as such. I think we can drop MapAndThenTrait for more recent implementations of rust. Closes: SYNC-3684
90 lines
3.0 KiB
Python
90 lines
3.0 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os.path
|
|
import psutil
|
|
import signal
|
|
import subprocess
|
|
import sys
|
|
from test_storage import TestStorage
|
|
from test_support import run_live_functional_tests
|
|
import time
|
|
from tokenserver.run import (run_end_to_end_tests, run_local_tests)
|
|
|
|
DEBUG_BUILD = "target/debug/syncserver"
|
|
RELEASE_BUILD = "/app/bin/syncserver"
|
|
|
|
|
|
def terminate_process(process):
|
|
proc = psutil.Process(pid=process.pid)
|
|
child_proc = proc.children(recursive=True)
|
|
for p in [proc] + child_proc:
|
|
os.kill(p.pid, signal.SIGTERM)
|
|
process.wait()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# When run as a script, this file will execute the
|
|
# functional tests against a live webserver.
|
|
target_binary = None
|
|
if os.path.exists(DEBUG_BUILD):
|
|
target_binary = DEBUG_BUILD
|
|
elif os.path.exists(RELEASE_BUILD):
|
|
target_binary = RELEASE_BUILD
|
|
else:
|
|
raise RuntimeError(
|
|
"Neither target/debug/syncserver \
|
|
nor /app/bin/syncserver were found."
|
|
)
|
|
|
|
def start_server():
|
|
the_server_subprocess = subprocess.Popen(
|
|
target_binary, shell=True, env=os.environ
|
|
)
|
|
|
|
# TODO we should change this to watch for a log message on startup
|
|
# to know when to continue instead of sleeping for a fixed amount
|
|
time.sleep(20)
|
|
|
|
return the_server_subprocess
|
|
|
|
os.environ.setdefault("SYNC_MASTER_SECRET", "secret0")
|
|
os.environ.setdefault("SYNC_CORS_MAX_AGE", "555")
|
|
os.environ.setdefault("SYNC_CORS_ALLOWED_ORIGIN", "*")
|
|
mock_fxa_server_url = os.environ["MOCK_FXA_SERVER_URL"]
|
|
url = "%s/v2" % mock_fxa_server_url
|
|
os.environ["SYNC_TOKENSERVER__FXA_OAUTH_SERVER_URL"] = mock_fxa_server_url
|
|
the_server_subprocess = start_server()
|
|
try:
|
|
res = 0
|
|
res |= run_live_functional_tests(TestStorage, sys.argv)
|
|
os.environ["TOKENSERVER_AUTH_METHOD"] = "oauth"
|
|
res |= run_local_tests()
|
|
finally:
|
|
terminate_process(the_server_subprocess)
|
|
|
|
os.environ["SYNC_TOKENSERVER__FXA_OAUTH_SERVER_URL"] = \
|
|
"https://oauth.stage.mozaws.net"
|
|
the_server_subprocess = start_server()
|
|
try:
|
|
res |= run_end_to_end_tests()
|
|
finally:
|
|
terminate_process(the_server_subprocess)
|
|
|
|
# Run the Tokenserver end-to-end tests without the JWK cached
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__KTY"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__ALG"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__KID"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__FXA_CREATED_AT"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__USE"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__N"]
|
|
del os.environ["SYNC_TOKENSERVER__FXA_OAUTH_PRIMARY_JWK__E"]
|
|
|
|
the_server_subprocess = start_server()
|
|
try:
|
|
verbosity = int(os.environ.get("VERBOSITY", "1"))
|
|
res |= run_end_to_end_tests(verbosity=verbosity)
|
|
finally:
|
|
terminate_process(the_server_subprocess)
|
|
|
|
sys.exit(res)
|