62 lines
2.9 KiB
Python
62 lines
2.9 KiB
Python
from pathlib import Path
|
|
import json
|
|
import unittest
|
|
import logging
|
|
# from cocluto import ClusterController
|
|
from cocluto.SimpaDbUtil import SqliteDb
|
|
from cocluto.quman import QueueManager, init_db, MockGridEngine, QueuesStatus
|
|
|
|
|
|
class QumanTestCase(unittest.TestCase):
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
|
|
|
def setUp(self) -> None:
|
|
return super().setUp()
|
|
|
|
def test_quman(self):
|
|
logging.info('test_quman')
|
|
db_path = Path('./quman_test/quman.sqlite')
|
|
db_path.parent.mkdir(exist_ok=True)
|
|
if db_path.exists():
|
|
db_path.unlink()
|
|
db_backend = SqliteDb(db_path)
|
|
init_db(db_backend)
|
|
qs = QueuesStatus()
|
|
for node_id in range(40, 44):
|
|
qs.add_queue(f'main.q@alambix{node_id}', True)
|
|
qs.add_queue('gpuonly.q@alambix42', True)
|
|
grid_engine = MockGridEngine(qs)
|
|
grid_engine.disable_queue_machine('main.q@alambix42') # simulate that the queue is already disabled)
|
|
quman = QueueManager(db_backend, grid_engine)
|
|
print('queues state:')
|
|
grid_engine.queues_status.print()
|
|
print('disable requests:')
|
|
print(json.dumps(quman.get_state().as_dict(), indent=2))
|
|
print('synchronizing with grid engine...')
|
|
quman.synchronize_with_grid_engine()
|
|
print('queues state:')
|
|
grid_engine.queues_status.print()
|
|
print('disable requests:')
|
|
print(json.dumps(quman.get_state().as_dict(), indent=2))
|
|
quman.request_queue_machines_deactivation(['main.q@alambix42'], 'sysadmin.graffy', 'disabled to move the alambix42 to another rack')
|
|
with self.assertRaises(RuntimeError):
|
|
# attempting to disable the same queue again with the same disable tag should raise an assertion error (the tag is used to uniquely identify the disables on the machine)
|
|
quman.request_queue_machines_deactivation(['main.q@alambix42'], 'sysadmin.graffy', 'because I want to test quman')
|
|
quman.request_queue_machines_deactivation(['main.q@alambix42'], 'croconaus.maco-update', 'disabled to update maco')
|
|
quman.request_queue_machines_activation(['main.q@alambix42'], 'sysadmin.graffy', 'alambix42 has been moved to a new rack')
|
|
main_queue_machines = quman.get_queue_machines('main.q')
|
|
quman.request_queue_machines_deactivation(main_queue_machines, 'sysadmin.graffy.bug4242', 'disable all cluster to prepare complete shutdown')
|
|
main_queue_machines = quman.get_queue_machines('main.q')
|
|
quman.request_queue_machines_activation(main_queue_machines, 'sysadmin.graffy.bug4242', 'electricity is back, reactivating all cluster')
|
|
|
|
db_backend.dump(Path('./quman_test/quman_dump.sql'))
|
|
print('queues state:')
|
|
grid_engine.queues_status.print()
|
|
print('disable requests:')
|
|
print(json.dumps(quman.get_state().as_dict(), indent=2))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|