#
# This properties file should contains items that are specific to the stream being tested.
# Note: I don't believe these are currently being used, as intended, but can/will be
# at some point.

# purely title or identifier for display, to help confirm right file
# is being retrieved and used.
streamSpecificPropertiesTitle="Properties for 4.21.0 builds and tests"

# These "previousRelease" variables are primarily used to have a
# stable version of Eclipse, that is used, for example, for it's p2
# director, etc., so that "running the tests" is not actually using
# the "just built" versions.
previousReleaseLocation=https://${DOWNLOAD_HOST}/eclipse/downloads/drops4/R-4.20-202106111600/
# version here is "build label" ... in general form, the "middle" of archive name,
# such as  "eclipse-platform-${previousReleaseVersion}-linux-gtk-x86_64.tar.gz
# Also used used in p2 testing?
previousReleaseVersion=4.20
# This is last segment of last release repo, such as in
#  http://${ARCHIVE_HOST}/eclipse/updates/${previousReleaseVersion}
# NOTE: I am assuming the "composite" repo is suitable for p2. In theory,
# they might want the simple repo, such as at 4.4/R-4.4.1-201409250400
previousReleaseVersionRepo=4.20

# Note: API tests needs the _base_ of previous release, and also the previous service release
# Bug 378587 - update releng tests (data) to go work against previous release
# Bug 380033 - temp fix to hard code 'archive.eclipse.org' for now
apiTestsPreviousBaseDLBaseURL=obsoleteAndNotUsed
apiTestsPreviousBaseWin32Filename=obsoleteAndNotUsed
apiTestsPreviousRefererenceBaseDLBaseURL=obsoleteAndNotUsed
apiTestsPreviousRefererenceWin32Filename=obsoleteAndNotUsed

# the following are not used in unit tests, only performance tests, when the variables
# baselinePerf=true
# are specified. The baselinePerf will often be the same as "previous release", but
# not necessarily, so is not hard coded in assumptions.
baselinePerfLocation=https://${DOWNLOAD_HOST}/eclipse/downloads/drops4/R-4.20-202106111600
# NOTE: value must match baselineCode in testScripts/updateTestResultsPages.sh
baselinePerfVersion=R-4.20-202106111600
# TODO: could/should eventually "compute" label, from full version?
baselinePerfVersionLabel=4.20
baselinePerfBuildId=I20210611-1600

# We currently set here, but would be better to compute this value 
# by peeking in the "to be tested" tar file. 
isMacAppLayout=true
