def test_mesos_cpu_metrics_provider_no_data_mesos(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] zookeeper_get_payload = { 'cpu_last_time': '0', 'cpu_data': '', } with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=lambda x: (zookeeper_get_payload[x.split('/')[-1]], None)))), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( _, _, ): with raises(autoscaling_service_lib.MetricsProviderNoDataError): autoscaling_service_lib.mesos_cpu_metrics_provider(fake_marathon_service_config, fake_marathon_tasks, [])
def test_mesos_cpu_metrics_provider(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_mesos_task = mock.MagicMock( stats={ 'cpus_limit': 1.1, 'cpus_system_time_secs': 240, 'cpus_user_time_secs': 240, }, ) fake_mesos_task.__getitem__.return_value = 'fake-service.fake-instance' fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=NoNodeError))), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( mock_zk_client, _, ): with raises(autoscaling_service_lib.MetricsProviderNoDataError): autoscaling_service_lib.mesos_cpu_metrics_provider( fake_marathon_service_config, fake_marathon_tasks, (fake_mesos_task,)) mock_zk_client.return_value.set.assert_has_calls([ mock.call('/autoscaling/fake-service/fake-instance/cpu_data', '480.0:fake-service.fake-instance'), ], any_order=True)
def test_mesos_cpu_metrics_provider_no_data_mesos(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] zookeeper_get_payload = { 'cpu_last_time': '0', 'cpu_data': '', } with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=lambda x: (zookeeper_get_payload[x.split('/')[-1]], None)))), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( _, _, ): with raises(autoscaling_service_lib.MetricsProviderNoDataError): autoscaling_service_lib.mesos_cpu_metrics_provider( fake_marathon_service_config, fake_marathon_tasks, [])
def test_mesos_cpu_metrics_provider(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_mesos_task = mock.MagicMock( stats={ 'cpus_limit': 1.1, 'cpus_system_time_secs': 240, 'cpus_user_time_secs': 240, }, ) fake_mesos_task.__getitem__.return_value = 'fake-service.fake-instance' fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=NoNodeError))), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( mock_zk_client, _, ): with raises(autoscaling_service_lib.MetricsProviderNoDataError): autoscaling_service_lib.mesos_cpu_metrics_provider( fake_marathon_service_config, fake_marathon_tasks, (fake_mesos_task,)) mock_zk_client.return_value.set.assert_has_calls([ mock.call('/autoscaling/fake-service/fake-instance/cpu_data', '480.0:fake-service.fake-instance'), ], any_order=True)
def test_mesos_cpu_metrics_provider_no_previous_cpu_data(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_mesos_task = mock.MagicMock(stats={ 'cpus_limit': 1.1, 'cpus_system_time_secs': 240, 'cpus_user_time_secs': 240, }, ) fake_mesos_task.__getitem__.return_value = 'fake-service.fake-instance' fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] current_time = datetime.now() zookeeper_get_payload = { 'cpu_last_time': (current_time - timedelta(seconds=600)).strftime('%s'), 'cpu_data': '0:fake-service.fake-instance', } with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=lambda x: (zookeeper_get_payload[x.split('/')[-1]], None)))), mock.patch( 'paasta_tools.autoscaling.autoscaling_service_lib.datetime', autospec=True), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( mock_zk_client, mock_datetime, _, ): mock_datetime.now.return_value = current_time assert autoscaling_service_lib.mesos_cpu_metrics_provider( fake_marathon_service_config, fake_marathon_tasks, (fake_mesos_task, )) == 0.8 mock_zk_client.return_value.set.assert_has_calls([ mock.call('/autoscaling/fake-service/fake-instance/cpu_last_time', current_time.strftime('%s')), mock.call('/autoscaling/fake-service/fake-instance/cpu_data', '480.0:fake-service.fake-instance'), ], any_order=True)
def test_mesos_cpu_metrics_provider_no_previous_cpu_data(): fake_marathon_service_config = marathon_tools.MarathonServiceConfig( service='fake-service', instance='fake-instance', cluster='fake-cluster', config_dict={}, branch_dict={}, ) fake_mesos_task = mock.MagicMock( stats={ 'cpus_limit': 1.1, 'cpus_system_time_secs': 240, 'cpus_user_time_secs': 240, }, ) fake_mesos_task.__getitem__.return_value = 'fake-service.fake-instance' fake_marathon_tasks = [mock.Mock(id='fake-service.fake-instance')] current_time = datetime.now() zookeeper_get_payload = { 'cpu_last_time': (current_time - timedelta(seconds=600)).strftime('%s'), 'cpu_data': '0:fake-service.fake-instance', } with contextlib.nested( mock.patch('paasta_tools.utils.KazooClient', autospec=True, return_value=mock.Mock(get=mock.Mock( side_effect=lambda x: (zookeeper_get_payload[x.split('/')[-1]], None)))), mock.patch('paasta_tools.autoscaling.autoscaling_service_lib.datetime', autospec=True), mock.patch('paasta_tools.utils.load_system_paasta_config', autospec=True, return_value=mock.Mock(get_zk_hosts=mock.Mock())), ) as ( mock_zk_client, mock_datetime, _, ): mock_datetime.now.return_value = current_time assert autoscaling_service_lib.mesos_cpu_metrics_provider( fake_marathon_service_config, fake_marathon_tasks, (fake_mesos_task,)) == 0.8 mock_zk_client.return_value.set.assert_has_calls([ mock.call('/autoscaling/fake-service/fake-instance/cpu_last_time', current_time.strftime('%s')), mock.call('/autoscaling/fake-service/fake-instance/cpu_data', '480.0:fake-service.fake-instance'), ], any_order=True)