~veebers/juju-ci-tools/explore-perf-bulk-model-destruction

1485.58.1 by Leo Zhang
Add assess_constraints
1
#!/usr/bin/env python
1485.58.2 by Leo Zhang
Changes after review.
2
"""This module tests the deployment with constraints."""
1485.58.1 by Leo Zhang
Add assess_constraints
3
4
from __future__ import print_function
5
import os
6
7
import argparse
8
import logging
9
import sys
10
11
from deploy_stack import (
12
    BootstrapManager,
13
)
14
from jujucharm import (
15
    Charm,
16
    local_charm_path,
17
)
18
from utility import (
19
    add_basic_testing_arguments,
20
    configure_logging,
21
    JujuAssertionError,
22
    temp_dir,
23
)
24
25
26
__metaclass__ = type
27
28
29
log = logging.getLogger("assess_constraints")
30
1485.58.2 by Leo Zhang
Changes after review.
31
VIRT_TYPES = ['lxd']
1485.58.1 by Leo Zhang
Add assess_constraints
32
33
34
def deploy_constraint(client, charm, series, charm_repo,
35
                      memory=None, cpu_cores=None, virt_type=None):
36
    """Test deploying charm with constraints."""
37
    args = ()
38
    if memory:
39
        args += ("mem={}".format(memory),)
40
    if cpu_cores:
41
        args += ("cpu-cores={}".format(cpu_cores),)
42
    if virt_type:
43
        args += ("virt-type={}".format(virt_type),)
44
    constraints = " ".join(args)
45
    client.deploy(charm, series=series, repository=charm_repo,
46
                  constraints=constraints)
1485.58.2 by Leo Zhang
Changes after review.
47
    client.wait_for_workloads()
1485.58.1 by Leo Zhang
Add assess_constraints
48
49
50
def assess_virt_type(client, virt_type):
51
    """Assess the virt-type option for constraints"""
52
    if virt_type not in VIRT_TYPES:
53
        raise JujuAssertionError(virt_type)
54
    charm_name = 'virt-type-' + virt_type
1485.58.2 by Leo Zhang
Changes after review.
55
    charm_series = 'xenial'
1485.58.1 by Leo Zhang
Add assess_constraints
56
    with temp_dir() as charm_dir:
57
        constraints_charm = Charm(charm_name,
58
                                  'Test charm for constraints',
1485.58.2 by Leo Zhang
Changes after review.
59
                                  series=['xenial'])
1485.58.1 by Leo Zhang
Add assess_constraints
60
        charm_root = constraints_charm.to_repo_dir(charm_dir)
61
        platform = 'ubuntu'
62
        charm = local_charm_path(charm=charm_name,
63
                                 juju_ver=client.version,
64
                                 series=charm_series,
65
                                 repository=os.path.dirname(charm_root),
66
                                 platform=platform)
67
        deploy_constraint(client, charm, charm_series,
68
                          charm_dir, virt_type=virt_type)
69
70
1485.58.2 by Leo Zhang
Changes after review.
71
def assess_constraints(client, test_kvm=False):
1485.58.1 by Leo Zhang
Add assess_constraints
72
    """Assess deployment with constraints"""
1485.58.2 by Leo Zhang
Changes after review.
73
    if test_kvm:
74
        VIRT_TYPES.append("kvm")
1485.58.1 by Leo Zhang
Add assess_constraints
75
    for virt_type in VIRT_TYPES:
76
        assess_virt_type(client, virt_type)
77
    try:
78
        assess_virt_type(client, 'aws')
79
    except JujuAssertionError:
80
        log.info("Correctly rejected virt-type aws")
81
    else:
82
        raise JujuAssertionError("FAIL: Client deployed with virt-type aws")
1485.58.2 by Leo Zhang
Changes after review.
83
    if test_kvm:
84
        VIRT_TYPES.remove("kvm")
1485.58.1 by Leo Zhang
Add assess_constraints
85
86
87
def parse_args(argv):
88
    """Parse all arguments."""
89
    parser = argparse.ArgumentParser(description="Test constraints")
90
    add_basic_testing_arguments(parser)
91
    return parser.parse_args(argv)
92
93
94
def main(argv=None):
95
    args = parse_args(argv)
96
    configure_logging(args.verbose)
97
    bs_manager = BootstrapManager.from_args(args)
1485.58.2 by Leo Zhang
Changes after review.
98
    test_kvm = '--with-virttype-kvm' in args
1485.58.1 by Leo Zhang
Add assess_constraints
99
    with bs_manager.booted_context(args.upload_tools):
1485.58.2 by Leo Zhang
Changes after review.
100
        assess_constraints(bs_manager.client, test_kvm)
1485.58.1 by Leo Zhang
Add assess_constraints
101
    return 0
102
103
104
if __name__ == '__main__':
105
    sys.exit(main())