def test_init_lrms_empty(self): lrms = mesos.lrms() assert lrms._server_ip == 'mesosserverpublic' assert lrms._nodes == '/usr/bin/curl -L -X GET http://mesosserverpublic:5050/master/slaves' assert lrms._state == '/usr/bin/curl -L -X GET http://mesosserverpublic:5050/master/state.json' assert lrms._jobs == '/usr/bin/curl -L -X GET http://mesosserverpublic:5050/master/tasks.json' assert lrms._marathon == '/usr/bin/curl -L -X GET http://mesosserverpublic:8080/v2/apps?embed=tasks' assert lrms._chronos == '/usr/bin/curl -L -X GET http://mesosserverpublic:4400/scheduler/jobs' assert lrms._chronos_state == '/usr/bin/curl -L -X GET http://mesosserverpublic:4400/scheduler/graph/csv' assert lrms.get_id() == 'MESOS_mesosserverpublic'
def test_init_lrms(self): lrms = mesos.lrms('test_ip', 'nodes', 'state', 'jobs', 'marathon', 'chronos', 'chronos_state') assert lrms._server_ip == 'test_ip' assert lrms._nodes == 'nodes' assert lrms._state == 'state' assert lrms._jobs == 'jobs' assert lrms._marathon == 'marathon' assert lrms._chronos == 'chronos' assert lrms._chronos_state == 'chronos_state' assert lrms.get_id() == 'MESOS_test_ip'
def test_get_jobinfolist(self, _obtain_mesos_state, _obtain_mesos_nodes, _obtain_marathon_jobs, _obtain_mesos_jobs, _obtain_chronos_jobs, _obtain_chronos_job_state): _obtain_mesos_state.return_value = read_file_as_json("test-files/mesos-state.json") _obtain_mesos_nodes.return_value = read_file_as_json("test-files/mesos-master-slaves.json") _obtain_marathon_jobs.return_value = read_file_as_json("test-files/marathon-jobs.json") _obtain_mesos_jobs.return_value = read_file_as_json("test-files/mesos-master-tasks.json") _obtain_chronos_jobs.return_value = read_file_as_json("test-files/chronos-jobs.json") _obtain_chronos_job_state.return_value = Request.ATTENDED job_info_list = mesos.lrms(MagicMock(mesos.lrms)).get_jobinfolist() assert len(job_info_list) == 4
def test_get_nodeinfolist(self, open_file, _obtain_mesos_nodes, _obtain_mesos_jobs): open_file.return_value = read_file("test-files/mesos_vnodes.info") _obtain_mesos_nodes.return_value = read_file_as_json("test-files/mesos-master-slaves.json") _obtain_mesos_jobs.return_value = read_file_as_json("test-files/mesos-master-tasks.json") nodeinfolist = mesos.lrms(MagicMock(mesos.lrms)).get_nodeinfolist() if nodeinfolist: result = '[NODE "10.0.0.84"] state: used, 0/1 (free slots), 116391936/653262848 (mem)' assert str(nodeinfolist['10.0.0.84']) == result result = '[NODE "vnode2"] state: off, 1/1 (free slots), 1572864000/1572864000 (mem)' assert str(nodeinfolist['vnode2']) == result
def test_get_marathon_jobinfolist(self, _obtain_marathon_jobs): # Create patched output return values _obtain_marathon_jobs.return_value = read_file_as_json("test-files/marathon-jobs.json") job_created = mesos.lrms(MagicMock(mesos.lrms))._get_marathon_jobinfolist()[0] assert job_created.state == Request.ATTENDED assert job_created.job_id == '/babbo' assert job_created.job_nodes_ids == [u'vnode1'] assert job_created.resources.taskcount == 1 assert job_created.resources.maxtaskspernode == 1 assert job_created.resources.resources.slots == 1.0 assert job_created.resources.resources.memory == 16777216 assert job_created.resources.resources.requests == ['"default" in queues']
def test_get_chronos_jobinfolist(self, _obtain_chronos_jobs, _obtain_mesos_jobs, _obtain_mesos_nodes, _obtain_chronos_job_state): # Create patched output return values _obtain_chronos_jobs.return_value = read_file_as_json("test-files/chronos-jobs.json") _obtain_mesos_jobs.return_value = read_file_as_json("test-files/mesos-master-tasks.json") _obtain_mesos_nodes.return_value = read_file_as_json("test-files/mesos-master-slaves.json") _obtain_chronos_job_state.return_value = Request.ATTENDED job_created = mesos.lrms(MagicMock(mesos.lrms))._get_chronos_jobinfolist()[0] # Check the resources and jobs created assert job_created.state == Request.ATTENDED assert job_created.job_id == 'dockerjob' assert job_created.job_nodes_ids == [u'10.0.0.84', u'10.0.0.84', u'10.0.0.84'] assert job_created.resources.taskcount == 1 assert job_created.resources.maxtaskspernode == 1 assert job_created.resources.resources.slots == 0.5 assert job_created.resources.resources.memory == 268435456 assert job_created.resources.resources.requests == ['"default" in queues']
def test_obtain_cpu_mem_used(self, mock_obtain_mesos_jobs): mesos_tasks = read_file_as_json("test-files/mesos-master-tasks.json") mock_obtain_mesos_jobs.return_value = mesos_tasks assert mesos.lrms(MagicMock(mesos.lrms))._obtain_cpu_mem_used_in_mesos_node( "20150925-075030-1063856798-5050-3482-S0") == (0.5, 536870912)
def test_obtain_used_nodes(self, mock_obtain_mesos_jobs): mock_obtain_mesos_jobs.return_value = read_file_as_json("test-files/mesos-master-tasks.json") assert mesos.lrms(MagicMock(mesos.lrms))._obtain_mesos_used_nodes() == [ '20150925-075030-1063856798-5050-3482-S0']
def test_obtain_mesos_state(self, mock_curl_command): mock_curl_command.return_value = read_file_as_json("test-files/mesos-state.json") mesos.lrms(MagicMock(mesos.lrms))._obtain_mesos_state() command = mock_curl_command.call_args[0][0] assert command == '/usr/bin/curl -L -X GET http://mesosserverpublic:5050/master/state.json'
def test_obtain_marathon_jobs(self, curl_command): curl_command.return_value = "test_output" assert mesos.lrms(MagicMock(mesos.lrms))._obtain_marathon_jobs() == "test_output"
def test_obtain_chronos_job_state_pending(self, mock_curl_command): mock_curl_command.return_value = read_file_as_string("test-files/chronos-state.json") assert mesos.lrms(MagicMock(mesos.lrms))._obtain_chronos_job_state('SAMPLE_JOB1') == Request.PENDING
def test_obtain_chronos_job_state_attended(self, mock_curl_command): mock_curl_command.return_value = read_file_as_string("test-files/chronos-state.json") assert mesos.lrms(MagicMock(mesos.lrms))._obtain_chronos_job_state('Infinite') == Request.ATTENDED
def test_obtain_chronos_jobs(self, mock_curl_command): mock_curl_command.return_value = "test_output" assert mesos.lrms(MagicMock(mesos.lrms))._obtain_chronos_jobs() == "test_output"
def test_obtain_chronosjob_node(self, _obtain_mesos_jobs, _obtain_mesos_nodes): _obtain_mesos_jobs.return_value = read_file_as_json("test-files/mesos-master-tasks.json") _obtain_mesos_nodes.return_value = read_file_as_json("test-files/mesos-master-slaves.json") assert mesos.lrms(MagicMock(mesos.lrms))._obtain_chronos_jobs_nodes( 'dockerjob') == [u'10.0.0.84', u'10.0.0.84', u'10.0.0.84']