#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

benchmarks:
  baseline_branch: develop/highwater
  baseline_version: ''
  branch: develop

build_test:
  ARTIFACT_SLUG: build
  CALL_STACK_TIMEOUT: '1800'
  CPUS: '8'
  DUNIT_PARALLEL_FORKS: '4'
  EXECUTE_TEST_TIMEOUT: 10m
  GRADLE_TASK: build
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  RAM: '16'
  name: Build

examples_test:
  ARTIFACT_SLUG: examples
  CALL_STACK_TIMEOUT: '1800'
  CPUS: '8'
  DUNIT_PARALLEL_FORKS: '4'
  EXECUTE_TEST_TIMEOUT: 30m
  GRADLE_TASK: runAll
  PARALLEL_DUNIT: 'false'
  RAM: '16'
  name: TestExamples

java_build_version:
  name: OpenJDK8
  version: 8

java_test_versions:
- name: OpenJDK8
  version: 8
- name: OpenJDK11
  version: 11

metadata:
  initial_version: 99.99.0-build.1

publish_artifacts:
  CPUS: '8'
  EXECUTE_TEST_TIMEOUT: 10m
  RAM: '16'
  name: PublishArtifacts

repository:
  project: geode

tests:
- ARTIFACT_SLUG: unittestfiles
  CALL_STACK_TIMEOUT: '1200'
  CPUS: '8'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 30m
  GRADLE_TASK: test
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'true'
  PLATFORM: linux
  RAM: '16'
  name: Unit
- ARTIFACT_SLUG: acceptancetestfiles
  CALL_STACK_TIMEOUT: '1800'
  CPUS: '8'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 45m
  GRADLE_TASK: acceptanceTest
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  PLATFORM: linux
  RAM: '12'
  name: Acceptance
- ARTIFACT_SLUG: distributedtestfiles
  CALL_STACK_TIMEOUT: '7200'
  CPUS: '96'
  DUNIT_PARALLEL_FORKS: '24'
  EXECUTE_TEST_TIMEOUT: 2h15m
  GRADLE_TASK: distributedTest
  PARALLEL_DUNIT: 'true'
  PLATFORM: linux
  RAM: '180'
  name: Distributed
- ARTIFACT_SLUG: integrationtestfiles
  CALL_STACK_TIMEOUT: '1500'
  CPUS: '96'
  DUNIT_PARALLEL_FORKS: '48'
  EXECUTE_TEST_TIMEOUT: 40m
  GRADLE_TASK: integrationTest
  PARALLEL_DUNIT: 'true'
  PLATFORM: linux
  RAM: '90'
  name: Integration
- ARTIFACT_SLUG: upgradetestfiles
  CALL_STACK_TIMEOUT: '3000'
  CPUS: '96'
  DUNIT_PARALLEL_FORKS: '48'
  EXECUTE_TEST_TIMEOUT: 1h
  GRADLE_TASK: upgradeTest
  PARALLEL_DUNIT: 'true'
  PLATFORM: linux
  RAM: '160'
  name: Upgrade
- ARTIFACT_SLUG: stressnewtestfiles
  CALL_STACK_TIMEOUT: '7200'
  CPUS: '96'
  DUNIT_PARALLEL_FORKS: '24'
  EXECUTE_TEST_TIMEOUT: 2h15m
  GRADLE_TASK: repeatTest
  PARALLEL_DUNIT: 'true'
  PARALLEL_GRADLE: 'false'
  PLATFORM: linux
  RAM: '210'
  name: StressNew
- ARTIFACT_SLUG: windows-acceptancetestfiles
  CPUS: '16'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 6h
  GRADLE_TASK: :geode-assembly:acceptanceTest
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  PLATFORM: windows
  RAM: '64'
  name: WindowsAcceptance
- ARTIFACT_SLUG: windows-gfshdistributedtest
  CPUS: '16'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 6h
  GRADLE_TASK: distributedTest
  GRADLE_TASK_OPTIONS: -PtestCategory=org.apache.geode.test.junit.categories.GfshTest
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  PLATFORM: windows
  RAM: '64'
  name: WindowsGfshDistributed
- ARTIFACT_SLUG: windows-integrationtestfiles
  CPUS: '16'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 6h
  GRADLE_TASK: integrationTest
  GRADLE_TASK_OPTIONS: -x geode-core:integrationTest
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  PLATFORM: windows
  RAM: '64'
  name: WindowsIntegration
- ARTIFACT_SLUG: windows-coreintegrationtestfiles
  CPUS: '16'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 6h
  GRADLE_TASK: geode-core:integrationTest
  PARALLEL_DUNIT: 'false'
  PARALLEL_GRADLE: 'false'
  PLATFORM: windows
  RAM: '64'
  name: WindowsCoreIntegration
- ARTIFACT_SLUG: windows-unittestfiles
  CPUS: '16'
  DUNIT_PARALLEL_FORKS: '0'
  EXECUTE_TEST_TIMEOUT: 6h
  GRADLE_TASK: test
  PARALLEL_DUNIT: 'false'
  PLATFORM: windows
  RAM: '64'
  name: WindowsUnit
