<!--
  ~ Copyright 2016 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.FindOvsCorsa"
              exec="onos-find-driver ${OC1} ovs-corsa ovs" />
        <step name="DriversTest.CheckOvsCorsa" requires="^"
              exec="test '${ovsDriver}' != ''"/>
        <step name="DriversTest.Default" requires="^"
              exec="onos-find-driver ${OC1} default default" />
        <step name="DriversTest.CheckDefault" requires="^"
              exec="test '${defaultDriver}' != ''"/>

        <!-- 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.AfterDeactivateFindOvsCorsa" requires="^"
              exec="onos-find-driver ${OC1} ovs-corsa ovsInactive" env="!"/>
        <step name="DriversTest.AfterDeactivateFindDefault" requires="^"
              exec="onos-find-driver ${OC1} default defaultInactive" env="!"/>

        <!-- 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.ReactivatedFindOvsCorsa" requires="^"
              exec="onos-find-driver ${OC1} ovs-corsa ovs" />
        <step name="DriversTest.ReactivatedCheckOvsCorsa" requires="^"
              exec="test '${ovsDriver}' != ''"/>
        <step name="DriversTest.ReactivatedDefault" requires="^"
              exec="onos-find-driver ${OC1} default default" />
        <step name="DriversTest.ReactivatedCheckDefault" requires="^"
              exec="test '${defaultDriver}' != ''"/>

    </group>
</scenario>
