Merge "Redefine Routing"
diff --git a/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh b/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh
new file mode 100644
index 0000000..e494028
--- /dev/null
+++ b/plans/dcaegen2-collectors-datafile/Functional-suite/setup.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+#Stop all running containers
+docker kill "$(docker ps -q -a)"
+docker rm "$(docker ps -q -a)"
+
+# Clone Simulators for DFC from integration repo. 
+mkdir -p $WORKSPACE/archives/dfc
+cd $WORKSPACE/archives/dfc
+git clone --depth 1 https://gerrit.onap.org/r/integration -b master   #How to make this version controlled for Dublin, El Alto etc etc
+
+#Location of all individual simulators for DFC
+SIM_ROOT=$WORKSPACE/archives/dfc/integration/test/mocks/datafilecollector-testharness
+#Location of the above simulators when run as a group. For start+config and stop.
+SIMGROUP_ROOT=$SIM_ROOT/simulator-group
+
+#Default IP for all containers
+SIM_IP="127.0.0.1"
+#Location of script to start and stop dfc
+DFC_ROOT=$WORKSPACE/scripts/dcaegen2-collectors-datafile/dfc-management
+
+#Make the env vars availble to the robot scripts
+ROBOT_VARIABLES="-v SIMGROUP_ROOT:${SIMGROUP_ROOT} -v SIM_IP:${SIM_IP} -v DFC_ROOT:${DFC_ROOT}"
+
+#Build needed simulator images. DR and MR simulators
+
+cd $SIM_ROOT/mr-sim
+
+docker build -t mrsim:latest .
+
+cd $SIM_ROOT/dr-sim
+
+docker build -t drsim_common:latest .
+
+#Prepare the ftp simulator files.
+
+cd $SIMGROUP_ROOT
+
+#Copy ftp config for the ftp servers
+cp -r ../ftps-sftp-server/configuration .
+cp -r ../ftps-sftp-server/tls .
+
+#All containers will be started and stopped via the robot tests.
+
diff --git a/plans/dcaegen2-collectors-datafile/Functional-suite/teardown.sh b/plans/dcaegen2-collectors-datafile/Functional-suite/teardown.sh
new file mode 100644
index 0000000..1a0ec6e
--- /dev/null
+++ b/plans/dcaegen2-collectors-datafile/Functional-suite/teardown.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+#Stop dfc
+
+kill-instance.sh dfc_app
+
+#Stop all simulators 
+
+kill-instance.sh dfc_dr-sim
+kill-instance.sh dfc_dr-redir-sim
+kill-instance.sh dfc_mr-sim
+kill-instance.sh dfc_sftp-server
+kill-instance.sh dfc_ftpes-server-vsftpd
\ No newline at end of file
diff --git a/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt b/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt
new file mode 100755
index 0000000..30d7a2d
--- /dev/null
+++ b/plans/dcaegen2-collectors-datafile/Functional-suite/testplan.txt
@@ -0,0 +1,3 @@
+# Test suites are relative paths under [integration/csit.git]/tests/.
+# Place the suites in run order.
+dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite
diff --git a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/setup.sh b/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/setup.sh
index af24717..8f50d00 100644
--- a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/setup.sh
+++ b/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/setup.sh
@@ -1,21 +1,8 @@
 #!/usr/bin/env bash
 
-docker-compose up -d
-
-
-DFC=$(docker ps -a -q --filter="name=dfc")
-
-# Wait for initialization of Docker contaienr for DFC
-for i in {1..10}; do
-if [ $(docker inspect --format '{{ .State.Running }}' $DFC) ]
-then
-   echo "DFC Container Running"
-   break
-else
-   echo sleep $i
-   sleep $i
-fi
-done
+DFC_ROOT=$WORKSPACE/scripts/dcaegen2-collectors-datafile/dfc-management
+cd $DFC_ROOT
+source dfc-start.sh
 
 #Wait for initialization of the DFC service
 for i in {1..10}; do
diff --git a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/teardown.sh b/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/teardown.sh
index bb0ac92..97ef403 100644
--- a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/teardown.sh
+++ b/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/teardown.sh
@@ -1,3 +1,3 @@
 #!/usr/bin/env bash
 
-kill-instance.sh dfc
\ No newline at end of file
+kill-instance.sh dfc_app
\ No newline at end of file
diff --git a/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-kill.sh b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-kill.sh
new file mode 100755
index 0000000..39f2d0d
--- /dev/null
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-kill.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+
+docker kill dfc_app
\ No newline at end of file
diff --git a/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-restart.sh b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-restart.sh
new file mode 100755
index 0000000..ebc28f4
--- /dev/null
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-restart.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+#Restart DFC app 
+
+docker restart dfc_app
+
+DFC_APP="$(docker ps -q --filter='name=dfc_app')"
+
+
+#Wait for initialization of docker containers for dfc app and all simulators
+for i in {1..10}; do
+if [ $(docker inspect --format '{{ .State.Running }}' $DFC_APP) ]
+ then
+   echo "DFC app Running"
+   break
+ else
+   echo sleep $i
+   sleep $i
+ fi 
+done
\ No newline at end of file
diff --git a/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh
new file mode 100755
index 0000000..4bec4ff
--- /dev/null
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/dfc-start.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+#Start DFC app 
+
+docker-compose up -d 
+
+DFC_APP="$(docker ps -q --filter='name=dfc_app')"
+
+#Wait for initialization of docker containers for dfc app and all simulators
+for i in {1..10}; do
+if [ $(docker inspect --format '{{ .State.Running }}' $DFC_APP) ]
+ then
+   echo "DFC app Running"
+   break
+ else
+   echo sleep $i
+   sleep $i
+ fi 
+done
+
diff --git a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/docker-compose.yml b/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
similarity index 77%
rename from plans/dcaegen2-collectors-datafile/ManagementInterface-suite/docker-compose.yml
rename to scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
index b95842b..28dfbbf 100644
--- a/plans/dcaegen2-collectors-datafile/ManagementInterface-suite/docker-compose.yml
+++ b/scripts/dcaegen2-collectors-datafile/dfc-management/docker-compose.yml
@@ -1,8 +1,9 @@
 version: '2'
 services:
   dfc:
+    network_mode: "host"
     image: nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:latest
-    container_name: dfc
+    container_name: dfc_app
     ports:
       - "8100:8100"
       - "8433:8433"
diff --git a/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot b/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot
new file mode 100644
index 0000000..a113537
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/resources/common-keywords.robot
@@ -0,0 +1,18 @@
+*** Settings ***
+Library		OperatingSystem
+Library		RequestsLibrary
+Library		Process
+
+*** Variables ***
+
+${CLI_MRSIM_CTR_REQUESTS}                  curl http://${SIM_IP}:2222/ctr_requests
+${CLI_MRSIM_CTR_RESPONSES}                 curl http://${SIM_IP}:2222/ctr_responses
+${CLI_MRSIM_CTR_FILES}                     curl http://${SIM_IP}:2222/ctr_unique_files
+
+*** Keywords ***
+
+MR Sim Emitted Files Equal
+	[Documentation]				Verify that the number of emitted unique files are equal to a target value    
+	[Arguments]            		${target_ctr_value}
+    ${resp}=					Run Process     ${CLI_MRSIM_CTR_FILES}  shell=yes
+    Should Be Equal As Strings  ${resp.stdout}  ${target_ctr_value}
\ No newline at end of file
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot
new file mode 100755
index 0000000..a59fec6
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/FuncSingleFile.robot
@@ -0,0 +1,89 @@
+*** Settings ***
+Library		OperatingSystem
+Library		RequestsLibrary
+Library		Process
+
+Resource	../../resources/common-keywords.robot
+
+*** Variables ***
+
+
+*** Test Cases ***
+
+######### Single file, SFTP
+
+Verify single event with single 1MB SFTP file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_1
+	[Documentation]					Verify single event with single SFTP 1MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc100
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+Verify single event with single 5MB SFTP file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_2
+	[Documentation]					Verify single event with single SFTP 5MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc101
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+Verify single event with single 50MB SFTP file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_3
+	[Documentation]					Verify single event with single SFTP 50MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc102
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+
+######### Single file, FTPS
+
+Verify single event with single 1MB FTPS file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_10
+	[Documentation]					Verify single event with single FTPS 1MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc200
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+Verify single event with single 5MB FTPS file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_11
+	[Documentation]					Verify single event with single FTPS 5MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc201
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+Verify single event with single 50MB FTPS file. From event poll to published file
+	[TAGS]							DFC_FUNCTIONAL_12
+	[Documentation]					Verify single event with single FTPS 50MB file from event poll to published file.
+    Set Environment Variable  		MR_TC           --tc202
+    ${cli_cmd_output}=          	Run Process     ./simulators-start.sh    cwd=${SIMGROUP_ROOT}
+	MR Sim Emitted Files Equal    	0													                                #Verify 0 file emitted from MR sim
+	${cli_cmd_output}=          	Run Process		${DFC_ROOT}/dfc-start.sh  cwd=${DFC_ROOT}
+	Wait Until Keyword Succeeds	1 minute	10 sec	MR Sim Emitted Files Equal    	1	                                #Verify 1 file emitted from MR sim
+	${cli_cmd_output}=				Run Process     ${SIMGROUP_ROOT}/simulators-kill.sh
+	${cli_cmd_output}=				Run Process     ${DFC_ROOT}/dfc-kill.sh
+
+
+*** Keywords ***
+
+
+    
+    
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/__init__.robot b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/__init__.robot
new file mode 100755
index 0000000..dc2d837
--- /dev/null
+++ b/tests/dcaegen2-collectors-datafile/testsuites/Functional-Single-File-suite/__init__.robot
@@ -0,0 +1,2 @@
+*** Settings ***
+Documentation    DFC Functional test suite. Single event with single file.
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot
index 7020042..875228b 100755
--- a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot
+++ b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/MI.robot
@@ -1,12 +1,14 @@
 *** Settings ***
 Library       OperatingSystem
 Library       RequestsLibrary
+Library  Process
 
 *** Variables ***
 
 
 *** Test Cases ***
 
+
 Heartbeat test
     [Documentation]    Check DFC heartbeat
     Heartbeat    	   I'm living
diff --git a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot
index c5ea9c6..6dc1eed 100755
--- a/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot
+++ b/tests/dcaegen2-collectors-datafile/testsuites/ManagementInterface-suite/__init__.robot
@@ -1,2 +1,2 @@
 *** Settings ***
-Documentation    Management Interface suite
+Documentation    DFC Management Interface suite