Complete all the code and files required to run ApexLake 01/5201/4
authorVincenzo Riccobene <vincenzox.m.riccobene@intel.com>
Thu, 24 Dec 2015 14:08:58 +0000 (14:08 +0000)
committerJörgen Karlsson <jorgen.w.karlsson@ericsson.com>
Sun, 27 Dec 2015 23:19:37 +0000 (23:19 +0000)
Inludes the last files required by ApexLake for a complete execution.

JIRA: YARDSTICK-35

Change-Id: I4315b8081554c8fad98c8fa72f9e2796ecb9360b
Signed-off-by: Vincenzo Riccobene <vincenzox.m.riccobene@intel.com>
25 files changed:
yardstick/vTC/apexlake/MANIFEST.in [new file with mode: 0644]
yardstick/vTC/apexlake/README.md [new file with mode: 0644]
yardstick/vTC/apexlake/apexlake.conf [new file with mode: 0644]
yardstick/vTC/apexlake/heat_templates/stress_workload.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/heat_templates/vTC.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/setup.py [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/common/conf.cfg [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/common/file_replacement.txt [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait.tmp [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/benchmark_1.csv [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/metadata.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_experiments/results_benchmark_1.csv [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait.tmp [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml.json [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml [new file with mode: 0644]
yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml.json [new file with mode: 0644]

diff --git a/yardstick/vTC/apexlake/MANIFEST.in b/yardstick/vTC/apexlake/MANIFEST.in
new file mode 100644 (file)
index 0000000..57649e5
--- /dev/null
@@ -0,0 +1,7 @@
+recursive-include bin *.py
+recursive-include benchmarks *.py
+recursive-include heat_templates *
+recursive-include packet_generators *
+recursive-include etc *.cfg *.json
+include *.py
+include README.md
diff --git a/yardstick/vTC/apexlake/README.md b/yardstick/vTC/apexlake/README.md
new file mode 100644 (file)
index 0000000..ca4f4de
--- /dev/null
@@ -0,0 +1,116 @@
+Welcome to ApexLake's documentation!
+====================================
+ApexLake is a framework that provides automatic execution of experiment and related data collection to help
+the user validating the infrastructure from a Virtual Network Function perspective.
+
+Install framework and dependencies
+----------------------------------
+Before to start the framework, a set of dependencies are required.
+In the following a set of instructions to be executed on the Linux shell to install dependencies and configure the environment.
+
+1. Install dependencies
+    - # apt-get install python-dev
+    - # apt-get install python-pip
+    - # apt-get install python-mock
+    - # apt-get install tcpreplay
+    - # apt-get install libpcap-dev
+
+2. Install the framework on the system
+    - # python setup.py install
+
+3. Source OpenStack openrc file
+    - $ source openrc
+
+4. Create 2 Networks (and subnets) based on VLANs (provider:network_type = vlan) in Neutron
+    - $ neutron net-create apexlake_inbound_network --provider:network_type vlan --provider:physical_network physnet1
+    - $ neutron subnet-create apexlake_inbound_network 192.168.0.0/24 --name apexlake_inbound_subnet
+    - $ neutron net-create apexlake_outbound_network --provider:network_type vlan --provider:physical_network physnet1
+    - $ neutron subnet-create apexlake_outbound_network 192.168.1.0/24 --name apexlake_outbound_subnet
+
+5. Insert VLAN tags related to the networks have to ApexLake, either:
+    - into the "conf.cfg" configuration file, or
+    - through the Python API.
+
+
+Install and configure DPDK Pktgen
++++++++++++++++++++++++++++++++++
+The execution of the framework is based on DPDK Pktgen.
+If DPDK Pktgen has not been installed on the system by the user, it is necessary to download, compile and configure it.
+The user can create a directory and download the dpdk packet generator source code:
+    - $ cd experimental_framework/libraries
+    - $ mkdir dpdk_pktgen
+    - $ git clone https://github.com/pktgen/Pktgen-DPDK.git
+
+For the installation and configuration of DPDK and DPDK Pktgen please follow the official DPDK Pktgen README file.
+Once the installation is completed, it is necessary to load the DPDK kernel driver, as follow:
+    - # insmod uio
+    - # insmod DPDK_DIR/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+
+It is required to properly set the configuration file according to the system on Pktgen runs on.
+An example is provided in the following:
+
+    - [PacketGen]
+    - packet_generator = dpdk_pktgen
+    - pktgen_directory = /home/user/apexlake/experimental_framework/libraries/dpdk_pktgen/dpdk/examples/pktgen/
+        -- This is the directory where the packet generator is installed (if the user previously installed dpdk-pktgen, it is required to provide the director where it is installed).
+    - dpdk_directory = /home/user/apexlake/experimental_framework/libraries/Pktgen-DPDK/dpdk/
+        -- This is the directory where DPDK is installed
+    - program_name = app/app/x86_64-native-linuxapp-gcc/pktgen
+        -- This is the name of the dpdk-pktgen program that starts the packet generator
+    - coremask = 1f
+        -- DPDK coremask (see DPDK-Pktgen readme)
+    - memory_channels = 3
+        -- DPDK memory channels (see DPDK-Pktgen readme)
+    - name_if_1 = p1p1
+        -- Name of the interface of the pktgen to be used to send traffic
+    - name_if_2 = p1p2
+        -- Name of the interface of the pktgen to be used to receive traffic
+    - bus_slot_nic_1 = 01:00.0
+        -- PCI bus address correspondent to the if_1
+    - bus_slot_nic_2 = 01:00.1
+        -- PCI bus address correspondent to the if_2
+
+
+To find the parameters related to names of the NICs and addresses of the PCI buses the user may find useful to run the DPDK tool nic_bind as follows:
+
+    - $ DPDK_DIR/tools/dpdk_nic_bind.py --status
+
+which lists the NICs available on the system, show the available drivers and bus addresses for each interface.
+Please make sure to select NICs which are DPDK compatible.
+
+Installation and configuration of smcroute
+++++++++++++++++++++++++++++++++++++++++++
+The user is required to install smcroute which is used by the framework to support multicast communications.
+In the following a list of commands to be ran to download and install smroute is provided.
+
+    - $ cd ~
+    - $ git clone https://github.com/troglobit/smcroute.git
+    - $ cd smcroute
+    - $ sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+    - $ sed -i 's/automake-1.11/automake/g' ./autogen.sh
+    - $ ./autogen.sh
+    - $ ./configure
+    - $ make
+    - $ sudo make install
+    - $ cd ..
+
+It is also required to create a configuration file using the following command:
+
+    - $ SMCROUTE_NIC=(name of the nic)
+
+where name of the nic is the name used previously for the variable "name_if_2".
+In the example it would be:
+
+    - $ SMCROUTE_NIC=p1p2
+
+Then create the smcroute configuration file /etc/smcroute.conf
+
+    - $echo mgroup from $SMCROUTE_NIC group 224.192.16.1 > /etc/smcroute.conf
+
+
+Experiment using SR-IOV configuration on the compute node
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+In order to enable SR-IOV interfaces on the physical NIC of the compute node, a compatible NIC is required.
+NIC configuration depends on model and vendor. After proper configuration to support SR-IOV, a proper configuration of openstack is required.
+For further information, please look at the following link:
+https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking
diff --git a/yardstick/vTC/apexlake/apexlake.conf b/yardstick/vTC/apexlake/apexlake.conf
new file mode 100644 (file)
index 0000000..56937d2
--- /dev/null
@@ -0,0 +1,69 @@
+[General]
+## template_base is the name of the base template from which generate all the others
+#template_base_name = vTC.yaml
+## Benchmarks to be executed on the VNF under test (uncomment one of the following)
+#benchmarks = instantiation_validation_benchmark.InstantiationValidationBenchmark
+#benchmarks = instantiation_validation_noisy_neighbors_benchmark.InstantiationValidationNoisyNeighborsBenchmark
+#benchmarks = rfc2544_throughput_benchmark.RFC2544ThroughputBenchmark
+#benchmarks = multi_tenancy_throughput_benchmark.MultiTenancyThroughputBenchmark
+## Number of iterations
+#iterations = 1
+#debug = true
+
+
+[OpenStack]
+## ip_controller is the IP address of the OpenStack Controller
+#ip_controller = 10.2.1.1
+## Heat URL is the URL for the Heat endpoint
+#heat_url = http://IP_ADDRESS_CONTROLLER:8004/v1/TENANT_ID
+## user is the OpenStack user name
+#user = admin
+## password is the OpenStack password
+#password = password
+## auth_uri is the authentication URI provided by keystone
+#auth_uri = http://IP_ADDRESS_CONTROLLER:5000/v2.0
+## project is the name of the project on which create the VNF instances
+#project = demo
+
+
+[Experiment-VNF]
+## List of all the variables and the values that will be tested by the framework
+#VNIC_TYPE =   @string "direct", "normal"
+#VTC_FLAVOR =  @string "m1.small" "m1.medium" "m1.large"
+
+
+[InfluxDB]
+influxdb_ip_address = 192.168.1.1
+influxdb_port = 8086
+influxdb_db_name = database
+
+
+[PacketGen]
+packet_generator = dpdk_pktgen
+pktgen_directory = /root/programs/Pktgen-DPDK/dpdk/examples/pktgen/
+dpdk_directory = /root/programs/Pktgen-DPDK/dpdk/
+program_name = app/app/x86_64-native-linuxapp-gcc/pktgen
+coremask = 1f
+memory_channels = 3
+bus_slot_nic_1 = 01:00.0
+bus_slot_nic_2 = 01:00.1
+name_if_1 = p2p1
+name_if_2 = p2p2
+
+
+[Deployment-parameters]
+#default_net =        monitoring
+#default_subnet =     monitoring_subnet
+#source_net =         inbound_traffic_network
+#source_subnet =      inbound_traffic_subnet
+#destination_net =    destination_B_network
+#destination_subnet = destination_B_subnet
+#destination_subnet = destination_B_subnet
+#key_name = destination_B_subnet
+
+
+[Testcase-parameters]
+#packet_size = 1280
+#throughput = 1
+#vlan_sender = 1000
+#vlan_receiver = 1001
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/heat_templates/stress_workload.yaml b/yardstick/vTC/apexlake/heat_templates/stress_workload.yaml
new file mode 100644 (file)
index 0000000..1a2f7db
--- /dev/null
@@ -0,0 +1,112 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   nic_type:
+      type: string
+      default: normal
+   name:
+      type: string
+      default: cpu_stress
+   cores:
+       type: string
+   memory:
+       type: string
+
+resources:
+   internal_net:
+      type: OS::Neutron::Net
+      properties:
+         name: traffic_network
+   internal_subnet:
+      type: OS::Neutron::Subnet
+      properties:
+         network_id: { get_resource: internal_net }
+         cidr: 10.100.0.0/24
+
+   router:
+      properties:
+         admin_state_up: true
+         name: router
+      type: OS::Neutron::Router
+
+   router_gateway:
+      properties:
+         network: external
+         router_id: { get_resource: router }
+      type: OS::Neutron::RouterGateway
+
+   router_interface_0:
+      properties:
+         router_id: { get_resource: router }
+         subnet_id: { get_resource: internal_subnet }
+      type: OS::Neutron::RouterInterface
+
+   vm1_port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_resource: internal_net }
+         binding:vnic_type: { get_param: nic_type }
+         fixed_ips:
+            - subnet: { get_resource: internal_subnet }
+
+   flavor_1:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 4096
+         vcpus: 4
+
+   vm1:
+      type: OS::Nova::Server
+      properties:
+         name: traffic_vm1
+         key_name: test
+         image: ubuntu1404
+         user_data:
+            str_replace:
+               template: |
+                  #!/bin/sh
+                  echo "Creating custom user..."
+                  useradd clouduser -g admin -s /bin/bash -m
+                  echo clouduser:secrete | chpasswd
+                  echo "Enabling ssh password login..."
+                  sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                  service ssh restart
+                  sleep 1
+
+                  ifconfig eth1 up
+                  dhclient eth1
+
+                  sed -i 's/localhost/localhost traffic_vm1/g' /etc/hosts
+                  touch /etc/resolfconf/resolv.conf.d/tail
+                  echo 'nameserver 8.8.8.8' > /etc/resolvconf/resolv.conf.d/tail
+                  resolvconf -u
+
+                  # Installation of stress
+                  apt-get install -y stress
+
+                  cd /home/clouduser
+                  # Setup merlin
+                  rm -rf merlin
+                  mkdir merlin
+                  cd merlin
+                  wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                  apt-get install -y zip
+                  unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                  ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                  ./updateConfiguration.py ./instrumentation.cfg tags role=cpu_stress
+                  nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                  cd ..
+
+                  # workload setup
+                  nohup stress -c #CORES --vm-bytes #MEMORY
+
+               params:
+                  $NAME: { get_param: name }
+                  $CORES: { get_param: cores }
+                  $MEMORY: { get_param: memory }
+
+         flavor: { get_resource: flavor_1 }
+         networks:
+            - port: { get_resource: vm1_port_1 }
diff --git a/yardstick/vTC/apexlake/heat_templates/vTC.yaml b/yardstick/vTC/apexlake/heat_templates/vTC.yaml
new file mode 100644 (file)
index 0000000..e0163e8
--- /dev/null
@@ -0,0 +1,167 @@
+heat_template_version: 2014-10-16
+description: HOT template to deploy a vitual Traffic Classifier
+
+parameters:
+  default_net:
+    type: string
+  default_subnet:
+    type: string
+  source_net:
+    type: string
+  source_subnet:
+    type: string
+  destination_net:
+    type: string
+  destination_subnet:
+    type: string
+  timeout:
+    type: number
+    description: Timeout for WaitCondition, depends on your image and environment
+    default: 2000
+
+resources:
+  wait_condition:
+    type: OS::Heat::WaitCondition
+    properties:
+      handle: {get_resource: wait_handle}
+      count: 1
+      timeout: {get_param: timeout}
+
+  wait_handle:
+    type: OS::Heat::WaitConditionHandle
+
+  ### DEFAULT NETWORK FOR MNGM
+  port_1:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_param: default_net }
+      binding:vnic_type: normal
+      fixed_ips:
+        - subnet: { get_param: default_subnet }
+
+  ### NETWORK FOR RECEIVING TRAFFIC
+  port_2:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_param: source_net }
+      binding:vnic_type: #vnic_type
+      fixed_ips:
+        - subnet: { get_param: source_subnet }
+
+  ### NETWORK FOR SENDING TRAFFIC
+  port_3:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_param: destination_net }
+      binding:vnic_type: #vnic_type
+      fixed_ips:
+        - subnet: { get_param: destination_subnet }
+
+  server:
+    type: OS::Nova::Server
+    properties:
+      name: vTC
+      #key_name: { get_param: key_name }
+      image: ubuntu1404
+      user_data:
+        str_replace:
+          template: |
+            #!/bin/sh
+            # Creation of a user
+            echo "Creating custom user..."
+            useradd clouduser -g admin -s /bin/bash -m
+            echo clouduser:secrete | chpasswd
+            echo "Enabling ssh password login..."
+            sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+            service ssh restart
+            sleep 1
+
+            # wake up interfaces
+            ifconfig eth1 up
+            ifconfig eth2 up
+            dhclient eth1
+            dhclient eth2
+
+            # Install vTC Dependencies
+            apt-get update
+            apt-get install -y git build-essential gcc libnuma-dev bison flex byacc libjson0-dev libcurl4-gnutls-dev jq dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+            apt-get install -y byacc libtool libcurl4-openssl-dev
+
+            sed -i 's/localhost/localhost vtc/g' /etc/hosts
+            cd /home/clouduser
+
+            # Setup multicast
+            echo mgroup from eth1 group 224.192.16.1 > /etc/smcroute.conf
+            git clone https://github.com/troglobit/smcroute.git
+            cd smcroute
+            sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+            sed -i 's/automake-1.11/automake/g' ./autogen.sh
+            ./autogen.sh
+            ./configure
+            make
+            make install
+            cd ..
+            touch multicast.sh
+            echo "#!/bin/bash" > multicast.sh
+            echo "while [ true ]" >> multicast.sh
+            echo "do" >> multicast.sh
+            echo "  smcroute -k" >> multicast.sh
+            echo "  smcroute -d" >> multicast.sh
+            echo "  sleep 50" >> multicast.sh
+            echo "done" >> multicast.sh
+            chmod +x multicast.sh
+            ./multicast.sh &
+
+            rm resp.json
+            curl -X POST -u "mPkgwvJPsTFS8hYmHk:SDczcrK4cvnkMRWSEchB3ANcWbqFXqPx" https://bitbucket.org/site/oauth2/access_token -d grant_type=refresh_token -d refresh_token=38uFQuhEdPvCTbhc7k >> resp.json
+            access_token=`jq -r '.access_token' resp.json`
+            git clone https://x-token-auth:${access_token}@bitbucket.org/akiskourtis/vtc.git
+            cd vtc
+            git checkout -b stable
+            #Build nDPI library
+            cd nDPI
+            NDPI_DIR=$(pwd)
+            echo $NDPI_DIR
+            NDPI_INCLUDE=$(pwd)/src/include
+            echo $NDPI_INCLUDE
+            ./autogen.sh
+            ./configure
+            make
+            make install
+
+            #Build PF_RING library
+            cd ..
+            cd PF_RING
+            make
+            #Build PF_RING examples, including the modified pfbridge, with nDPI integrated.
+            cd userland/examples/
+            sed -i 's#EXTRA_LIBS =#EXTRA_LIBS='"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c#' ./Makefile
+            sed -i 's# -Ithird-party# -Ithird-party/ -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'#' ./Makefile
+            echo $NDPI_DIR
+            make
+            cd ../..
+            cd ..
+            cd ..
+
+            # To use PF_RING driver use the following
+            #sudo rmmod pf_ring
+            #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=16384 enable_debug=1 quick_mode=1 enable_tx_capture=0
+            #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+            sleep 5
+
+            # To use the Linux kernel driver use the following
+            cd /home/clouduser/
+            sudo nohup ./vtc/nDPI/example/ndpiReader -i eth1 -a eth2 &
+            sleep 5
+
+            curl --data-ascii "{\"classification_rules\":[{\"RuleId\":\"1\",\"ToS\":\"16\"}]}" http://localhost:9999/classifier/classification_rules/224.192.16.1 &
+            wc_notify --data-binary '{"status": "SUCCESS"}'
+          params:
+            wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+            #$IP_FAMILY: { get_param: ip_family }
+      flavor: #vtc_flavor
+      networks:
+        - port: { get_resource: port_1 }
+        - port: { get_resource: port_2 }
+        - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/setup.py b/yardstick/vTC/apexlake/setup.py
new file mode 100644 (file)
index 0000000..e33b5bf
--- /dev/null
@@ -0,0 +1,38 @@
+"""
+Experimental Framework
+"""
+
+from distutils.core import setup
+
+
+# TODO: Add instruction to compile the test_sniff
+
+setup(name='apexlake',
+      version='1.0',
+      description='Framework to automatically run experiments/benchmarks '
+                  'with VMs within OpenStack environments',
+      author='Intel Research and Development Ireland Ltd',
+      author_email='vincenzo.m.riccobene@intel.com',
+      license='Apache 2.0',
+      url='www.intel.com',
+      packages=['experimental_framework',
+                'experimental_framework.benchmarks',
+                'experimental_framework.packet_generators',
+                'experimental_framework.libraries',
+                'experimental_framework.constants'],
+      include_package_data=True,
+      package_data={
+          'experimental_framework': [
+              'packet_generators/dpdk_pktgen/*.lua',
+              'packet_generators/pcap_files/*.pcap',
+              'packet_generators/pcap_files/*.sh',
+              'libraries/packet_checker/*'
+          ]
+      },
+      data_files=[
+          ('/etc/apexlake/', ['apexlake.conf']),
+          ('/etc/apexlake/heat_templates/',
+           ['heat_templates/vTC.yaml']),
+          ('/etc/apexlake/heat_templates/',
+           ['heat_templates/stress_workload.yaml'])
+      ])
diff --git a/yardstick/vTC/apexlake/tests/data/common/conf.cfg b/yardstick/vTC/apexlake/tests/data/common/conf.cfg
new file mode 100644 (file)
index 0000000..9266647
--- /dev/null
@@ -0,0 +1,43 @@
+[General]
+template_base_name = t_name
+benchmarks = b_marks
+iterations = 1
+
+[OpenStack]
+ip_controller =
+heat_url =
+user =
+password =
+auth_uri =
+project =
+
+
+[Experiment-VNF]
+VNIC1_TYPE =      @string  "normal" "direct" @costs '0', '1'
+VNIC2_TYPE =      @string "normal", "direct" @costs '0', '1'
+VCPU =            @numeric "4"
+RAM =             @numeric "4096"
+
+
+[PacketGen]
+packet_generator = dpdk_pktgen
+pktgen_directory = pktgen_dir
+dpdk_directory = dpdk_dir
+program_name = app/app/x86_64-native-linuxapp-gcc/pktgen
+coremask = 1f
+memory_channels = 3
+bus_slot_nic_1 = 01:00.0
+name_if_1 = enp1s0f0
+bus_slot_nic_2 = 01:00.1
+name_if_2 = enp1s0f2
+
+
+[Deployment-parameters]
+param_1 =   val_1
+param_2 =   val_2
+param_3 =   val_3
+param_4 =   val_4
+
+
+[Testcase-parameters]
+test_case_param = 1280
diff --git a/yardstick/vTC/apexlake/tests/data/common/file_replacement.txt b/yardstick/vTC/apexlake/tests/data/common/file_replacement.txt
new file mode 100644 (file)
index 0000000..8122d9a
--- /dev/null
@@ -0,0 +1 @@
+Test for the replacement of strings into a file
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait.tmp b/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait.tmp
new file mode 100644 (file)
index 0000000..aa3959f
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: #vnic_type
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: #vnic_type
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: #ram
+         vcpus: #vcpus
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml b/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml
new file mode 100644 (file)
index 0000000..5788980
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml.json b/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_1.yaml.json
new file mode 100644 (file)
index 0000000..3af9a1c
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "normal", "ram": "1024", "vcpus": "2"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml b/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml
new file mode 100644 (file)
index 0000000..44a81d0
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml.json b/yardstick/vTC/apexlake/tests/data/generated_templates/VTC_base_single_vm_wait_2.yaml.json
new file mode 100644 (file)
index 0000000..9f24689
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "direct", "ram": "1024", "vcpus": "2"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml b/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml
new file mode 100644 (file)
index 0000000..5788980
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml.json b/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_1.yaml.json
new file mode 100644 (file)
index 0000000..3af9a1c
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "normal", "ram": "1024", "vcpus": "2"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml b/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml
new file mode 100644 (file)
index 0000000..44a81d0
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml.json b/yardstick/vTC/apexlake/tests/data/generated_templates/experiment_2.yaml.json
new file mode 100644 (file)
index 0000000..9f24689
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "direct", "ram": "1024", "vcpus": "2"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/benchmark_1.csv b/yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/benchmark_1.csv
new file mode 100644 (file)
index 0000000..f5f2932
--- /dev/null
@@ -0,0 +1,3 @@
+conf_1;conf_3;conf_2;point_4;point_5;point_6;point_1;point_2;point_3\r
+conf_value_1;conf_value_3;conf_value_2;?;?;?;value_1;value_2;value_3\r
+conf_value_1;conf_value_3;conf_value_2;value_4;value_5;value_6;?;?;?\r
diff --git a/yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/metadata.json b/yardstick/vTC/apexlake/tests/data/test_experiments/experiment_1/metadata.json
new file mode 100644 (file)
index 0000000..ff4cebf
--- /dev/null
@@ -0,0 +1 @@
+{"location": "tests/data/experiments/experiment_1/metadata.json", "item_2": "value_2", "item_3": "value_3", "item_1": "value_1"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/test_experiments/results_benchmark_1.csv b/yardstick/vTC/apexlake/tests/data/test_experiments/results_benchmark_1.csv
new file mode 100644 (file)
index 0000000..4662dd2
--- /dev/null
@@ -0,0 +1,5 @@
+conf_5;conf_4;conf_6;conf_1;conf_3;conf_2;point_12;point_10;point_11;point_4;point_5;point_6;point_8;point_9;point_7;point_1;point_2;point_3\r
+?;?;?;conf_value_1;conf_value_3;conf_value_2;?;?;?;?;?;?;?;?;?;value_1;value_2;value_3\r
+?;?;?;conf_value_1;conf_value_3;conf_value_2;?;?;?;value_4;value_5;value_6;?;?;?;?;?;?\r
+conf_value_5;conf_value_4;conf_value_6;?;?;?;?;?;?;?;?;?;value_8;value_9;value_7;?;?;?\r
+conf_value_5;conf_value_4;conf_value_6;?;?;?;value_12;value_10;value_11;?;?;?;?;?;?;?;?;?\r
diff --git a/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait.tmp b/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait.tmp
new file mode 100644 (file)
index 0000000..aa3959f
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: #vnic_type
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: #vnic_type
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: #ram
+         vcpus: #vcpus
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml b/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml
new file mode 100644 (file)
index 0000000..5788980
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml.json b/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_1.yaml.json
new file mode 100644 (file)
index 0000000..3af9a1c
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "normal", "ram": "1024", "vcpus": "2"}
\ No newline at end of file
diff --git a/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml b/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml
new file mode 100644 (file)
index 0000000..44a81d0
--- /dev/null
@@ -0,0 +1,199 @@
+heat_template_version: 2014-10-16
+description: HOT template to create a DPI
+
+parameters:
+   default_net:
+      type: string
+   default_subnet:
+      type: string
+   source_net:
+      type: string
+   source_subnet:
+      type: string
+   destination_net:
+      type: string
+   destination_subnet:
+      type: string
+   internal_net:
+      type: string
+   internal_subnet:
+      type: string
+   node:
+      type: string
+      default: compB
+   name:
+      type: string
+      default: vtc
+   ip_family:
+      type: string
+   timeout:
+      type: number
+      description: Timeout for WaitCondition, depends on your image and environment
+      default: 1000
+
+resources:
+   wait_condition:
+      type: OS::Heat::WaitCondition
+      properties:
+         handle: {get_resource: wait_handle}
+         count: 1
+         timeout: {get_param: timeout}
+
+   wait_handle:
+      type: OS::Heat::WaitConditionHandle
+
+
+   ### DEFAULT NETWORK FOR MERLIN DATA
+   port_1:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: default_net }
+         binding:vnic_type: normal
+         fixed_ips:
+            - subnet: { get_param: default_subnet }
+
+   ### NETWORK FOR RECEIVING TRAFFIC
+   port_2:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: source_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: source_subnet }
+
+   ### NETWORK FOR SENDING TRAFFIC
+   port_3:
+      type: OS::Neutron::Port
+      properties:
+         network: { get_param: destination_net }
+         binding:vnic_type: direct
+         fixed_ips:
+            - subnet: { get_param: destination_subnet }
+
+   flavor:
+      type: OS::Nova::Flavor
+      properties:
+         disk: 20
+         ram: 1024
+         vcpus: 2
+         #extra_specs: { node: { get_param: node }, "hw:cpu_policy": "#core_pinning_enabled", "hw:cpu_threads_policy": "#core_pinning_mode", "hw:mem_page_size": "#hugepages" }
+         extra_specs: { node: { get_param: node } }
+
+   server:
+      type: OS::Nova::Server
+      properties:
+         name: vTC
+         key_name: test
+         image: ubuntu1404
+         user_data:
+                str_replace:
+                    template: |
+                        #!/bin/sh
+
+                        # Creation of a user
+                        NAME=$name
+                        echo "Creating custom user..."
+                        useradd clouduser -g admin -s /bin/bash -m
+                        echo clouduser:secrete | chpasswd
+                        echo "Enabling ssh password login..."
+                        sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+                        service ssh restart
+                        sleep 1
+
+                        # wake up interfaces
+                        ifconfig eth1 up
+                        ifconfig eth2 up
+                        dhclient eth1
+                        dhclient eth2
+
+                        sed -i 's/localhost/localhost vtc/g' /etc/hosts
+                        ip route del 0/0
+                        route add default gw 192.168.200.1
+
+                        AA=$(netstat -ie | grep -B1 $IP_FAMILY | awk '{ print $1 }')
+                        BB=$(echo $AA | awk '{ print $1 }')
+
+                        # Setup Instrumentation Agent
+                        rm -rf cimmaron
+                        mkdir cimmaron
+                        cd cimmaron
+                        apt-get install -y zip
+                        wget http://10.2.1.65/~iolie/merlin/MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        unzip MerlinAgent-12-06-2015-TNovaVM-001.zip
+                        ./updateConfiguration.py ./instrumentation.cfg tags source=tnova_vm
+                        ./updateConfiguration.py ./instrumentation.cfg tags role="$NAME"
+                        nohup ./Agent.py ./instrumentation.cfg >log.out 2>&1 &
+                        cd ..
+
+                        # Setup for PF_RING and bridge between interfaces
+                        apt-get update
+                        apt-get install -y git build-essential gcc libnuma-dev flex byacc libjson0-dev dh-autoreconf libpcap-dev libpulse-dev libtool pkg-config
+
+                        # Setup multicast
+                        echo smcroute -d mgroup from $BB group 224.192.16.1 > /etc/smcroute.conf
+                        cd /home/clouduser/
+                        git clone https://github.com/troglobit/smcroute.git
+                        cd smcroute
+                        sed -i 's/aclocal-1.11/aclocal/g' ./autogen.sh
+                        sed -i 's/automake-1.11/automake/g' ./autogen.sh
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        touch multicast.sh
+                        echo "#!/bin/bash" > multicast.sh
+                        echo "while [ true ]" >> multicast.sh
+                        echo "do" >> multicast.sh
+                        echo "  smcroute -k" >> multicast.sh
+                        echo "  smcroute -d" >> multicast.sh
+                        echo "  sleep 50" >> multicast.sh
+                        echo "done" >> multicast.sh
+                        chmod +x multicast.sh
+                        ./multicast.sh &
+
+                        # Setup for PF_RING and bridge between interfaces
+                        # Akis Repository
+                        #git clone https://akiskourtis:ptindpi@bitbucket.org/akiskourtis/vtc.git
+                        #cd vtc
+                        #git checkout stable
+
+                        # Intel Repository
+                        git clone http://vincenzox.m.riccobene%40intel.com:vincenzo@134.191.243.6:8081/t-nova/vtc_master.git
+                        cd vtc_master
+
+                        cd nDPI
+                        NDPI_DIR=$(pwd)
+                        echo $NDPI_DIR
+                        NDPI_INCLUDE=$(pwd)/src/include
+                        echo $NDPI_INCLUDE
+                        ./autogen.sh
+                        ./configure
+                        make
+                        make install
+                        cd ..
+                        cd PF_RING
+                        make
+                        cd userland/examples/
+                        sed -i 's/EXTRA_LIBS =/EXTRA_LIBS = '"${NDPI_DIR}"'/src/lib/.libs/libndpi.a -ljson-c/g' ./Makefile
+                        sed -i 's/ -Ithird-party/ -Ithird-party -I'"$NDPI_INCLUDE"' -I'"$NDPI_DIR"'/g' ./Makefile
+                        make
+                        cd ../..
+                        cd ..
+                        cd ..
+                        #insmod ./vtc/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        #./vtc/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        insmod ./vtc_master/PF_RING/kernel/pf_ring.ko min_num_slots=8192 enable_debug=1 quick_mode=1 enable_tx_capture=0
+                        ./vtc_master/PF_RING/userland/examples/pfbridge -a eth1 -b eth2 &
+                        wc_notify --data-binary '{"status": "SUCCESS"}'
+                    params:
+                        wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
+                        $name: { get_param: name }
+                        $IP_FAMILY: { get_param: ip_family }
+
+         flavor: { get_resource: flavor }
+         networks:
+            - port: { get_resource: port_1 }
+            - port: { get_resource: port_2 }
+            - port: { get_resource: port_3 }
+outputs:
diff --git a/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml.json b/yardstick/vTC/apexlake/tests/data/test_templates/VTC_base_single_vm_wait_2.yaml.json
new file mode 100644 (file)
index 0000000..9f24689
--- /dev/null
@@ -0,0 +1 @@
+{"vnic_type": "direct", "ram": "1024", "vcpus": "2"}
\ No newline at end of file