def test_wq_clear(self): workers = datastores.BaseDocument() workers["valid1"] = {"time": time.time() + 2} workers["invalid1"] = {"time": time.time() - 2} workers["invalid2"] = {"time": time.time() - 3} self.assertEqual(len(workers), 3) workers.clear() self.assertEqual(len(workers), 0)
def setUp(self): super().setUp() self.args = tests.FakeArgs() with patch("directord.plugin_import", autospec=True): self.server = server.Server(args=self.args) self.server.workers = datastores.BaseDocument() self.server.return_jobs = datastores.BaseDocument() self.server.driver = self.mock_driver self.job_item = { "job_id": "XXX", "job_sha3_224": "YYY", "parent_id": "ZZZ", "verb": "TEST", } self.server.create_return_jobs(task="XXX", job_item=self.job_item, targets=["test-node"])
def test_wq_prune_valid(self): workers = datastores.BaseDocument() workers["valid1"] = {"time": time.time() + 2} workers["invalid1"] = {"time": time.time() - 2} workers["invalid2"] = {"time": time.time() - 3} workers.prune() self.assertEqual(len(workers), 1) self.assertIn("valid1", workers)
def test_create_return_jobs_exists(self): self.server.return_jobs = datastores.BaseDocument() self.server.return_jobs["XXX"] = {"exists": True} status = self.server.create_return_jobs( task="XXX", job_item=self.job_item, targets=[b"test-node1", b"test-node2"], ) self.assertDictEqual( status, {"exists": True}, )
def test_create_return_jobs_named(self): self.maxDiff = 1024 self.server.return_jobs = datastores.BaseDocument() job_item = self.job_item.copy() job_item["parent_name"] = "test parent name" job_item["job_name"] = "test job name" status = self.server.create_return_jobs( task="XXX", job_item=job_item, targets=["test-node1", "test-node2"], ) self.assertDictEqual( status.__dict__, { "_createtime": ANY, "_executiontime": { "test-node1": 0, "test-node2": 0 }, "_lasttime": ANY, "_processing": { "test-node1": "\x00", "test-node2": "\x00" }, "_roundtripltime": { "test-node1": 0, "test-node2": 0 }, "job_id": "XXX", "JOB_DEFINITION": ANY, "JOB_SHA3_224": "YYY", "JOB_NAME": "test job name", "PARENT_JOB_ID": "ZZZ", "PARENT_JOB_NAME": "test parent name", "VERB": "TEST", "COMPONENT_TIMESTAMP": None, "INFO": { "test-node1": None, "test-node2": None }, "PROCESSING": None, "RETURN_TIMESTAMP": None, "STDERR": { "test-node1": None, "test-node2": None }, "STDOUT": { "test-node1": None, "test-node2": None }, }, )
def test_run_socket_server_manage_purge_jobs(self, mock_socket, mock_unlink, mock_chmod, mock_chown): socket = mock_socket.return_value = MagicMock() conn = MagicMock() conn.recv.return_value = json.dumps({ "manage": { "purge_jobs": None } }).encode() conn.sendall = MagicMock() socket.accept.return_value = [conn, MagicMock()] return_jobs = self.server.return_jobs = datastores.BaseDocument() return_jobs["k"] = {"v": "test"} self.server.run_socket_server() mock_unlink.assert_called_with(self.args.socket_path) self.assertDictEqual(self.server.return_jobs, {}) conn.sendall.assert_called_with(b'{"success": true}') mock_chmod.assert_called() mock_chown.assert_called()
def test_run_socket_server_manage_purge_nodes(self, mock_socket, mock_unlink, mock_chmod, mock_chown): socket = mock_socket.return_value = MagicMock() conn = MagicMock() conn.recv.return_value = json.dumps({ "manage": { "purge_nodes": None } }).encode() conn.sendall = MagicMock() socket.accept.return_value = [conn, MagicMock()] self.server.workers = datastores.BaseDocument() for i in ["test-node1", "test-node2"]: w = models.Worker(identity=i) w.version = "x.x.x" w.expire_time = 0 self.server.workers[w.identity] = w self.server.run_socket_server() mock_unlink.assert_called_with(self.args.socket_path) self.assertDictEqual(self.server.workers, {}) conn.sendall.assert_called_with(b'{"success": true}') mock_chmod.assert_called() mock_chown.assert_called()
def test_wq_prune_0(self): workers = datastores.BaseDocument() workers["test"] = 1 workers.clear() self.assertDictEqual(workers, dict())