<!--
  ~ 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="net-multi-to-single-intent"
          description="Network single point to multi point intent connectivity test">
    <!-- TODO: parametrize this via recipes -->
    <group name="M2S-Intent-Connectivity">
        <step name="M2S-Intent.Uninstall-Reactive-Forwarding"
              exec="onos ${OC1} app deactivate org.onosproject.fwd org.onosproject.ifwd"/>
        <step name="M2S-Intent.Check-Apps" requires="^"
              exec="onos-check-apps ${OC1} fwd,ifwd excludes"/>

        <!-- Create a single point to three points intent -->
        <step name="M2S-Intent.Create-Intent-forward" requires="^"
              exec="onos-create-intent ${OC1} forward multi-to-single of:0000000000000014/1 of:0000000000000002/1 of:000000000000000E/1 of:0000000000000011/1"/>

        <!-- Create back links from the 3 points back to the source using a single to multi intent -->
        <step name="M2S-Intent.Create-Intent-back" requires="^"
              exec="onos-create-intent ${OC1} back single-to-multi of:0000000000000011/1 of:0000000000000014/1 of:0000000000000002/1 of:000000000000000E/1"/>

        <!-- Make sure intents installed properly -->
        <step name="M2S-Intent.Validate-Intent-forward-Installed" requires="M2S-Intent.Create-Intent-forward"
              exec="onos-check-intent ${OC1} forward INSTALLED"/>
        <step name="M2S-Intent.Validate-Intent-back1-Installed" requires="M2S-Intent.Create-Intent-back1"
              exec="onos-check-intent ${OC1} back INSTALLED"/>

        <!-- Check the connectivity of the 11 <-> 14 intent -->
        <step name="M2S-Intent.Ping-1-forward"
              exec="onos-mininet sendAndExpect h17 ping -c1 h20 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back1" />
        <step name="M2S-Intent.Ping-1-back"
              exec="onos-mininet sendAndExpect h20 ping -c1 h17 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back1" />

        <!-- Check the connectivity of the 11 <-> 2 intent -->
        <step name="M2S-Intent.Ping-2-forward"
              exec="onos-mininet sendAndExpect h17 ping -c1 h2 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back1" />
        <step name="M2S-Intent.Ping-2-back"
              exec="onos-mininet sendAndExpect h2 ping -c1 h17 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back1" />

        <!-- Check the connectivity of the 11 <-> E intent -->
        <step name="M2S-Intent.Ping-3-forward"
              exec="onos-mininet sendAndExpect h17 ping -c1 h14 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back2" />
        <step name="M2S-Intent.Ping-3-back"
              exec="onos-mininet sendAndExpect h14 ping -c1 h17 --expect \ 0% packet loss" requires="M2S-Intent.Create-Intent-forward,
                                                                                                     M2S-Intent.Create-Intent-back3" />

        <!-- Clean up intents -->
        <step name="M2S-Intent.Remove-Intent-forward" requires="~M2S-Intent.Ping-3-back"
              exec="onos ${OC1} remove-intent -p org.onosproject.cli forward"/>
        <step name="M2S-Intent.Remove-Intent-back" requires="~M2S-Intent.Ping-3-back"
              exec="onos ${OC1} remove-intent -p org.onosproject.cli back"/>
    </group>
</scenario>
