Merge "Add codes to build and run CP in vSPGWC playbook"
diff --git a/xos/synchronizer/steps/roles/interface_config/tasks/main.yml b/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
index 7aae3d2..ec6e96d 100644
--- a/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
+++ b/xos/synchronizer/steps/roles/interface_config/tasks/main.yml
@@ -38,16 +38,52 @@
     src=cp_config.cfg.j2
     dest="{{source_path}}/config/cp_config.cfg" owner=root group=root mode=755
 
-#- name: Build ngic
-#  become: yes
-#  shell: "{{ item }}"
-#  args:
-#    chdir: "{{ source_path }}"
-#  environment:
-#    NG_CORE: "{{ source_path }}"
-#    RTE_SDK: "{{ source_path }}/dpdk"
-#    RTE_TARGET: "x86_64-native-linuxapp-gcc"
-#    HYPERSCANDIR: "/root/ngic/hyperscan-4.1.0"
-#  with_items:
-#    - make
-#    - /root/ngic/cp/run.sh -c 1
+- name: change CPU hexacode in run.sh file
+  become: yes
+  template:
+    src=run.sh.j2
+    dest="{{source_path}}/cp/run.sh" owner=root group=root mode=755
+
+- name: set hugepage parameter
+  become: yes
+  shell: "echo vm.nr_hugepages=512 >> /etc/sysctl.conf"
+
+- name: adjust changed hugepage parameter
+  become: yes
+  shell: "sysctl -p"
+
+- name: make run with log file
+  become: yes
+  template:
+    src=run_with_log.sh.j2
+    dest="{{source_path}}/cp/run_with_log.sh" owner=root group=root mode=755
+
+# Must wait until vSPGW-U successfully runs ngic dp software
+# Must insert codes to wait until above
+# Following codes will be uncommented when vSPGWU playbook is completed
+#- name: wait until vSPGW-U runs successfully
+#  wait_for:
+#    timeout: 1800
+#    path: "{{ source_path }}/cp/finish_vspgwu_flag"
+#    msg: Timeout to wait that vSPGWU runs successfully
+
+# This part should be run after user plane (data plane) runs in vSPGW-U
+# If not, vSPGW-U and vSPGW-C will not be working well
+- name: build and run vspgwc
+  become: yes
+  shell: "{{ item }}"
+  args:
+    chdir: "{{ source_path }}/cp"
+  environment:
+    NG_CORE: "{{ source_path }}"
+    RTE_SDK: "{{ source_path }}/dpdk"
+    RTE_TARGET: "x86_64-native-linuxapp-gcc"
+    HYPERSCANDIR: "/root/ngic/hyperscan-4.1.0"
+  with_items:
+    - make clean
+    - make
+    - ./run_with_log.sh
+
+- name: write flag
+  become: yes
+  shell: "echo 1 > {{source_path}}/cp/finish_flag"
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/interface_config/templates/run.sh.j2 b/xos/synchronizer/steps/roles/interface_config/templates/run.sh.j2
new file mode 100644
index 0000000..2323a5a
--- /dev/null
+++ b/xos/synchronizer/steps/roles/interface_config/templates/run.sh.j2
@@ -0,0 +1,54 @@
+#! /bin/bash
+# Copyright 2017-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.
+
+source ../config/cp_config.cfg
+
+APP_PATH="./build"
+APP="ngic_controlplane"
+
+ARGS="-c {{ cpu_hexacode }} -n 4 --socket-mem $MEMORY,0 --file-prefix cp --no-pci -- \
+  -s $S11_SGW_IP          \
+  -m $S11_MME_IP          \
+  -w $S1U_SGW_IP          \
+  -i $IP_POOL_IP          \
+  -p $IP_POOL_MASK        \
+  -a $APN"
+
+USAGE=$"Usage: run.sh [ debug | log ]
+	debug:	executes $APP under gdb
+	log:	executes $APP with logging enabled to date named file under
+		$APP_PATH/logs. Requires Control-C to exit even if $APP exits"
+
+if [ -z "$1" ]; then
+
+	$APP_PATH/$APP $ARGS
+
+elif [ "$1" == "log" ]; then
+
+	if [ "$#" -eq "2" ]; then
+		FILE="${FILE/.log/.$2.log}"
+		echo "logging as $FILE"
+	fi
+	trap "killall $APP; exit" SIGINT
+	stdbuf -oL -eL $APP_PATH/$APP $ARGS </dev/null &>$FILE & tail -f $FILE
+
+elif [ "$1" == "debug" ];then
+
+	GDB_EX="-ex 'set print pretty on'"
+	gdb $GDB_EX --args $APP_PATH/$APP $ARGS
+
+else
+	echo "$USAGE"
+fi
\ No newline at end of file
diff --git a/xos/synchronizer/steps/roles/interface_config/templates/run_with_log.sh.j2 b/xos/synchronizer/steps/roles/interface_config/templates/run_with_log.sh.j2
new file mode 100644
index 0000000..f286205
--- /dev/null
+++ b/xos/synchronizer/steps/roles/interface_config/templates/run_with_log.sh.j2
@@ -0,0 +1 @@
+./run.sh > results &
\ No newline at end of file
diff --git a/xos/synchronizer/steps/vspgwctenant_playbook.yaml b/xos/synchronizer/steps/vspgwctenant_playbook.yaml
index 9fc240a..11b6ae2 100644
--- a/xos/synchronizer/steps/vspgwctenant_playbook.yaml
+++ b/xos/synchronizer/steps/vspgwctenant_playbook.yaml
@@ -32,6 +32,7 @@
     - s11_mme_ip: {{ s11_mme_ip }}
     - s1u_sgw_ip: {{ s1u_sgw_ip }}
     - scenario: {{ scenario }}
+    - cpu_hexacode: "0x0e"
 
   roles:
     - interface_config