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_lib.MetricsProviderNoDataError): autoscaling_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_lib.MetricsProviderNoDataError): autoscaling_lib.mesos_cpu_metrics_provider(fake_marathon_service_config, fake_marathon_tasks, [])
def test_mesos_ram_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_lib.MetricsProviderNoDataError): autoscaling_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={ 'mem_rss_bytes': 0, 'mem_limit_bytes': 1000, '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_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_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_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_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(): 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={ 'mem_rss_bytes': 0, 'mem_limit_bytes': 1000, '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_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_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)