%description:
Testing InternetCloud drop
%#--------------------------------------------------------------------------------------------------------------
%file: test.ned

import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.inet.StandardHost;
import inet.node.internetcloud.InternetCloud;
import ned.DatarateChannel;


network CloudAndHosts
{
    parameters:
        int numSenders;

    types:
        channel C extends DatarateChannel
        {
            delay = 10ms;
            datarate = 5Mbps;
        }
    submodules:
        configurator: IPv4NetworkConfigurator {
            parameters:
                @display("p=61,163");
        }

        sender[numSenders]: StandardHost;
        recip: StandardHost;
        internet: InternetCloud;
    connections:
        recip.pppg++ <--> C <--> internet.pppg++;
        for i=0..numSenders-1 {
            sender[i].pppg++ <--> C <--> internet.pppg++;
        }
}


%#--------------------------------------------------------------------------------------------------------------
%inifile: omnetpp.ini

[General]
network = CloudAndHosts
tkenv-plugin-path = ../../../etc/plugins
ned-path = .;../../../../src;../../lib

#omnetpp 5.0 - 5.1 compatibility:
eventlog-file = "${resultdir}/${configname}-${runnumber}.elog"
output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
output-vector-file = "${resultdir}/${configname}-${runnumber}.vec"
snapshot-file = "${resultdir}/${configname}-${runnumber}.sna"

*.sender[*].numPingApps = 1
*.sender[*].pingApp[0].destAddr = "recip"
*.sender[*].pingApp[0].startTime = 10s
*.sender[*].pingApp[0].stopTime = 10.5s
*.sender[*].pingApp[0].sendInterval = 1s
*.sender[*].pingApp[0].printPing = true

**.internet.networkLayer.delayer.typename = "MatrixCloudDelayer"
**.internet.networkLayer.delayer.config = xmldoc("internetCloud.xml")

**.numSenders = 10

%#--------------------------------------------------------------------------------------------------------------
%file: internetCloud.xml

<internetCloud symmetric="true">
  <parameters name="good">
    <traffic src="sender[0]" dest="recip" delay="900ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[1]" dest="recip" delay="850ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[2]" dest="recip" delay="800ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[3]" dest="recip" delay="750ms" datarate="1Mbps" drop="true" />
    <traffic src="sender[4]" dest="recip" delay="700ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[5]" dest="recip" delay="650ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[6]" dest="recip" delay="600ms" datarate="1Mbps" drop="true" />
    <traffic src="sender[7]" dest="recip" delay="550ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[8]" dest="recip" delay="500ms" datarate="1Mbps" drop="false" />
    <traffic src="sender[9]" dest="recip" delay="450ms" datarate="1Mbps" drop="false" />
<!--
    <traffic src="**" dest="**" delay="10ms+truncnormal(100ms,20ms)" datarate="uniform(100kbps,500kbps)" drop="uniform(0.01, 0.05)" />
-->
  </parameters>
</internetCloud>

%#--------------------------------------------------------------------------------------------------------------
%#--------------------------------------------------------------------------------------------------------------
%contains-regex: stdout
[^C].*
CloudAndHosts\.sender\[9\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[8\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[7\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[5\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[4\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[2\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[1\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
CloudAndHosts\.sender\[0\]\.pingApp\[0\]: reply of 60 bytes from 10\.0\.0.\d+ icmp_seq=0 ttl=\d+ time=.*
[^C].*
%#--------------------------------------------------------------------------------------------------------------
%not-contains: stdout
undisposed object:
%not-contains: stdout
-- check module destructor
%#--------------------------------------------------------------------------------------------------------------
