2
"""Test juju update-mongo command."""
4
from __future__ import print_function
10
from deploy_stack import (
13
from remote import remote_from_address
15
add_basic_testing_arguments,
24
log = logging.getLogger("assess_update_mongo")
27
export DEBIAN_FRONTEND=noninteractive
29
sudo apt-get install -y software-properties-common
30
sudo apt-add-repository -y ppa:juju/experimental
35
ps ax | grep 'mongo3/bin/mongod --dbpath /var/lib/juju/db' | grep -v grep
39
def assess_update_mongo(client, series, bootstrap_host):
40
log.info('series={}, bootstrap_host={}'.format(series, bootstrap_host))
42
charm = local_charm_path(
43
charm='ubuntu', juju_ver=client.version, series=series)
44
log.info("Setting up test.")
45
client.deploy(charm, series=series)
46
client.wait_for_started()
47
log.info("Setup complete.")
48
log.info("Test started.")
49
# Instrument the case where Juju can install the new mongo packages from
51
remote = remote_from_address(bootstrap_host, series=series)
52
remote.run(DEP_SCRIPT)
53
# upgrade-mongo returns 0 if all is well. status will work but not
54
# explicitly show that mongo3 is running.
55
client.upgrade_mongo()
57
log.info("Checking bootstrap host for mongo3:")
58
mongo_proc = remote.run(VERIFY_SCRIPT)
60
if '--port 37017' in mongo_proc and '--replSet juju' in mongo_proc:
62
log.info("Controller upgraded to MongoDB 3.")
63
log.info("Test complete.")
68
"""Parse all arguments."""
69
parser = argparse.ArgumentParser(
70
description="Test juju update-mongo command")
71
add_basic_testing_arguments(parser)
72
return parser.parse_args(argv)
77
args = parse_args(argv)
78
configure_logging(args.verbose)
79
bs_manager = BootstrapManager.from_args(args)
80
with bs_manager.booted_context(args.upload_tools):
81
return_code = assess_update_mongo(
82
bs_manager.client, args.series, bs_manager.known_hosts['0'])
83
log.info("Tearing down test.")
84
log.info("Teardown complete.")
92
if __name__ == '__main__':