From aeaf8b58c21f26b7ef2252d00cae43c39f8ccce3 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 28 Apr 2009 09:06:42 +0000
Subject: [PATCH] LMS-855 add two DSS configurations and start them up

SVN: 10844
---
 integration-tests/run.sh                      |   9 +-
 .../templates/data/incoming-a/.gitignore      |   0
 .../datastore_server1/datastore_server.sh     |   3 +
 .../datastore_server1/etc/openBIS.keystore    | Bin 0 -> 2006 bytes
 .../datastore_server1/etc/service.properties  | 134 ++++++++++++++++++
 .../templates/datastore_server1/shutdown.sh   |  48 +++++++
 .../datastore_server2/datastore_server.sh     |   3 +
 .../datastore_server2/etc/openBIS.keystore    | Bin 0 -> 2006 bytes
 .../datastore_server2/etc/service.properties  |  85 +++++++++++
 .../templates/datastore_server2/shutdown.sh   |  48 +++++++
 10 files changed, 327 insertions(+), 3 deletions(-)
 create mode 100644 integration-tests/templates/data/incoming-a/.gitignore
 create mode 100755 integration-tests/templates/datastore_server1/datastore_server.sh
 create mode 100644 integration-tests/templates/datastore_server1/etc/openBIS.keystore
 create mode 100644 integration-tests/templates/datastore_server1/etc/service.properties
 create mode 100755 integration-tests/templates/datastore_server1/shutdown.sh
 create mode 100755 integration-tests/templates/datastore_server2/datastore_server.sh
 create mode 100644 integration-tests/templates/datastore_server2/etc/openBIS.keystore
 create mode 100644 integration-tests/templates/datastore_server2/etc/service.properties
 create mode 100755 integration-tests/templates/datastore_server2/shutdown.sh

diff --git a/integration-tests/run.sh b/integration-tests/run.sh
index a58b4503b8f..716b60288e9 100755
--- a/integration-tests/run.sh
+++ b/integration-tests/run.sh
@@ -242,10 +242,12 @@ function install_dsss {
     local install_dss=$1
     if [ $install_dss == "true" ]; then
         unpack datastore_server
-	prepare datastore_server datastore_server-all
+	prepare datastore_server datastore_server1
+	prepare datastore_server datastore_server2
 	remove_unpacked datastore_server
     else
-	copy_templates datastore_server-all    
+	copy_templates datastore_server1
+	copy_templates datastore_server2
     fi
 }
 
@@ -538,7 +540,8 @@ function switch_dmv {
 
 function switch_processing_pipeline {
     new_state=$1
-    switch_dss $new_state datastore_server-all
+    switch_dss $new_state datastore_server1
+    switch_dss $new_state datastore_server2
     switch_dmv $new_state datamover-analysis
     switch_sth $new_state dummy-img-analyser start.sh stop.sh $TRUE
     switch_dmv $new_state datamover-raw
diff --git a/integration-tests/templates/data/incoming-a/.gitignore b/integration-tests/templates/data/incoming-a/.gitignore
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/integration-tests/templates/datastore_server1/datastore_server.sh b/integration-tests/templates/datastore_server1/datastore_server.sh
new file mode 100755
index 00000000000..c69f1dc109e
--- /dev/null
+++ b/integration-tests/templates/datastore_server1/datastore_server.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+./shutdown.sh
+java -ea -Djavax.net.ssl.trustStore=etc/openBIS.keystore -jar lib/datastore_server.jar "$@" & echo $! > running.pid
\ No newline at end of file
diff --git a/integration-tests/templates/datastore_server1/etc/openBIS.keystore b/integration-tests/templates/datastore_server1/etc/openBIS.keystore
new file mode 100644
index 0000000000000000000000000000000000000000..3982a68319e9e1fed5ace51f72682d79e448eaa2
GIT binary patch
literal 2006
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

literal 0
HcmV?d00001

diff --git a/integration-tests/templates/datastore_server1/etc/service.properties b/integration-tests/templates/datastore_server1/etc/service.properties
new file mode 100644
index 00000000000..434c1117005
--- /dev/null
+++ b/integration-tests/templates/datastore_server1/etc/service.properties
@@ -0,0 +1,134 @@
+# Unique code of this Data Store Server. Not more than 40 characters.
+data-store-server-code = DSS1
+
+# The root directory of the data store
+storeroot-dir = ../data/main-store
+
+# Port
+port = 8444
+
+# Session timeout in minutes
+session-timeout = 30
+
+# Path to the keystore
+keystore.path = etc/openBIS.keystore
+
+# Password of the keystore
+keystore.password = changeit
+
+# Key password of the keystore
+keystore.key-password = changeit
+
+# The check interval (in seconds)
+check-interval = 2
+
+# The time-out for clean up work in the shutdown sequence (in seconds).
+# Note that that the maximal time for the shutdown sequence to complete can be as large 
+# as twice this time.
+shutdown-timeout = 2
+
+# If free disk space goes below value defined here, a notification email will be sent.
+# Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is
+# specified or if value is negative, the system will not be watching.
+highwater-mark = 1048576
+
+# The URL of the LIMS server
+server-url = https://localhost:8443/openbis/openbis
+
+# The username to use when contacting the LIMS server
+username = etlserver
+
+# The password to use when contacting the LIMS server
+password = <change this>
+
+# The base URL for Web client access.
+download-url = https://localhost:8444
+
+# SMTP properties (must start with 'mail' to be considered). 
+mail.smtp.host = mail.ethz.ch
+# mail.from = datastore_server@localhost
+# mail.smtp.user = 
+# mail.smtp.password = 
+
+# Maximum number of retries if renaming failed.
+# renaming.failure.max-retries = 12
+
+# The number of milliseconds to wait before retrying to execute the renaming process.
+# renaming.failure.millis-to-sleep = 5000
+
+# Globally used separator character which separates entities in a data set file name 
+data-set-file-name-entity-separator = _
+
+processors = DATA_ACQUISITION
+processor.DATA_ACQUISITION.prefix-for-relative-paths = ../data/
+processor.DATA_ACQUISITION.data-set-code-prefix-glue = ${data-set-file-name-entity-separator}
+processor.DATA_ACQUISITION.finished-file-template = .MARKER_openbis_is_finished_{0}
+processor.DATA_ACQUISITION.parameters-file = processing-parameters-from-openbis
+# Can be one of PROPRIETARY (the data as acquired from the measurement device) 
+# or BDS_DIRECTORY (the data in BDS format in a directory container).
+processor.DATA_ACQUISITION.input-storage-format = PROPRIETARY
+
+# Comma separated names of processing threads. Each thread should have configuration properties prefixed with its name
+# E.g. 'code-extractor' property for the thread 'my-etl' should be specified as 'my-etl.code-extractor'
+inputs=raw-data,image-analysis
+
+# ---------------------------------------------------------------------------
+# Raw data thread
+# ---------------------------------------------------------------------------
+# The directory to watch for incoming data.
+raw-data.incoming-dir = ../data/out-raw
+
+# The extractor plugin class to use for data set information extraction
+raw-data.data-set-info-extractor = ch.systemsx.cisd.etlserver.threev.DataSetInfoExtractorForDataAcquisition
+# Separator used to extract the barcode in the data set file name
+raw-data.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+raw-data.data-set-info-extractor.group-code = CISD
+raw-data.data-set-info-extractor.index-of-data-producer-code = 0
+raw-data.data-set-info-extractor.index-of-data-production-date = 1
+raw-data.data-set-info-extractor.data-production-date-format = yyyyMMddHHmm
+raw-data.data-set-info-extractor.indices-of-data-set-code-entities = 0 -1
+raw-data.data-set-info-extractor.data-set-code-entities-glue = -
+# ...........................................................................
+
+# The extractor plugin class to use for type extraction
+raw-data.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
+raw-data.type-extractor.file-format-type = TIFF
+raw-data.type-extractor.locator-type = RELATIVE_LOCATION
+raw-data.type-extractor.data-set-type = HCS_IMAGE
+raw-data.type-extractor.processor-type = DATA_ACQUISITION 
+
+# The storage processor plugin (IStorageProcessor implementation)
+# raw-data.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
+raw-data.storage-processor = ch.systemsx.cisd.etlserver.BDSStorageProcessor
+raw-data.storage-processor.version = 1.1
+raw-data.storage-processor.sampleTypeCode = CELL_PLATE
+raw-data.storage-processor.sampleTypeDescription = Screening Plate
+raw-data.storage-processor.format = HCS_IMAGE V1.0
+raw-data.storage-processor.number_of_channels = 2
+raw-data.storage-processor.contains_original_data = TRUE
+raw-data.storage-processor.well_geometry = 3x3
+raw-data.storage-processor.file-extractor = ch.systemsx.cisd.etlserver.imsb.HCSImageFileExtractor
+
+# ---------------------------------------------------------------------------
+# image-analysis thread
+# ---------------------------------------------------------------------------
+image-analysis.incoming-dir = ../data/out-analysis
+
+image-analysis.data-set-info-extractor = ch.systemsx.cisd.etlserver.threev.DataSetInfoExtractorForImageAnalysis
+# Separator used to extract the barcode in the data set file name
+image-analysis.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+image-analysis.data-set-info-extractor.group-code = CISD
+image-analysis.data-set-info-extractor.indices-of-parent-data-set-code-entities = 0 -1
+image-analysis.data-set-info-extractor.data-set-code-entities-glue = -
+# ...........................................................................
+
+# The extractor class to use for type extraction
+image-analysis.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
+image-analysis.type-extractor.file-format-type = 3VPROPRIETARY
+image-analysis.type-extractor.locator-type = RELATIVE_LOCATION
+image-analysis.type-extractor.data-set-type = HCS_IMAGE_ANALYSIS_DATA
+image-analysis.type-extractor.is-measured = false
+
+# The storage processor (IStorageProcessor implementation)
+image-analysis.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
+
diff --git a/integration-tests/templates/datastore_server1/shutdown.sh b/integration-tests/templates/datastore_server1/shutdown.sh
new file mode 100755
index 00000000000..2e5771bca66
--- /dev/null
+++ b/integration-tests/templates/datastore_server1/shutdown.sh
@@ -0,0 +1,48 @@
+#! /bin/sh
+# This is an exact copy of datamover.stop
+
+awkBin()
+{
+	# We need a awk that accepts variable assignments with '-v'
+	case `uname -s` in
+		"SunOS")
+			echo "nawk"
+			return
+			;;
+	esac
+	# default
+	echo "awk"
+}
+
+isPIDRunning()
+{
+	if [ "$1" = "" ]; then
+		return 0
+	fi
+	# This will have a return value of 0 on BSDish systems
+	isBSD="`ps aux > /dev/null 2>&1; echo $?`"
+	AWK=`awkBin`
+	if [ "$isBSD" = "0" ]; then
+		if [ "`ps aux | $AWK -v PID=$1 '{if ($2==PID) {print "FOUND"}}'`" = "FOUND" ]; then
+			return 0
+		else
+			return 1
+		fi
+	else
+		if [ "`ps -ef | $AWK -v PID=$1 '{if ($2==PID) {print "FOUND"}}'`" = "FOUND" ]; then
+			return 0
+		else
+			return 1
+		fi
+	fi
+}
+
+if [ -f running.pid ]; then
+	PID=`cat running.pid`
+	isPIDRunning $PID
+	if [ $? -eq 0 ]; then
+		kill $PID
+		echo "Previously running program with PID $PID was found and killed"
+	fi
+	rm running.pid
+fi
diff --git a/integration-tests/templates/datastore_server2/datastore_server.sh b/integration-tests/templates/datastore_server2/datastore_server.sh
new file mode 100755
index 00000000000..c69f1dc109e
--- /dev/null
+++ b/integration-tests/templates/datastore_server2/datastore_server.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+./shutdown.sh
+java -ea -Djavax.net.ssl.trustStore=etc/openBIS.keystore -jar lib/datastore_server.jar "$@" & echo $! > running.pid
\ No newline at end of file
diff --git a/integration-tests/templates/datastore_server2/etc/openBIS.keystore b/integration-tests/templates/datastore_server2/etc/openBIS.keystore
new file mode 100644
index 0000000000000000000000000000000000000000..3982a68319e9e1fed5ace51f72682d79e448eaa2
GIT binary patch
literal 2006
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

literal 0
HcmV?d00001

diff --git a/integration-tests/templates/datastore_server2/etc/service.properties b/integration-tests/templates/datastore_server2/etc/service.properties
new file mode 100644
index 00000000000..652218d23eb
--- /dev/null
+++ b/integration-tests/templates/datastore_server2/etc/service.properties
@@ -0,0 +1,85 @@
+# Unique code of this Data Store Server. Not more than 40 characters.
+data-store-server-code = DSS2
+
+# The root directory of the data store
+storeroot-dir = ../data/main-store
+
+# Port
+port = 8445
+
+# Session timeout in minutes
+session-timeout = 30
+
+# Path to the keystore
+keystore.path = etc/openBIS.keystore
+
+# Password of the keystore
+keystore.password = changeit
+
+# Key password of the keystore
+keystore.key-password = changeit
+
+# The check interval (in seconds)
+check-interval = 2
+
+# The time-out for clean up work in the shutdown sequence (in seconds).
+# Note that that the maximal time for the shutdown sequence to complete can be as large 
+# as twice this time.
+shutdown-timeout = 2
+
+# If free disk space goes below value defined here, a notification email will be sent.
+# Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is
+# specified or if value is negative, the system will not be watching.
+highwater-mark = 1048576
+
+# The URL of the LIMS server
+server-url = https://localhost:8443/openbis/openbis
+
+# The username to use when contacting the LIMS server
+username = etlserver
+
+# The password to use when contacting the LIMS server
+password = <change this>
+
+# The base URL for Web client access.
+download-url = https://localhost:${port}
+
+# SMTP properties (must start with 'mail' to be considered). 
+mail.smtp.host = mail.ethz.ch
+# mail.from = datastore_server@localhost
+# mail.smtp.user = 
+# mail.smtp.password = 
+
+# Maximum number of retries if renaming failed.
+# renaming.failure.max-retries = 12
+
+# The number of milliseconds to wait before retrying to execute the renaming process.
+# renaming.failure.millis-to-sleep = 5000
+
+# The period of no write access that needs to pass before an incoming data item is considered 
+# complete and ready to be processed (in seconds) [default: 300]. 
+# Valid only when auto-detection method is used to determine if an incoming data are ready to be processed.
+quiet-period = 10
+
+# Globally used separator character which separates entities in a data set file name 
+data-set-file-name-entity-separator = _
+
+# Comma separated names of processing threads. Each thread should have configuration properties prefixed with its name
+# E.g. 'code-extractor' property for the thread 'my-etl' should be specified as 'my-etl.code-extractor'
+inputs=a
+
+# The directory to watch for incoming data.
+a.incoming-dir = ../data/incoming-a
+a.incoming-data-completeness-condition = auto-detection
+
+# The extractor plugin class to use for data set information extraction
+a.data-set-info-extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+# Separator used to extract the barcode in the data set file name
+a.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+a.data-set-info-extractor.group-code = CISD
+a.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
+a.type-extractor.file-format-type = TIFF
+a.type-extractor.locator-type = RELATIVE_LOCATION
+a.type-extractor.data-set-type = HCS_IMAGE
+a.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
+
diff --git a/integration-tests/templates/datastore_server2/shutdown.sh b/integration-tests/templates/datastore_server2/shutdown.sh
new file mode 100755
index 00000000000..2e5771bca66
--- /dev/null
+++ b/integration-tests/templates/datastore_server2/shutdown.sh
@@ -0,0 +1,48 @@
+#! /bin/sh
+# This is an exact copy of datamover.stop
+
+awkBin()
+{
+	# We need a awk that accepts variable assignments with '-v'
+	case `uname -s` in
+		"SunOS")
+			echo "nawk"
+			return
+			;;
+	esac
+	# default
+	echo "awk"
+}
+
+isPIDRunning()
+{
+	if [ "$1" = "" ]; then
+		return 0
+	fi
+	# This will have a return value of 0 on BSDish systems
+	isBSD="`ps aux > /dev/null 2>&1; echo $?`"
+	AWK=`awkBin`
+	if [ "$isBSD" = "0" ]; then
+		if [ "`ps aux | $AWK -v PID=$1 '{if ($2==PID) {print "FOUND"}}'`" = "FOUND" ]; then
+			return 0
+		else
+			return 1
+		fi
+	else
+		if [ "`ps -ef | $AWK -v PID=$1 '{if ($2==PID) {print "FOUND"}}'`" = "FOUND" ]; then
+			return 0
+		else
+			return 1
+		fi
+	fi
+}
+
+if [ -f running.pid ]; then
+	PID=`cat running.pid`
+	isPIDRunning $PID
+	if [ $? -eq 0 ]; then
+		kill $PID
+		echo "Previously running program with PID $PID was found and killed"
+	fi
+	rm running.pid
+fi
-- 
GitLab