<!--
  ~ Copyright 2016-present Open Networking Foundation
  ~
  ~ 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 the Fujitsu driver -->
        <step name="DriversTest.FindFujitsuInitial"
              exec="onos-find-driver ${OC1} fujitsu-netconf fujitsu" env="!"/>

	    <!-- Activate Fujitsu driver app -->
        <!--
        <step name="DriversTest.ActivateNetconfApp" requires="^"
              exec="onos ${OCI} onos:app activate org.onosproject.netconf"/>
        <step name="DriversTest.ActivateFujitsuDriverApp" requires="^"
              exec="onos ${OCI} onos:app activate org.onosproject.drivers.fujitsu"/>
        -->

        <!-- Check that the activation was successful -->
        <!--
        <group name="DriversTest.Check-Fujitsu-App-Activated" requires="DriversTest.ActivateFujitsuDriverApp">
            <parallel var="${OC#}">
                <step name="DriversTest.Check-Fujitsu-App-Activated-${#}"
                      exec="onos-check-apps ${OC#} gui,drivers,openflow,proxyarp,dhcp,fujitsu includes"/>
            </parallel>
        </group>
        -->

        <!-- Check that Fujitsu driver is active. -->
        <!--
        <step name="DriversTest.FindFujitsuAfterActivate" requires="^"
              exec="onos-find-driver ${OC1} fujitsu-netconf fujitsu" />
        <step name="DriversTest.CheckFujitsuAfterActivate" requires="^"
              exec="test '${fujitsuDriver}' != ''"/>
              -->

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

        <!-- Check that Fujitsu driver is no longer present -->
        <step name="DriversTest.AfterDeactivateFindFujitsu" requires="^"
              exec="onos-find-driver ${OC1} fujitsu fujitsuInactive" env="!"/>


    </group>
</scenario>
