<!--
  ~ Copyright 2016-present Open Networking Laboratory
  ~
  ~ Licensed 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.
  -->
<scenario name="drivers-test"
          description="Driver CLI activate/deactivate test">
    <group name="Drivers-Test">

        <!-- Check initial state of select drivers -->
        <step name="DriversTest.FindCelesticaCorsa"
              exec="onos-find-driver ${OC1} celestica celestica" />
        <step name="DriversTest.CheckCelesticaCorsa" requires="^"
              exec="test '${celesticaDriver}' != ''"/>
        <step name="DriversTest.Default" requires="^"
              exec="onos-find-driver ${OC1} default default" />
        <step name="DriversTest.CheckDefault" requires="^"
              exec="test '${defaultDriver}' != ''"/>

        <!-- Deactivate openfow app - prevents spawning multiple controllers -->
        <step name="DriversTest.DeactivateOpenflowApp" requires="^"
              exec="onos ${OCI} onos:app deactivate org.onosproject.openflow"/>

        <!-- Deactivate drivers app -->
        <step name="DriversTest.DeactivateDriversApp" requires="^"
              exec="onos ${OCI} onos:app deactivate org.onosproject.drivers"/>

        <!-- Check that drivers are no longer present -->
        <step name="DriversTest.AfterDeactivateFindCelesticaCorsa" requires="^"
              exec="onos-find-driver ${OC1} celestica celesticaInactive" env="!"/>
        <step name="DriversTest.AfterDeactivateFindDefault" requires="^"
              exec="onos-find-driver ${OC1} default defaultInactive" env="!"/>

        <!-- Reactivate openflow apps -->
        <step name="DriversTest.ActivateOpenflowApp" requires="^"
              exec="onos ${OCI} onos:app activate org.onosproject.openflow"/>

        <!-- Reactivate all drivers -->
        <step name="DriversTest.ActivateDriversApp" requires="^"
              exec="onos ${OCI} onos:app activate org.onosproject.drivers"/>

        <!-- Check reactivated state of drivers -->
        <step name="DriversTest.ReactivatedFindCelesticaCorsa" requires="^"
              exec="onos-find-driver ${OC1} celestica celestica" />
        <step name="DriversTest.ReactivatedCheckCelesticaCorsa" requires="^"
              exec="test '${celesticaDriver}' != ''"/>
        <step name="DriversTest.ReactivatedDefault" requires="^"
              exec="onos-find-driver ${OC1} default default" />
        <step name="DriversTest.ReactivatedCheckDefault" requires="^"
              exec="test '${defaultDriver}' != ''"/>

    </group>
</scenario>
