Newer
Older
#!/usr/bin/python
import os
import shutil
import settings
import systemtest.testcase
import systemtest.util as util
from systemtest.testcase import TEST_DATA
class TestCase(systemtest.testcase.TestCase):
def execute(self):
self.installOpenbis('openbis1')
self.cloneOpenbisInstance('openbis1', 'openbis2', dataStoreServerOnly=True)
openbis1 = self.createOpenbisController('openbis1')
openbis1.setDummyAuthentication()
openbis1.setDataStoreServerUsername('etlserver1')
openbis1.createTestDatabase('openbis')
openbis2 = self.createOpenbisController('openbis2')
openbis2.setDataStoreServerCode('DSS2')
openbis2.setDataStoreServerPort('8445')
openbis2.setDataStoreServerUsername('etlserver2')
openbis1.allUp()
openbis2.dssUp()
datamover1 = self.installDatamover("datamover1")
datamover1.setPrefixForIncoming('microX_200801011213_')
datamover1.setTreatIncomingAsRemote(True)
datamover1.setOutgoingTarget('../openbis1/data/incoming-raw')
datamover1.setExtraCopyDir('data/extra_local_copy')
datamover2 = self.installDatamover("datamover2")
datamover2.setOutgoingTarget('../openbis1/data/incoming-analysis')
felmer
committed
os.makedirs("%s/data/drop-box1" % openbis2.installPath)
os.makedirs("%s/data/drop-box2" % openbis2.installPath)
dummyImageAnalyser = self.installScriptBasedServer('dummy-img-analyser', 'dummy-img-analyser')
datamover1.start()
datamover2.start()
dummyImageAnalyser.start()
datamover1.drop("3VCP1")
felmer
committed
openbis1.waitUntilDataSetRegistrationFinished(2)
datamover1.drop("3VCP1")
felmer
committed
openbis1.waitUntilDataSetRegistrationFailed()
datamover1.drop("3VCP3")
felmer
committed
openbis1.waitUntilDataSetRegistrationFinished(3)
datamover1.drop("UnknownPlate")
felmer
committed
openbis1.waitUntilDataSetRegistrationFailed()
felmer
committed
with open("%s/data/incoming/nemo.exp1_MICROX-3VCP1.MICROX-3VCP3.txt" % openbis2.installPath, "w") as f:
f.write("hello world")
openbis2.waitUntilDataSetRegistrationFinished()
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
datamover1.assertEmptyFolder('data/incoming')
datamover1.assertEmptyFolder('data/extra_local_copy')
datamover2.assertEmptyFolder('data/incoming')
openbis1.assertFiles('data/incoming-raw',
['.MARKER_is_finished_microX_200801011213_3VCP1', '.faulty_paths',
'microX_200801011213_3VCP1'])
openbis1.assertEmptyFolder('data/incoming-analysis')
openbis2.assertEmptyFolder('data/incoming')
dataCompletedLog = util.getContent("%s/data-completed-info.txt" % datamover1.installPath)
self.assertEquals("data completion log",
['Data complete: /data/incoming/3VCP1', 'Data complete: /data/incoming/3VCP1',
'Data complete: /data/incoming/3VCP3', 'Data complete: /data/incoming/UnknownPlate'],
[l.replace(datamover1.installPath, '') for l in dataCompletedLog])
dataSets = openbis1.getDataSets()
openbis1.assertNumberOfDataSets(5, dataSets)
openbis2.assertNumberOfDataSets(1, dataSets)
self.assertEquals("Experiments", ['EXP1'] * 6, [d.experimentCode for d in dataSets])
self.assertEquals("Producers", ['microX'] * 2, [d.producer for d in dataSets if d.code.startswith('MIC')])
self.assertEquals("Production timestamp", ['2008-01-01 12:13:00+01'] * 2,
[d.productionTimeStamp for d in dataSets if d.code.startswith('MIC')])
dataSet1 = self.getDataSetByCode(dataSets, 'MICROX-3VCP1')
openbis1.assertDataSetContent("%s/%s" % (TEST_DATA, '3VCP1'), dataSet1)
dataSet2 = self.getDataSetByCode(dataSets, 'MICROX-3VCP3')
openbis1.assertDataSetContent("%s/%s" % (TEST_DATA, '3VCP3'), dataSet2)
child = dataSet1.children[0]
self.assertEquals("data set type", 'HCS_IMAGE', child.type)
self.assertEquals("child of %s" % dataSet2.code, child, dataSet2.children[0])
count = 0
for dataSet in dataSets:
if dataSet.type != 'HCS_IMAGE_ANALYSIS_DATA':
continue
count += 1
path = "%s/data/store/1/%s/original" % (openbis1.installPath, dataSet.location)
code = os.listdir(path)[0].split('_')[-1]
openbis1.assertDataSetContent("%s/%s" % (TEST_DATA, code), dataSet)
self.assertEquals("number of analysis data sets", 3, count)
self.assertUnidentified(openbis1, 'HCS_IMAGE')
self.assertUnidentified(openbis1, 'HCS_IMAGE_ANALYSIS_DATA')
content = util.getContent("%s/data/store/1/%s/original/nemo.exp1_MICROX-3VCP1.MICROX-3VCP3.txt"
% (openbis2.installPath, dataSets[-1].location))
self.assertEquals("parent data set content", ['hello world'], content)
self.assertDropBoxDrop(openbis2, 'drop-box1')
self.assertDropBoxDrop(openbis2, 'drop-box2')
def assertDropBoxDrop(self, openbisController, dropbox):
path = "%s/data/%s" % (openbisController.installPath, dropbox)
content = util.getContent("%s/%s" % (path, os.listdir(path)[0]))
self.assertEquals("Content of %s" % dropbox, ['hello world'], content)
def assertUnidentified(self, openbisController, type):
path = "%s/data/store/1/unidentified/DataSetType_%s" % (openbisController.installPath, type)
n = util.getNumberOfDifferences("%s/UnknownPlate" % TEST_DATA, "%s/%s" % (path, os.listdir(path)[0]))
if n > 0:
self.fail("unidentified data set of type %s not as expected" % type)
felmer
committed
def getDataSetByCode(self, dataSets, code):
for dataSet in dataSets:
if dataSet.code == code:
return dataSet
self.fail("No data set with code %s found." % code)
TestCase(settings, __file__).runTest()