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:'))
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...'
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
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')
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]
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'
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!'
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'
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')
def test_log_capturing(logcapture): getLogger().info('boo %s', 'arg') assert list(logcapture.actual()) == [ ('root', 'INFO', 'boo arg'), ]