# 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_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"

    - TESTS="smoke/test_hostha_kvm
             smoke/test_hostha_simulator
             smoke/test_host_annotations
             smoke/test_host_maintenance
             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"
    
    - TESTS="smoke/test_primary_storage"
    
    - TESTS="smoke/test_privategw_acl
             smoke/test_projects
             smoke/test_public_ip_range
             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
             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"

    - TESTS="smoke/misc/test_deploy_vm
             smoke/misc/test_escalations_templates
             smoke/misc/test_vm_ha
             smoke/misc/test_vm_sync
             component/find_hosts_for_migration
             component/test_acl_isolatednetwork_delete
             component/test_acl_listsnapshot
             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"

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

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

    - TESTS="component/test_memory_limits
             component/test_mm_domain_limits
             component/test_mm_max_limits
             component/test_mm_project_limits"

    - TESTS="component/test_network_offering
             component/test_non_contiguous_vlan
             component/test_persistent_networks"

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

    - TESTS="component/test_regions_accounts
             component/test_routers
             component/test_snapshots
             component/test_stopped_vm"

    - TESTS="component/test_project_resources"

    - TESTS="component/test_project_limits
             component/test_resource_limits"

    - TESTS="component/test_tags
             component/test_templates
             component/test_update_vm
             component/test_volumes"

    - TESTS="component/test_vpc
             component/test_vpc_network
             component/test_vpc_offerings
             component/test_vpn_users"

# FIXME: fix following tests and include them in Travis
#    - TESTS="component/test_vpc" Please add when PR: https://github.com/apache/cloudstack/pull/955 CLOUDSTACK-8969 is fixed
#    - TESTS="component/test_organization_states" Please add when CLOUDSTACK-7735 is fixed

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

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-rpm-builder:centos6 PARAMS="--distribution centos63 --pack oss"
      <<: *package_job

    - stage: package
      services: docker
      env: IMAGE=khos2ow/cloudstack-deb-builder:ubuntu1804 PARAMS=""
      <<: *package_job

    - stage: package
      services: docker
      env: IMAGE=khos2ow/cloudstack-deb-builder:ubuntu1604 PARAMS=""
      <<: *package_job

