name: $(BuildID)_pythonv2_$(BuildDefinitionName)_$(SourceBranchName)
variables:
  Horton.FrameworkRoot: $(Build.SourcesDirectory)

jobs:
- job: "build_linux_amd64"
  pool:
    vmImage: 'ubuntu-20.04'
  strategy:
    matrix:
      py38: { variant: py38 }
      py37: { variant: py37 }
      py39: { variant: py39 }
  steps:
  - template: templates/steps-build-docker-image.yaml
    parameters:
      variant: $(variant)

- job: "test_linux_amd64"
  pool:
      vmImage: 'ubuntu-20.04'
  dependsOn:
    - "build_linux_amd64"
  strategy:
    maxParallel: 10
    matrix:

      py39_mqtt_iothub_module_and_device:           { suite: py39_mqtt_iothub_module_and_device }
      py39_mqtt_edgehub_module:                     { suite: py39_mqtt_edgehub_module }
      py39_mqtt_iothub_module_full_drop:            { suite: py39_mqtt_iothub_module_full_drop }
      py39_mqtt_iothub_device_full_drop:            { suite: py39_mqtt_iothub_device_full_drop }
      py39_mqtt_edgehub_module_full_drop:           { suite: py39_mqtt_edgehub_module_full_drop }

      py39_mqttws_iothub_module_and_device:         { suite: py39_mqttws_iothub_module_and_device }
      py39_mqttws_edgehub_module:                   { suite: py39_mqttws_edgehub_module }
      py39_mqttws_iothub_module_full_drop:          { suite: py39_mqttws_iothub_module_full_drop }
      py39_mqttws_iothub_device_full_drop:          { suite: py39_mqttws_iothub_device_full_drop }
      py39_mqttws_edgehub_module_full_drop:         { suite: py39_mqttws_edgehub_module_full_drop }

      py39_async_mqtt_iothub_module_and_device:     { suite: py39_async_mqtt_iothub_module_and_device }
      py39_async_mqtt_edgehub_module:               { suite: py39_async_mqtt_edgehub_module }
      py39_async_mqtt_iothub_module_full_drop:      { suite: py39_async_mqtt_iothub_module_full_drop }
      py39_async_mqtt_iothub_device_full_drop:      { suite: py39_async_mqtt_iothub_device_full_drop }
      py39_async_mqtt_edgehub_module_full_drop:     { suite: py39_async_mqtt_edgehub_module_full_drop }

      py39_async_mqttws_iothub_module_and_device:   { suite: py39_async_mqttws_iothub_module_and_device }
      py39_async_mqttws_edgehub_module:             { suite: py39_async_mqttws_edgehub_module }
      py39_async_mqttws_iothub_module_full_drop:    { suite: py39_async_mqttws_iothub_module_full_drop }
      py39_async_mqttws_iothub_device_full_drop:    { suite: py39_async_mqttws_iothub_device_full_drop }
      py39_async_mqttws_edgehub_module_full_drop:   { suite: py39_async_mqttws_edgehub_module_full_drop }

      py37_mqtt_iothub_module_and_device:           { suite: py37_mqtt_iothub_module_and_device }
      py37_mqtt_edgehub_module:                     { suite: py37_mqtt_edgehub_module }
      py37_mqtt_iothub_module_full_drop:            { suite: py37_mqtt_iothub_module_full_drop }
      py37_mqtt_iothub_device_full_drop:            { suite: py37_mqtt_iothub_device_full_drop }
      py37_mqtt_edgehub_module_full_drop:           { suite: py37_mqtt_edgehub_module_full_drop }

      py37_mqttws_iothub_module_and_device:         { suite: py37_mqttws_iothub_module_and_device }
      py37_mqttws_edgehub_module:                   { suite: py37_mqttws_edgehub_module }
      py37_mqttws_iothub_module_full_drop:          { suite: py37_mqttws_iothub_module_full_drop }
      py37_mqttws_iothub_device_full_drop:          { suite: py37_mqttws_iothub_device_full_drop }
      py37_mqttws_edgehub_module_full_drop:         { suite: py37_mqttws_edgehub_module_full_drop }

      py37_async_mqtt_iothub_module_and_device:     { suite: py37_async_mqtt_iothub_module_and_device }
      py37_async_mqtt_edgehub_module:               { suite: py37_async_mqtt_edgehub_module }
      py37_async_mqtt_iothub_module_full_drop:      { suite: py37_async_mqtt_iothub_module_full_drop }
      py37_async_mqtt_iothub_device_full_drop:      { suite: py37_async_mqtt_iothub_device_full_drop }
      py37_async_mqtt_edgehub_module_full_drop:     { suite: py37_async_mqtt_edgehub_module_full_drop }

      py37_async_mqttws_iothub_module_and_device:   { suite: py37_async_mqttws_iothub_module_and_device }
      py37_async_mqttws_edgehub_module:             { suite: py37_async_mqttws_edgehub_module }
      py37_async_mqttws_iothub_module_full_drop:    { suite: py37_async_mqttws_iothub_module_full_drop }
      py37_async_mqttws_iothub_device_full_drop:    { suite: py37_async_mqttws_iothub_device_full_drop }
      py37_async_mqttws_edgehub_module_full_drop:   { suite: py37_async_mqttws_edgehub_module_full_drop }

      py38_mqtt_iothub_module_and_device:           { suite: py38_mqtt_iothub_module_and_device }
      py38_mqtt_edgehub_module:                     { suite: py38_mqtt_edgehub_module }
      py38_mqtt_iothub_module_full_drop:            { suite: py38_mqtt_iothub_module_full_drop }
      py38_mqtt_iothub_device_full_drop:            { suite: py38_mqtt_iothub_device_full_drop }
      py38_mqtt_edgehub_module_full_drop:           { suite: py38_mqtt_edgehub_module_full_drop }

      py38_mqttws_iothub_module_and_device:         { suite: py38_mqttws_iothub_module_and_device }
      py38_mqttws_edgehub_module:                   { suite: py38_mqttws_edgehub_module }
      py38_mqttws_iothub_module_full_drop:          { suite: py38_mqttws_iothub_module_full_drop }
      py38_mqttws_iothub_device_full_drop:          { suite: py38_mqttws_iothub_device_full_drop }
      py38_mqttws_edgehub_module_full_drop:         { suite: py38_mqttws_edgehub_module_full_drop }

      py38_async_mqtt_iothub_module_and_device:     { suite: py38_async_mqtt_iothub_module_and_device }
      py38_async_mqtt_edgehub_module:               { suite: py38_async_mqtt_edgehub_module }
      py38_async_mqtt_iothub_module_full_drop:      { suite: py38_async_mqtt_iothub_module_full_drop }
      py38_async_mqtt_iothub_device_full_drop:      { suite: py38_async_mqtt_iothub_device_full_drop }
      py38_async_mqtt_edgehub_module_full_drop:     { suite: py38_async_mqtt_edgehub_module_full_drop }

      py38_async_mqttws_iothub_module_and_device:   { suite: py38_async_mqttws_iothub_module_and_device }
      py38_async_mqttws_edgehub_module:             { suite: py38_async_mqttws_edgehub_module }
      py38_async_mqttws_iothub_module_full_drop:    { suite: py38_async_mqttws_iothub_module_full_drop }
      py38_async_mqttws_iothub_device_full_drop:    { suite: py38_async_mqttws_iothub_device_full_drop }
      py38_async_mqttws_edgehub_module_full_drop:   { suite: py38_async_mqttws_edgehub_module_full_drop }


  steps:
  - template: templates/steps-deploy-and-run-pytest.yaml
    parameters:
      forced_image: $(Horton.ForcedImage)
      suite: $(suite)

