def setUpClass(cls): cls.client = client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) cls.text = 'test python log entry with attachment ' + datetime.now().isoformat(' ') cls.testAttachment = Attachment(open('debug.log', 'rb')) cls.testLogbook = Logbook(name='testLogbook', owner='testOwner') cls.client.createLogbook(cls.testLogbook); cls.testTag = Tag(name='testTag') cls.client.createTag(cls.testTag) cls.testProperty = Property(name='testLogProperty', attributes={'id':'testSearchId', 'url':'www.bnl.gov'}) cls.client.createProperty(cls.testProperty) cls.t1 = str(time.time()).split('.')[0] client.log(LogEntry(text=cls.text, owner='testOwner', logbooks=[cls.testLogbook], tags=[cls.testTag], attachments=[cls.testAttachment], properties=[cls.testProperty])) cls.t2 = str(time.time()).split('.')[0] client.log(LogEntry(text=cls.text + ' - entry2', owner='testOwner', logbooks=[cls.testLogbook])) cls.t3 = str(time.time()).split('.')[0] cls.testLogEntry1 = client.find(search=cls.text)[0] cls.testLogEntry2 = client.find(search=cls.text + ' - entry2')[0] pass
def testCmp(self): tags = [ Tag(name='Timing'), Tag(name='Magnets') ] logbooks = [ Logbook(name='experiment', owner='controls') ] logEntry1 = LogEntry(text='Turning on LINAC', owner='controls', logbooks=logbooks, tags=tags, id=1234) logEntry2 = LogEntry(text='Turning on LINAC', owner='controls', logbooks=logbooks, tags=tags, id=1234) self.assertEqual(logEntry1, logEntry2, 'Failed LogEntry equality') self.assertIn(logEntry1, [logEntry2])
def createTextEntryMultipleLogbooks(): logs = client.listLogbooks() print('Creating a text entry in all logbooks') text = 'This is a demo python log entry created on ' + datetime.now( ).isoformat(' ') testLog = LogEntry(text=text, owner='owner', logbooks=logs) client.log(logEntry=testLog)
def testCreateEntryWithMultipleAttributes(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) text = 'test python log entry with multiple attributes ' + datetime.now().isoformat(' ') testImageAttachment = Attachment(open('Desert.jpg', 'rb')) testTextAttachment = Attachment(open('debug.log', 'rb')) logbooks = client.listLogbooks() tags = client.listTags() properties = client.listProperties() # for property in properties: # for attribute in property.getAttributeNames(): # property.Attributes[attribute] = 'testValue'+attribute testLog = LogEntry(text=text, owner='testOwner', logbooks=logbooks, tags=tags, # properties=properties, attachments=[testImageAttachment, testTextAttachment] ) client.log(testLog) logEntries = client.find(search=text) self.assertEqual(len(logEntries), 1, 'Failed to create log entry with multiple attributes') logEntry = logEntries[0] self.assertListEqual(logbooks, logEntry.getLogbooks(), 'Failed to create log entry with all the logbooks') self.assertListEqual(tags, logEntry.getTags(), 'Failed to create log entry with all the tags') # self.assertListEqual(properties, logEntry.getProperties(), 'Failed to create log Entry with all the properties') client.delete(logEntryId=logEntry.getId()) self.assertEqual(len(client.find(search=text)), 0, 'Failed to cleanup log entry with attachment')
def update_olog_id(logid, text, attachments): '''Update olog book logid entry with text and attachments files logid: integer, the log entry id text: the text to update, will add this text to the old text attachments: add new attachment files An example: filename1 = '/XF11ID/analysis/2016_2/yuzhang/Results/August/af8f66/Report_uid=af8f66.pdf' atch=[ Attachment(open(filename1, 'rb')) ] update_olog_id( logid=29327, text='add_test_atch', attachmenents= atch ) ''' url = 'https://logbook.nsls2.bnl.gov/Olog-11-ID/Olog' olog_client = SimpleOlogClient(url=url, username='******', password='******') client = OlogClient(url='https://logbook.nsls2.bnl.gov/Olog-11-ID/Olog', username='******', password='******') old_text = olog_client.find(id=logid)[0]['text'] upd = LogEntry( text=old_text + '\n' + text, attachments=attachments, logbooks=[Logbook(name='Operations', owner=None, active=True)]) upL = client.updateLog(logid, upd) print( 'The url=%s was successfully updated with %s and with the attachments' % (url, text))
def testCreateBasicEntry(self): client = OlogClient(url='https://localhost:8181/Olog', username='******', password='******') testLogbook = Logbook(name='testLogbook', owner='testOwner') client.createLogbook(testLogbook) text = 'test python log entry ' + datetime.now().isoformat(' ') testLog = LogEntry(text=text, owner='testOwner', logbooks=[testLogbook]) client.log(logEntry=testLog) logEntries = client.find(search=testLog.getText()) self.assertTrue(len(logEntries) == 1, 'Failed to create test log entry') client.delete(logEntryId=logEntries[0].getId()) self.assertTrue(len(client.find(search=testLog.getText())) == 0, 'Failed to delete test log entry') client.delete(logbookName='testLogbook') self.assertTrue(testLogbook not in client.listLogbooks(), 'failed to cleanup the testLogbook') pass
def updateLogEntry(): lb = Logbook(name='CODAC') print('Creating a log entry which will be updated in logbook ' + lb.getName()) text = 'This is a demo python log entry which will be updated, created on ' + datetime.now( ).isoformat(' ') testLog = LogEntry(text=text, owner='owner', logbooks=[lb]) log = client.log(logEntry=testLog) textupdate = '<br>And this is update text to python log entry ' + datetime.now( ).isoformat(' ') updatedLogEntry = LogEntry(text=text + textupdate, owner='owner', logbooks=[lb]) updatedLog = client.update(log.getId(), updatedLogEntry) logEntries = client.find(search=text)
def testCreateBasicEntry(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) testLogbook = Logbook(name='testLogbook', owner='testOwner') client.createLogbook(testLogbook) text = 'test python log entry ' + datetime.now().isoformat(' ') testLog = LogEntry(text=text, owner='testOwner', logbooks=[testLogbook]) client.log(logEntry=testLog) logEntries = client.find(search=testLog.getText()) self.assertTrue(len(logEntries) == 1, 'Failed to create test log entry') client.delete(logEntryId=logEntries[0].getId()) self.assertTrue(len(client.find(search=testLog.getText())) == 0, 'Failed to delete test log entry') client.delete(logbookName='testLogbook') self.assertTrue(testLogbook not in client.listLogbooks(), 'failed to cleanup the testLogbook') pass
def testUpdate(self): text = 'test python log entry ' + datetime.now().isoformat(' ') testLog = LogEntry(text=text, owner='testOwner', logbooks=[self.testLogbook]) logId = self.client.log(log_entry=testLog) text = 'test update python log entry ' + datetime.now().isoformat(' ') updatedLogEntry = LogEntry(text=text, owner='testOwner', logbooks=[self.testLogbook]) updatedLog = self.client.updateLog(logId, updatedLogEntry) logEntries = self.client.find(search=text) self.assertTrue(len(logEntries) == 1, 'Failed to update log Entry with Tag') self.client.delete(logEntryId=logId)
def testCreateEntryWithAttachments(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) testLogbook = Logbook(name='testLogbook', owner='testOwner') client.createLogbook(testLogbook); text = 'test python log entry with attachments ' + datetime.now().isoformat(' ') testImageAttachment = Attachment(open('Desert.jpg', 'rb')) testTextAttachment = Attachment(open('debug.log', 'rb')) testLog = LogEntry(text=text, owner='testOwner', logbooks=[testLogbook], attachments=[testImageAttachment, testTextAttachment] ) client.log(testLog) logEntries = client.find(search=text) self.assertEqual(len(logEntries), 1, 'Failed to create log entry with attachment') attachments = client.listAttachments(logEntryId=logEntries[0].getId()) self.assertEqual(len(attachments), 2, 'Failed to create log entry with attachment'); for attachment in attachments: if attachment.getFile().name.endswith('.log'): print attachment.getFile().readline() print attachment.getFile().fileno(), open('debug.log', 'rb').fileno() client.delete(logEntryId=logEntries[0].getId()) self.assertEqual(len(client.find(search=text)), 0, 'Failed to cleanup log entry with attachment') client.delete(logbookName=testLogbook.getName()) self.assertTrue(testLogbook not in client.listLogbooks(), 'failed to cleanup the testLogbook') pass
def createTextEntry(): lb = Logbook(name='CODAC') print('Creating a text entry in the logbook ' + lb.getName()) text = 'This is a demo python log entry created on ' + datetime.now( ).isoformat(' ') '''owner doesn't play any role here but it is required''' testLog = LogEntry(text=text, owner='owner', logbooks=[lb]) client.log(logEntry=testLog)
def createEntryWithTags(): lb = Logbook(name='CODAC') tags = client.listTags() print('Creating a text entry with a tag ' + tags[0].getName() + ' in the logbook ' + lb.getName()) text = 'This is a demo python log entry created on ' + datetime.now( ).isoformat(' ') testLog = LogEntry(text=text, owner='owner', logbooks=[lb], tags=[tags[0]]) client.log(logEntry=testLog)
def testCreateEntryWithTag(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) testLogbook = Logbook(name='testLogbook', owner='testOwner') client.createLogbook(testLogbook); testTag = Tag(name='testTag') client.createTag(testTag) text = 'test python log entry with tag ' + datetime.now().isoformat(' ') testLog = LogEntry(text=text, owner='testOwner', logbooks=[testLogbook], tags=[testTag]) client.log(testLog) logEntries = client.find(search=testLog.getText()) self.assertTrue(len(logEntries) == 1, 'Failed to create log Entry with Tag') self.assertTrue(testTag in logEntries[0].getTags(), 'testTag not attached to the testLogEntry1') '''cleanup''' client.delete(logEntryId=logEntries[0].getId()) self.assertTrue(len(client.find(search=testLog.getText())) == 0, 'Failed to delete log Entry with Tag') client.delete(logbookName=testLogbook.getName()) self.assertTrue(testLogbook not in client.listLogbooks(), 'failed to cleanup the testLogbook') client.delete(tagName=testTag.getName()) self.assertTrue(testTag not in client.listTags(), 'failed to cleanup the testTag') pass
def createEntryWithAttachment(): lb = Logbook(name='CODAC') print('Creating a text entry with an attached image in the logbook ' + lb.getName()) text = 'This is a demo python log entry wtih image attachment created on ' + datetime.now( ).isoformat(' ') pp = os.path.dirname(os.path.abspath(__file__)) path = os.path.relpath('Desert.png', pp) image = Attachment(open(path, 'rb')) testLog = LogEntry(text=text, owner='owner', logbooks=[lb], attachments=[image]) client.log(logEntry=testLog)
def testProcess(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) property = Property(name='Process', attributes={'processType':'diffCalc', 'processId':'1234', 'processAttchments':'debug.log'}) client.createProperty(property) # load Data client.log(LogEntry(text='Initial setup', owner='experimenter', logbooks=[self.testLogbook], properties=[property], attachments=[Attachment(open('debug.log', 'rb'))] )) # run scan property = Property(name='Process', attributes={'processType':'diffCalc.process', 'processId':'1234', 'processAttchments':'.log'}) client.log(LogEntry(text='Initial setup', owner='experimenter', logbooks=[self.testLogbook], properties=[property] ))
def testCreateLog(self): ''' ''' tags = [ Tag(name='Timing'), Tag(name='Magnets') ] logbooks = [ Logbook(name='experiment', owner='controls') ] logEntry = LogEntry(text='Turning on LINAC', owner='controls', logbooks=logbooks, tags=tags) self.assertEqual(logEntry.getText(), 'Turning on LINAC', 'msg') self.assertEqual(logEntry.getOwner(), 'controls', 'msg') self.assertEqual(logEntry.getTags(), tags, 'msg') # self.assertTrue(logEntry.hasTag('Timing'), 'msg') self.assertEqual(logEntry.getLogbooks(), logbooks, 'msg') # self.assertTrue(logEntry.hasLogbook('experiment'), 'msg') pass
def testCreateEntryWithProperties(self): client = OlogClient(url=getDefaultTestConfig('url'), username=getDefaultTestConfig('username'), password=getDefaultTestConfig('password')) testLogbook = Logbook(name='testLogbook', owner='testOwner') client.createLogbook(testLogbook); testProperty = Property(name='testLogProperty', attributes={'id':None, 'url':None}) # client.createProperty(testProperty) text = 'test python log entry with attachment ' + datetime.now().isoformat(' ') property = Property(name='testLogProperty', attributes={'id':'prop1234', 'url':'www.bnl.gov'}) testLog = LogEntry(text=text, owner='testOwner', logbooks=[testLogbook], properties=[property] ) client.log(testLog) logEntries = client.find(search=text) self.assertEqual(len(logEntries), 1, 'Failed to create log entry with property') properties = logEntries[0].getProperties() self.assertIn(property, properties, 'TestLogEntry does not contain property ' + property.getName()) '''Cleanup''' client.delete(logEntryId=logEntries[0].getId()) self.assertEqual(len(client.find(search=text)), 0, 'Failed to cleanup log entry with property') client.delete(logbookName=testLogbook.getName()) self.assertTrue(testLogbook not in client.listLogbooks(), 'failed to cleanup the ' + testLogbook.getName()) pass