コード例 #1
0
def test_version_cmd(logcapture):
    version_cmd()
    records = list(logcapture.actual())

    assert records[0][1] == 'INFO'
    assert records[0][2].startswith('gcdt version ')
    assert records[1][1] == 'INFO'
    assert (records[1][2].startswith('gcdt plugins:')
            or records[1][2].startswith('gcdt tools:'))
コード例 #2
0
def test_bundle_lambda(temp_folder, logcapture):
    zipfile = b'that was easy__'
    exit_code = bundle_lambda(zipfile)
    assert exit_code == 0
    assert os.path.isfile('bundle.zip')
    records = list(logcapture.actual())

    assert records[0][1] == 'INFO'
    assert records[0][2] == 'Finished - a bundle.zip is waiting for you...'
コード例 #3
0
def test_output_deployment(cleanup_stack_tenkai, awsclient, logcapture):
    logcapture.level = logging.INFO
    are_credentials_still_valid(awsclient)
    # Set up stack with an ec2 deployment
    cloudformation, _ = load_cloudformation_template(
        here('resources/sample_codedeploy_app/cloudformation.py'))
    exit_code = deploy_stack(awsclient, {},
                             config_sample_codeploy_stack,
                             cloudformation,
                             override_stack_policy=False)
    assert_equal(exit_code, 0)

    stack_name = _get_stack_name(config_sample_codeploy_stack)
    stack_output = get_outputs_for_stack(awsclient, stack_name)
    app_name = stack_output.get('ApplicationName', None)
    deployment_group = stack_output.get('DeploymentGroupName', None)

    not_working_deploy_dir = here(
        './resources/sample_codedeploy_app/not_working')
    os.chdir(not_working_deploy_dir)
    folders = [{'source': 'codedeploy', 'target': ''}]

    # test deployment which should exit with exit code 1
    deploy_id_1 = tenkai_deploy(awsclient, app_name, deployment_group,
                                'CodeDeployDefault.AllAtOnce',
                                '7finity-infra-dev-deployment',
                                bundle_revision(folders))
    exit_code = output_deployment_status(awsclient, deploy_id_1)
    assert exit_code == 1

    output_deployment_summary(awsclient, deploy_id_1)

    output_deployment_diagnostics(awsclient, deploy_id_1, 'unknown_log_group')
    records = list(logcapture.actual())

    assert ('gcdt.tenkai_core', 'INFO',
            'Instance ID            Status       Most recent event') in records
    #assert ('gcdt.tenkai_core', 'INFO', u'\x1b[35mi-0396d1ca00089c672   \x1b[39m Failed       ValidateService') in records

    assert ('gcdt.tenkai_core', 'INFO',
            u'Error Code:  ScriptFailed') in records
    assert ('gcdt.tenkai_core', 'INFO', u'Script Name: appspec.sh') in records

    assert (
        'gcdt.tenkai_core', 'INFO',
        'Message:     Script at specified location: appspec.sh run as user root failed with exit code 1'
    ) in records

    assert (
        'gcdt.tenkai_core', 'INFO',
        u'Log Tail:    LifecycleEvent - ApplicationStart\nScript - appspec.sh\n[stdout]LIFECYCLE_EVENT=ApplicationStart\n[stderr]mv: cannot stat \u2018not-existing-file.txt\u2019: No such file or directory\n'
    ) in records
コード例 #4
0
def test_list_cmd(awsclient, vendored_folder, temp_lambda, logcapture):
    logcapture.level = logging.INFO
    log.info('running test_list_cmd')
    tooldata = get_tooldata(awsclient, 'ramuda', 'list', config={})

    list_cmd(**tooldata)

    records = list(logcapture.actual())
    assert records[0][1] == 'INFO'
    assert records[0][2] == 'running test_list_cmd'

    assert records[2][1] == 'INFO'
    assert records[2][2].startswith('\tMemory')
    assert records[3][1] == 'INFO'
    assert records[3][2].startswith('\tTimeout')
コード例 #5
0
def test_logs_cmd(awsclient, vendored_folder, temp_lambda, logcapture):
    logcapture.level = logging.INFO
    log.info('running test_logs_cmd')
    tooldata = get_tooldata(awsclient, 'ramuda', 'logs', config={})
    lambda_name = temp_lambda[0]

    # this testcase is potentially flaky since we depend on the log events
    # to eventually arrive in AWS cloudwatch
    time.sleep(10)  # automatically removed in playback mode!

    logs_cmd(lambda_name, '2m', None, False, **tooldata)
    records = list(logcapture.actual())

    assert records[3][1] == 'INFO'
    assert "{u'ramuda_action': u'ping'}" in records[3][2]
コード例 #6
0
def test_list_functions(awsclient, vendored_folder, temp_lambda, logcapture):
    logcapture.level = logging.INFO
    log.info('running test_list_functions')
    list_functions(awsclient)

    records = list(logcapture.actual())
    assert records[0][1] == 'INFO'
    assert records[0][2] == 'running test_list_functions'

    assert records[2][1] == 'INFO'
    assert records[2][2].startswith('\tMemory')
    assert records[3][1] == 'INFO'
    assert records[3][2].startswith('\tTimeout')

    assert records[5][1] == 'INFO'
    assert records[5][2] == '\tCurrent Version: $LATEST'
コード例 #7
0
def test_secret_lookup_continue_if_not_found(mock_get_secret, logcapture):
    logcapture.level = logging.INFO
    mock_get_secret.side_effect = ItemNotFound('not found, sorry')
    context = {'_awsclient': 'my_awsclient', 'tool': 'ramuda'}
    config = {'bazz_value': 'lookup:secret:foo.bar.bazz:CONTINUE_IF_NOT_FOUND'}
    _resolve_lookups(context, config, ['secret'])
    mock_get_secret.assert_called_once_with('my_awsclient',
                                            'foo.bar.bazz',
                                            region_name=None)

    assert config.get('bazz_value') == \
           'lookup:secret:foo.bar.bazz:CONTINUE_IF_NOT_FOUND'

    records = list(logcapture.actual())
    assert records[0][1] == 'WARNING'
    assert records[0][2] == \
           'lookup:secret \'foo.bar.bazz\' not found in credstash!'
コード例 #8
0
def test_secret_lookup_error_case(mock_get_secret, logcapture):
    logcapture.level = logging.INFO
    mock_get_secret.side_effect = ItemNotFound('not found, sorry')
    context = {'_awsclient': 'my_awsclient', 'tool': 'ramuda'}
    config = {
        'lookups': ['secret'],
        'bazz_value': 'lookup:secret:foo.bar.bazz'
    }
    lookup((context, config))
    mock_get_secret.assert_called_once_with('my_awsclient',
                                            'foo.bar.bazz',
                                            region_name=None)
    assert context['error'] == \
        'lookup for \'bazz_value\' failed: "lookup:secret:foo.bar.bazz"'
    assert config.get('bazz_value') == \
        'lookup:secret:foo.bar.bazz'

    assert context['error'] == \
        'lookup for \'bazz_value\' failed: "lookup:secret:foo.bar.bazz"'
    records = list(logcapture.actual())
    assert records[0][1] == 'ERROR'
    assert records[0][2] == 'not found, sorry'
コード例 #9
0
def test_bundle_cmd(logcapture):
    tooldata = {'context': {'_bundle_file': 'test_file'}}
    bundle_cmd(**tooldata)
    records = list(logcapture.actual())
    assert records[0][1] == 'INFO'
    assert records[0][2].startswith('created bundle at test_file')
コード例 #10
0
ファイル: test_gcdt_logging.py プロジェクト: c0un7-z3r0/gcdt
def test_log_capturing(logcapture):
    getLogger().info('boo %s', 'arg')
    assert list(logcapture.actual()) == [
        ('root', 'INFO', 'boo arg'),
    ]