def test_load_credentials_keyerror(mock_open, ): credentials = {} mock_open.side_effect = mock.mock_open(read_data=json.dumps(credentials)) with pytest.raises(KeyError): assert load_credentials()
def test_load_credentials_keyerror( mock_open, ): credentials = {} mock_open.side_effect = mock.mock_open(read_data=json.dumps(credentials)) with pytest.raises(KeyError): assert load_credentials()
def run_until_number_tasks(context, number): for _ in range(20): with mock.patch('paasta_tools.mesos_maintenance.load_credentials', autospec=True) as mock_load_credentials: mock_load_credentials.side_effect = mesos_maintenance.load_credentials( mesos_secrets='/etc/mesos-slave-secret', ) run_setup_marathon_job(context) sleep(0.5) if context.marathon_client.get_app(context.app_id).instances == number: return assert context.marathon_client.get_app(context.app_id).instances == number
def when_setup_service_initiated(context): with contextlib.nested( mock.patch( 'paasta_tools.bounce_lib.get_happy_tasks', autospec=True, # Wrap function call so we can select a subset of tasks or test # intermediate steps, like when an app is not completely up side_effect=lambda app, _, __, ___, **kwargs: get_happy_tasks( app, context.service, "fake_nerve_ns", context.system_paasta_config)[:context.max_tasks], ), mock.patch('paasta_tools.bounce_lib.bounce_lock_zookeeper', autospec=True), mock.patch('paasta_tools.bounce_lib.create_app_lock', autospec=True), mock.patch('paasta_tools.bounce_lib.time.sleep', autospec=True), mock.patch('paasta_tools.setup_marathon_job.load_system_paasta_config', autospec=True), mock.patch('paasta_tools.setup_marathon_job._log', autospec=True), mock.patch('paasta_tools.marathon_tools.get_config_hash', autospec=True, return_value='confighash'), mock.patch('paasta_tools.marathon_tools.get_code_sha_from_dockerurl', autospec=True, return_value='newapp'), mock.patch('paasta_tools.marathon_tools.get_docker_url', autospec=True, return_value='busybox'), mock.patch('paasta_tools.mesos_maintenance.get_principal', autospec=True), mock.patch('paasta_tools.mesos_maintenance.get_secret', autospec=True), ) as ( _, _, _, _, mock_load_system_paasta_config, _, _, _, _, mock_get_principal, mock_get_secret, ): credentials = mesos_maintenance.load_credentials(mesos_secrets='/etc/mesos-slave-secret') mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret mock_load_system_paasta_config.return_value.get_cluster = mock.Mock(return_value=context.cluster) # 120 * 0.5 = 60 seconds for _ in xrange(120): try: marathon_apps = marathon_tools.get_all_marathon_apps(context.marathon_client, embed_failures=True) (code, message) = setup_marathon_job.setup_service( service=context.service, instance=context.instance, client=context.marathon_client, marathon_apps=marathon_apps, service_marathon_config=context.new_marathon_service_config, soa_dir='/nail/etc/services', ) assert code == 0, message return except MarathonHttpError: time.sleep(0.5) raise Exception("Unable to acquire app lock for setup_marathon_job.setup_service")
def test_load_credentials(mock_open, ): principal = "username" secret = "password" credentials = {"principal": principal, "secret": secret} mock_open.side_effect = mock.mock_open(read_data=json.dumps(credentials)) credentials = load_credentials() assert credentials.principal == principal assert credentials.secret == secret
def mark_host_at_risk(context, host): start = mesos_maintenance.datetime_to_nanoseconds(mesos_maintenance.now()) duration = mesos_maintenance.parse_timedelta("1h") with contextlib.nested( mock.patch("paasta_tools.mesos_maintenance.get_principal", autospec=True), mock.patch("paasta_tools.mesos_maintenance.get_secret", autospec=True), ) as (mock_get_principal, mock_get_secret): credentials = mesos_maintenance.load_credentials(mesos_secrets="/etc/mesos-slave-secret") mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret mesos_maintenance.drain([host], start, duration) context.at_risk_host = host
def when_setup_service_initiated(context): with mock.patch( 'paasta_tools.bounce_lib.get_happy_tasks', autospec=True, # Wrap function call so we can select a subset of tasks or test # intermediate steps, like when an app is not completely up side_effect=lambda app, _, __, ___, **kwargs: get_happy_tasks( app, context.service, "fake_nerve_ns", context.system_paasta_config, )[:context.max_tasks], ), mock.patch( 'paasta_tools.bounce_lib.bounce_lock_zookeeper', autospec=True, ), mock.patch( 'paasta_tools.bounce_lib.time.sleep', autospec=True, ), mock.patch( 'paasta_tools.setup_marathon_job.load_system_paasta_config', autospec=True, ) as mock_load_system_paasta_config, mock.patch( 'paasta_tools.setup_marathon_job._log', autospec=True, ), mock.patch( 'paasta_tools.marathon_tools.get_config_hash', autospec=True, return_value='confighash', ), mock.patch( 'paasta_tools.marathon_tools.get_code_sha_from_dockerurl', autospec=True, return_value='newapp', ), mock.patch( 'paasta_tools.utils.InstanceConfig.get_docker_url', autospec=True, return_value='busybox', ), mock.patch( 'paasta_tools.mesos_maintenance.get_principal', autospec=True, ) as mock_get_principal, mock.patch( 'paasta_tools.mesos_maintenance.get_secret', autospec=True, ) as mock_get_secret: credentials = mesos_maintenance.load_credentials(mesos_secrets='/etc/mesos-slave-secret') mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret mock_load_system_paasta_config.return_value.get_cluster = mock.Mock(return_value=context.cluster) # 120 * 0.5 = 60 seconds for _ in range(120): try: marathon_apps_with_clients = marathon_tools.get_marathon_apps_with_clients( clients=context.marathon_clients.get_all_clients(), embed_tasks=True, ) (code, message, bounce_again) = setup_marathon_job.setup_service( service=context.service, instance=context.instance, clients=context.marathon_clients, marathon_apps_with_clients=marathon_apps_with_clients, job_config=context.new_marathon_service_config, soa_dir='/nail/etc/services', ) assert code == 0, message return except MarathonHttpError: time.sleep(0.5) raise Exception("Unable to acquire app lock for setup_marathon_job.setup_service")
def _clean_up_maintenance(context): """If a host is marked as draining/down for maintenance, bring it back up""" if hasattr(context, "at_risk_host"): with mock.patch("paasta_tools.mesos_maintenance.get_principal", autospec=True) as mock_get_principal, mock.patch( "paasta_tools.mesos_maintenance.get_secret", autospec=True) as mock_get_secret: credentials = load_credentials( mesos_secrets="/etc/mesos-slave-secret") mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret undrain([context.at_risk_host]) del context.at_risk_host
def mark_host_at_risk(context, host): start = mesos_maintenance.datetime_to_nanoseconds(mesos_maintenance.now()) duration = mesos_maintenance.parse_timedelta('1h') with mock.patch( 'paasta_tools.mesos_maintenance.get_principal', autospec=True, ) as mock_get_principal, mock.patch( 'paasta_tools.mesos_maintenance.get_secret', autospec=True, ) as mock_get_secret: credentials = mesos_maintenance.load_credentials(mesos_secrets='/etc/mesos-slave-secret') mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret mesos_maintenance.drain([host], start, duration) context.at_risk_host = host
def run_until_number_tasks(context, number): for _ in xrange(20): with contextlib.nested(mock.patch("paasta_tools.mesos_maintenance.load_credentials", autospec=True)) as ( mock_load_credentials, ): mock_load_credentials.side_effect = mesos_maintenance.load_credentials( mesos_secrets="/etc/mesos-slave-secret" ) run_setup_marathon_job(context) sleep(0.5) if context.marathon_client.get_app(context.app_id).instances == number: return assert context.marathon_client.get_app(context.app_id).instances == number
def test_load_credentials(mock_open, ): principal = 'username' secret = 'password' credentials = { 'principal': principal, 'secret': secret, } mock_open.side_effect = mock.mock_open(read_data=json.dumps(credentials)) credentials = load_credentials() assert credentials.principal == principal assert credentials.secret == secret
def _clean_up_maintenance(context): """If a host is marked as draining/down for maintenance, bring it back up""" if hasattr(context, 'at_risk_host'): with contextlib.nested( mock.patch('paasta_tools.mesos_maintenance.get_principal', autospec=True), mock.patch('paasta_tools.mesos_maintenance.get_secret', autospec=True), ) as ( mock_get_principal, mock_get_secret, ): credentials = load_credentials(mesos_secrets='/etc/mesos-slave-secret') mock_get_principal.return_value = credentials.principal mock_get_secret.return_value = credentials.secret undrain([context.at_risk_host]) del context.at_risk_host
def test_load_credentials( mock_open, ): principal = 'username' secret = 'password' credentials = { 'principal': principal, 'secret': secret, } mock_open.side_effect = mock.mock_open(read_data=json.dumps(credentials)) credentials = load_credentials() assert credentials.principal == principal assert credentials.secret == secret
def test_load_credentials_missing_file( mock_open, ): with pytest.raises(IOError): assert load_credentials()
def test_load_credentials_missing_file(mock_open, ): with pytest.raises(IOError): assert load_credentials()