~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to assess_update_mongo.py

  • Committer: Curtis Hovey
  • Date: 2014-08-01 12:44:38 UTC
  • Revision ID: curtis@canonical.com-20140801124438-l48516pldkzh7g5n
Do not show all the files in the tarball because it distracts from the test output.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
"""Test juju update-mongo command."""
3
 
 
4
 
from __future__ import print_function
5
 
 
6
 
import argparse
7
 
import logging
8
 
import sys
9
 
 
10
 
from deploy_stack import (
11
 
    BootstrapManager,
12
 
)
13
 
from remote import remote_from_address
14
 
from utility import (
15
 
    add_basic_testing_arguments,
16
 
    configure_logging,
17
 
    local_charm_path,
18
 
)
19
 
 
20
 
 
21
 
__metaclass__ = type
22
 
 
23
 
 
24
 
log = logging.getLogger("assess_update_mongo")
25
 
 
26
 
DEP_SCRIPT = """\
27
 
export DEBIAN_FRONTEND=noninteractive
28
 
sudo apt-get update
29
 
sudo apt-get install -y software-properties-common
30
 
sudo apt-add-repository -y ppa:juju/experimental
31
 
sudo apt-get update
32
 
"""
33
 
 
34
 
VERIFY_SCRIPT = """\
35
 
ps ax | grep 'mongo3/bin/mongod --dbpath /var/lib/juju/db' | grep -v grep
36
 
"""
37
 
 
38
 
 
39
 
def assess_update_mongo(client, series, bootstrap_host):
40
 
    log.info('series={}, bootstrap_host={}'.format(series, bootstrap_host))
41
 
    return_code = 1
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
50
 
    # Ubuntu.
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()
56
 
    client.show_status()
57
 
    log.info("Checking bootstrap host for mongo3:")
58
 
    mongo_proc = remote.run(VERIFY_SCRIPT)
59
 
    log.info(mongo_proc)
60
 
    if '--port 37017' in mongo_proc and '--replSet juju' in mongo_proc:
61
 
        return_code = 0
62
 
    log.info("Controller upgraded to MongoDB 3.")
63
 
    log.info("Test complete.")
64
 
    return return_code
65
 
 
66
 
 
67
 
def parse_args(argv):
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)
73
 
 
74
 
 
75
 
def main(argv=None):
76
 
    return_code = 1
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.")
85
 
    if return_code == 0:
86
 
        log.info('TEST PASS')
87
 
    else:
88
 
        log.info('TEST FAIL')
89
 
    return return_code
90
 
 
91
 
 
92
 
if __name__ == '__main__':
93
 
    sys.exit(main())