# 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.
sudo: required
dist: xenial
group: edge

language: java
jdk:
  - openjdk8
python:
  - "2.7"

cache:
  directories:
    - $HOME/.m2
  timeout: 500

notifications:
  email: false

env:
  global:
     - PATH=$HOME/.local/bin:$PATH
  matrix:
    # Keep the TESTS sorted by name and grouped by type
    - TESTS="smoke/test_certauthority_root"

    - TESTS="smoke/test_accounts
             smoke/test_affinity_groups
             smoke/test_affinity_groups_projects
             smoke/test_async_job
             smoke/test_create_list_domain_account_project
             smoke/test_deploy_vgpu_enabled_vm
             smoke/test_deploy_vm_iso
             smoke/test_deploy_vm_root_resize
             smoke/test_deploy_vm_with_userdata
             smoke/test_deploy_vms_with_varied_deploymentplanners
             smoke/test_diagnostics
             smoke/test_disk_offerings
             smoke/test_dynamicroles
             smoke/test_global_settings
             smoke/test_guest_vlan_range
             smoke/test_host_annotations
             smoke/test_host_maintenance
             smoke/test_hostha_simulator"

    - TESTS="smoke/test_internal_lb
             smoke/test_iso
             smoke/test_list_ids_parameter
             smoke/test_loadbalance
             smoke/test_login
             smoke/test_metrics_api
             smoke/test_multipleips_per_nic
             smoke/test_nested_virtualization
             smoke/test_network
             smoke/test_network_acl
             smoke/test_nic
             smoke/test_nic_adapter_type
             smoke/test_non_contigiousvlan
             smoke/test_outofbandmanagement
             smoke/test_outofbandmanagement_nestedplugin
             smoke/test_over_provisioning
             smoke/test_password_server
             smoke/test_portable_publicip
             smoke/test_portforwardingrules
             smoke/test_privategw_acl
             smoke/test_projects
             smoke/test_public_ip_range"

    - TESTS="smoke/test_pvlan
             smoke/test_regions
             smoke/test_reset_vm_on_reboot
             smoke/test_resource_accounting
             smoke/test_resource_detail
             smoke/test_router_dhcphosts
             smoke/test_router_dns
             smoke/test_routers
             smoke/test_routers_iptables_default_policy
             smoke/test_routers_network_ops
             smoke/test_scale_vm
             smoke/test_secondary_storage
             smoke/test_service_offerings
             smoke/test_snapshots
             smoke/test_ssvm
             smoke/test_staticroles
             smoke/test_templates
             smoke/test_usage
             smoke/test_usage_events"

    - TESTS="smoke/test_vm_life_cycle
             smoke/test_vm_snapshots
             smoke/test_volumes
             smoke/test_vpc_redundant
             smoke/test_vpc_router_nics
             smoke/test_vpc_vpn
             smoke/test_primary_storage"

    - TESTS="component/find_hosts_for_migration
             component/test_acl_isolatednetwork
             component/test_acl_isolatednetwork_delete
             component/test_acl_listsnapshot"

    - TESTS="component/test_acl_listvm
             component/test_acl_listvolume"

    - TESTS="component/test_acl_sharednetwork
             component/test_acl_sharednetwork_deployVM-impersonation"

    - TESTS="component/test_affinity_groups_projects
             component/test_allocation_states
             component/test_assign_vm"

    - TESTS="component/test_concurrent_snapshots_limit
             component/test_cpu_domain_limits
             component/test_cpu_limits
             component/test_cpu_max_limits
             component/test_cpu_project_limits
             component/test_deploy_vm_userdata_multi_nic"

    - TESTS="component/test_egress_fw_rules
             component/test_invalid_gw_nm
             component/test_ip_reservation"

    - TESTS="component/test_lb_secondary_ip
             component/test_list_nics
             component/test_list_pod
             component/test_memory_limits"

    - TESTS="component/test_mm_domain_limits
             component/test_mm_max_limits
             component/test_mm_project_limits
             component/test_network_offering
             component/test_non_contiguous_vlan"

    - TESTS="component/test_persistent_networks
             component/test_project_configs
             component/test_project_limits
             component/test_project_resources"

    - TESTS="component/test_project_usage
             component/test_resource_limits"

    - TESTS="component/test_regions_accounts
             component/test_routers
             component/test_snapshots
             component/test_stopped_vm
             component/test_tags
             component/test_templates
             component/test_updateResourceCount
             component/test_update_vm"

    - TESTS="component/test_volumes
             component/test_vpc
             component/test_vpc_distributed_routing_offering
             component/test_vpc_network"

    - TESTS="component/test_vpc_network_lbrules
             component/test_vpc_offerings
             component/test_vpc_routers
             component/test_vpn_users"

before_install: travis_wait 30 ./tools/travis/before_install.sh
install: ./tools/travis/install.sh
before_script: travis_wait 30 ./tools/travis/before_script.sh
script:
  - travis_wait 40 ./tools/travis/script.sh ${TESTS}
after_success: ./tools/travis/after_success.sh
after_failure: ./tools/travis/after_failure.sh
after_script: ./tools/travis/after_script.sh

# Packaging job definition, will be reused
.package_job: &package_job
  before_install: docker pull ${IMAGE}
  install: true
  before_script: true
  script: |
    docker run \
     --volume ${TRAVIS_BUILD_DIR}:/mnt/build/cloudstack \
     --volume $HOME/.m2:/root/.m2 \
     --rm \
     ${IMAGE} ${PARAMS}
  after_script: true
  after_success: true
  after_failure: true

#Disable due to intermittent failures
#jobs:
#  include:
#    - stage: package
#      services: docker
#      env: IMAGE=khos2ow/cloudstack-rpm-builder:centos7 PARAMS="--distribution centos7 --pack oss"
#      <<: *package_job
#
#    - stage: package
#      services: docker
#      env: IMAGE=khos2ow/cloudstack-deb-builder:ubuntu1804 PARAMS=""
#      <<: *package_job
