def open_connection(self): """ Internal function to open the connection to the database. Only after this function is called the database is accessable. """ if self._database is None: self._database = DatabaseAccess(self._configuration['sql_connection_string'], self._configuration['sql_table_name'])
def setUpClass(cls): """ Set up whole class for testing Returns: """ # we assume everything working on sqlite, should also work on postgres in sqlalchemy cls.database = DatabaseAccess("sqlite:///test_database.db", "simulation")
def switch_to_central_database(self): if self._use_local_database: self.close_connection() self._database = DatabaseAccess( self._configuration['sql_connection_string'], self._configuration['sql_table_name']) self._use_local_database = False else: print('Database is already in central mode!')
def open_connection(self): """ Internal function to open the connection to the database. Only after this function is called the database is accessable. """ if self._database is None and not self.database_is_disabled: self._database = DatabaseAccess( self._configuration["sql_connection_string"], self._configuration["sql_table_name"], )
def setUp(self): self.jobstatus = JobStatus() self.database = DatabaseAccess('sqlite:///test_job_status.db', 'simulation') par_dict = { 'chemicalformula': 'H', 'computer': 'localhost', 'hamilton': 'Test', 'hamversion': '0.1', 'job': 'testing', 'parentid': 0, 'project': 'database.testing', 'projectpath': '/TESTING', 'status': 'initialized', 'timestart': datetime(2016, 5, 2, 11, 31, 4, 253377), 'timestop': datetime(2016, 5, 2, 11, 31, 4, 371165), 'totalcputime': 0.117788, 'username': '******' } self.job_id = self.database.add_item_dict(par_dict) self.jobstatus_database = JobStatus(db=self.database, job_id=self.job_id)
def switch_to_central_database(self): """ Switch to central database """ if self._use_local_database and not self.database_is_disabled: self.close_connection() self._database = DatabaseAccess( self._configuration["sql_connection_string"], self._configuration["sql_table_name"], ) self._use_local_database = False else: print("Database is already in central mode or disabled!")
def switch_to_local_database(self, file_name='pyiron.db', cwd=None): if not self._use_local_database: if cwd is None and not os.path.isabs(file_name): file_name = os.path.join(os.path.abspath(os.path.curdir), file_name) elif cwd is not None: file_name = os.path.join(cwd, file_name) self.close_connection() self._database = DatabaseAccess( 'sqlite:///' + file_name, self._configuration['sql_table_name']) self._use_local_database = True else: print('Database is already in local mode!')
def switch_to_user_mode(self): """ Switch from viewer mode to user mode - if viewer_mode is enable pyiron has read only access to the database. """ if self._configuration['sql_view_connection_string'] is not None: if self._database.viewer_mode: self.close_connection() self._database = DatabaseAccess(self._configuration['sql_connection_string'], self._configuration['sql_table_name']) self._database.viewer_mode = True else: print('Database is already in user mode!') else: print('Viewer Mode is not available on this pyiron installation.')
def switch_to_user_mode(self): """ Switch from viewer mode to user mode - if viewer_mode is enable pyiron has read only access to the database. """ if self._configuration["sql_view_connection_string"] is not None and not self.database_is_disabled: if self._database.viewer_mode: self.close_connection() self._database = DatabaseAccess( self._configuration["sql_connection_string"], self._configuration["sql_table_name"], ) self._database.viewer_mode = True else: print("Database is already in user mode!") else: print("Viewer Mode is not available on this pyiron installation.")
def setUpClass(cls): cls.sub_status = SubmissionStatus() cls.database = DatabaseAccess('sqlite:///test_sub_status.db', 'simulation') par_dict = {'chemicalformula': 'H', 'computer': 'localhost#1#3', 'hamilton': 'Test', 'hamversion': '0.1', 'job': 'testing', 'parentid': 0, 'project': 'database.testing', 'projectpath': '/TESTING', 'status': 'suspended', 'timestart': datetime(2016, 5, 2, 11, 31, 4, 253377), 'timestop': datetime(2016, 5, 2, 11, 31, 4, 371165), 'totalcputime': 0.117788, 'username': '******'} cls.job_id = cls.database.add_item_dict(par_dict) cls.sub_status_database = SubmissionStatus(db=cls.database, job_id=cls.job_id)
class TestSubmissionStatus(unittest.TestCase): def setUp(self): self.sub_status = SubmissionStatus() self.database = DatabaseAccess('sqlite:///test_sub_status.db', 'simulation') par_dict = { 'chemicalformula': 'H', 'computer': 'localhost#1#3', 'hamilton': 'Test', 'hamversion': '0.1', 'job': 'testing', 'parentid': 0, 'project': 'database.testing', 'projectpath': '/TESTING', 'status': 'suspended', 'timestart': datetime(2016, 5, 2, 11, 31, 4, 253377), 'timestop': datetime(2016, 5, 2, 11, 31, 4, 371165), 'totalcputime': 0.117788, 'username': '******' } self.job_id = self.database.add_item_dict(par_dict) self.sub_status_database = SubmissionStatus(db=self.database, job_id=self.job_id) def doCleanups(self): self.database.conn.close() os.remove('test_sub_status.db') def test_submit_next(self): before = self.sub_status.submitted_jobs self.sub_status.submit_next() self.assertEqual(before + 1, self.sub_status.submitted_jobs) before = self.sub_status_database.submitted_jobs self.sub_status_database.submit_next() self.assertEqual(before + 1, self.sub_status_database.submitted_jobs) def test_refresh(self): self.sub_status.submitted_jobs = 5 self.sub_status.refresh() self.assertEqual(5, self.sub_status.submitted_jobs) self.sub_status_database.submitted_jobs = 5 self.sub_status_database.refresh() self.assertEqual(5, self.sub_status_database.submitted_jobs)
def switch_to_local_database(self, file_name='pyiron.db', cwd=None): """ Swtich to an local SQLite based database. Args: file_name (str): SQLite database file name cwd (str/None): directory where the SQLite database file is located in """ if not self._use_local_database: if cwd is None and not os.path.isabs(file_name): file_name = os.path.join(os.path.abspath(os.path.curdir), file_name) elif cwd is not None: file_name = os.path.join(cwd, file_name) self.close_connection() self._database = DatabaseAccess('sqlite:///' + file_name, self._configuration['sql_table_name']) self._use_local_database = True else: print('Database is already in local mode!')
def setUpClass(cls): cls.sub_status = SubmissionStatus() cls.database = DatabaseAccess("sqlite:///test_sub_status.db", "simulation") par_dict = { "chemicalformula": "H", "computer": "localhost#1#3", "hamilton": "Test", "hamversion": "0.1", "job": "testing", "parentid": 0, "project": "database.testing", "projectpath": "/TESTING", "status": "suspended", "timestart": datetime(2016, 5, 2, 11, 31, 4, 253377), "timestop": datetime(2016, 5, 2, 11, 31, 4, 371165), "totalcputime": 0.117788, "username": "******", } cls.job_id = cls.database.add_item_dict(par_dict) cls.sub_status_database = SubmissionStatus(db=cls.database, job_id=cls.job_id)
class TestJobStatus(unittest.TestCase): def setUp(self): self.jobstatus = JobStatus() self.database = DatabaseAccess('sqlite:///test_job_status.db', 'simulation') par_dict = { 'chemicalformula': 'H', 'computer': 'localhost', 'hamilton': 'Test', 'hamversion': '0.1', 'job': 'testing', 'parentid': 0, 'project': 'database.testing', 'projectpath': '/TESTING', 'status': 'initialized', 'timestart': datetime(2016, 5, 2, 11, 31, 4, 253377), 'timestop': datetime(2016, 5, 2, 11, 31, 4, 371165), 'totalcputime': 0.117788, 'username': '******' } self.job_id = self.database.add_item_dict(par_dict) self.jobstatus_database = JobStatus(db=self.database, job_id=self.job_id) def doCleanups(self): self.database.conn.close() os.remove('test_job_status.db') def test_initialized(self): self.assertTrue(self.jobstatus.initialized) self.jobstatus.string = 'finished' self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertTrue(self.jobstatus.finished) self.jobstatus.initialized = True self.assertTrue(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_appended(self): self.jobstatus.appended = True self.assertFalse(self.jobstatus.initialized) self.assertTrue(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_created(self): self.jobstatus.created = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertTrue(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_submitted(self): self.jobstatus.submitted = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertTrue(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_running(self): self.jobstatus.running = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertTrue(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_aborted(self): self.jobstatus.aborted = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertTrue(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_collect(self): self.jobstatus.collect = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertTrue(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_suspended(self): self.jobstatus.suspended = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertTrue(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_refresh(self): self.jobstatus.refresh = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertTrue(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_busy(self): self.jobstatus.busy = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertTrue(self.jobstatus.busy) self.assertFalse(self.jobstatus.finished) def test_finished(self): self.jobstatus.finished = True self.assertFalse(self.jobstatus.initialized) self.assertFalse(self.jobstatus.appended) self.assertFalse(self.jobstatus.created) self.assertFalse(self.jobstatus.submitted) self.assertFalse(self.jobstatus.running) self.assertFalse(self.jobstatus.aborted) self.assertFalse(self.jobstatus.collect) self.assertFalse(self.jobstatus.suspended) self.assertFalse(self.jobstatus.refresh) self.assertFalse(self.jobstatus.busy) self.assertTrue(self.jobstatus.finished) def test_string(self): self.jobstatus.string = 'initialized' self.assertTrue(self.jobstatus.initialized) self.assertEqual(str(self.jobstatus), 'initialized') self.assertEqual(self.jobstatus.string, 'initialized') self.jobstatus.string = 'appended' self.assertTrue(self.jobstatus.appended) self.assertEqual(str(self.jobstatus), 'appended') self.assertEqual(self.jobstatus.string, 'appended') self.jobstatus.string = 'created' self.assertTrue(self.jobstatus.created) self.assertEqual(str(self.jobstatus), 'created') self.assertEqual(self.jobstatus.string, 'created') self.jobstatus.string = 'submitted' self.assertTrue(self.jobstatus.submitted) self.assertEqual(str(self.jobstatus), 'submitted') self.assertEqual(self.jobstatus.string, 'submitted') self.jobstatus.string = 'running' self.assertTrue(self.jobstatus.running) self.assertEqual(str(self.jobstatus), 'running') self.assertEqual(self.jobstatus.string, 'running') self.jobstatus.string = 'aborted' self.assertTrue(self.jobstatus.aborted) self.assertEqual(str(self.jobstatus), 'aborted') self.assertEqual(self.jobstatus.string, 'aborted') self.jobstatus.string = 'collect' self.assertTrue(self.jobstatus.collect) self.assertEqual(str(self.jobstatus), 'collect') self.assertEqual(self.jobstatus.string, 'collect') self.jobstatus.string = 'suspended' self.assertTrue(self.jobstatus.suspended) self.assertEqual(str(self.jobstatus), 'suspended') self.assertEqual(self.jobstatus.string, 'suspended') self.jobstatus.string = 'refresh' self.assertTrue(self.jobstatus.refresh) self.assertEqual(str(self.jobstatus), 'refresh') self.assertEqual(self.jobstatus.string, 'refresh') self.jobstatus.string = 'busy' self.assertTrue(self.jobstatus.busy) self.assertEqual(str(self.jobstatus), 'busy') self.assertEqual(self.jobstatus.string, 'busy') self.jobstatus.string = 'finished' self.assertTrue(self.jobstatus.finished) self.assertEqual(str(self.jobstatus), 'finished') self.assertEqual(self.jobstatus.string, 'finished') def test_database_connection(self): current_status = self.database.get_item_by_id(self.job_id)["status"] self.assertTrue(self.jobstatus_database.initialized) self.assertEqual(current_status, str(self.jobstatus_database)) self.jobstatus_database.created = True new_status = self.database.get_item_by_id(self.job_id)["status"] self.assertTrue(self.jobstatus_database.created) self.assertNotEqual(current_status, str(self.jobstatus_database)) self.assertEqual(new_status, str(self.jobstatus_database)) self.database.item_update({'status': 'finished'}, self.job_id) finished_status = self.database.get_item_by_id(self.job_id)["status"] self.assertTrue(self.jobstatus_database.finished) self.assertNotEqual(current_status, str(self.jobstatus_database)) self.assertNotEqual(new_status, str(self.jobstatus_database)) self.assertEqual(finished_status, str(self.jobstatus_database))