def test_stop(self, mock_session, mock_pymongo, mock_util): test_mongo_client = mock.Mock() mock_pymongo.MongoClient = test_mongo_client controller = queue.QueueController(args=self.args) controller.stop() controller.session.scheduler.stop.assert_called_once_with() controller.client.close.assert_called_once_with()
def test_start(self, mock_session, mock_pymongo, mock_util): controller = queue.QueueController(args=self.args) controller.start() controller.session.scheduler.start_maintenance.assert_called_once_with( ) controller.session.scheduler.start.assert_called_once_with() self.assertTrue( controller.client.queue.submissions.create_index.called) self.assertTrue(controller.client.queue.tasks.create_index.called)
def setUpModule(mock_pymongo, mock_util): # for testing web-service functionality only we mock session, util in controller mock_pymongo.MongoClient = mock.Mock() mock_util.readwriteDirectory.return_value = "/None" mock_util.readonlyDirectory.return_value = "/None" with mock.patch.object(queue.QueueController, "_create_session", return_value=test_session): controller = queue.QueueController(args={}) cherrypy.tree.mount(controller, "/", queue.getConf()) cherrypy.engine.start()
def test_validate(self, mock_session, mock_pymongo, mock_util): controller = queue.QueueController(args=self.args) mock_util.URI.side_effect = ValueError() mock_util.readwriteDirectory.side_effect = ValueError() mock_util.readonlyDirectory.side_effect = ValueError() # test for all validations in controller with self.assertRaises(StandardError): controller._validate_mongodb_url("abc") with self.assertRaises(StandardError): controller._validate_working_dir("abc") with self.assertRaises(StandardError): controller._validate_service_dir("abc")
def test_get_status_dict(self, mock_session, mock_pymongo, mock_util): controller = queue.QueueController(args=self.args) metrics = controller.get_status_dict() self.assertEqual(metrics["code"], "TEST") self.assertEqual(metrics["url"], { "href": "http://local:8080", "alias": "link" }) self.assertEqual(metrics["status"], const.SYSTEM_BUSY) self.assertEqual(metrics["scheduler"]["executor_class"], "SparkStandaloneExecutor") self.assertEqual(metrics["scheduler"]["num_executors"], 5) self.assertEqual(metrics["scheduler"]["metrics"], {"a": 1, "b": 2}) self.assertTrue("ex1" in metrics["scheduler"]["is_alive_statuses"]) self.assertTrue("ex2" in metrics["scheduler"]["is_alive_statuses"]) self.assertTrue("storage_url" in metrics)
def test_create_session(self, mock_session, mock_pymongo, mock_util): controller = queue.QueueController(args=self.args) with self.assertRaises(AttributeError): controller._create_session(None) with self.assertRaises(AttributeError): controller._create_session({"a": 1}) conf = queue.QueueConf() with self.assertRaises(StandardError): controller._create_session(conf) # check spark session conf.setAllConf(self.args) session = controller._create_session(conf) self.assertTrue(isinstance(session, spark.SparkSession)) # check simple session conf = queue.QueueConf() conf.setConf(const.OPT_SYSTEM_CODE, simple.SIMPLE_SYSTEM_CODE) conf.setConf(const.OPT_SCHEDULER_TIMEOUT, 1.0) conf.setConf(const.OPT_NUM_PARALLEL_TASKS, 1) session = controller._create_session(conf) self.assertTrue(isinstance(session, simple.SimpleSession))
def test_pretty_name(self, mock_session, mock_pymongo, mock_util): controller = queue.QueueController(args=self.args) self.assertEqual(controller._pretty_name(controller), "QueueController") self.assertEqual(controller._pretty_name(queue.QueueController), "QueueController")