summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--legacy/assets/perftest/etc/dpi_average.sh14
-rw-r--r--qtip/driver/ansible_api.py58
-rw-r--r--qtip/driver/ansible_driver.py85
-rw-r--r--qtip/driver/playbook/bwn_ng.yaml4
-rw-r--r--qtip/driver/playbook/dhrystone/run.yaml63
-rw-r--r--qtip/driver/playbook/dpi/clean.yaml (renamed from qtip/driver/ansible.py)17
-rw-r--r--qtip/driver/playbook/dpi/dpi_average.sh10
-rw-r--r--qtip/driver/playbook/dpi/run.yaml46
-rw-r--r--qtip/driver/playbook/dpi/setup.yaml93
-rw-r--r--qtip/driver/playbook/inxi.yaml4
-rw-r--r--qtip/driver/playbook/openssl/clean.yaml23
-rw-r--r--qtip/driver/playbook/openssl/run.yaml49
-rw-r--r--qtip/driver/playbook/openssl/setup.yaml87
-rw-r--r--qtip/driver/playbook/ramspeed/clean.yaml23
-rw-r--r--qtip/driver/playbook/ramspeed/run.yaml44
-rw-r--r--qtip/driver/playbook/ramspeed/setup.yaml70
-rw-r--r--qtip/driver/playbook/top.yaml4
-rw-r--r--qtip/driver/playbook/unixbench/clean.yaml (renamed from qtip/driver/playbook/dhrystone/clean.yaml)12
-rw-r--r--qtip/driver/playbook/unixbench/dhrystone.yaml27
-rw-r--r--qtip/driver/playbook/unixbench/run.yaml37
-rw-r--r--qtip/driver/playbook/unixbench/setup.yaml (renamed from qtip/driver/playbook/dhrystone/setup.yaml)32
-rw-r--r--qtip/driver/playbook/unixbench/whetstone.yaml28
-rw-r--r--tests/data/benchmarks/plan/compute.yaml74
-rw-r--r--tests/data/external/dpi/dpi_dump.txt809
-rw-r--r--tests/data/external/ramspeed/Floatmem52
-rw-r--r--tests/data/external/ramspeed/Intmem52
-rw-r--r--tests/data/external/ssl/AES-128-CBC_dump7
-rw-r--r--tests/data/external/ssl/RSA_dump9
28 files changed, 1731 insertions, 102 deletions
diff --git a/legacy/assets/perftest/etc/dpi_average.sh b/legacy/assets/perftest/etc/dpi_average.sh
deleted file mode 100644
index 405d3ff6..00000000
--- a/legacy/assets/perftest/etc/dpi_average.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-COUNTER=0
-WDIR=$PWD
-while [ $COUNTER -lt 10 ]; do
-
- echo $WDIR
- $( ./ndpiReader -i test.pcap >> $WDIR/dpi_dump.txt )
- let COUNTER=COUNTER+1
- echo "Run number: $COUNTER"
-
-done
-
-
diff --git a/qtip/driver/ansible_api.py b/qtip/driver/ansible_api.py
new file mode 100644
index 00000000..5c5baffc
--- /dev/null
+++ b/qtip/driver/ansible_api.py
@@ -0,0 +1,58 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+from collections import namedtuple
+
+from ansible.executor.playbook_executor import PlaybookExecutor
+from ansible.inventory import Inventory
+from ansible.parsing.dataloader import DataLoader
+from ansible.vars import VariableManager
+
+
+class AnsibleApi(object):
+
+ def __init__(self):
+ self.variable_manager = VariableManager()
+ self.loader = DataLoader()
+ self.passwords = {}
+ self.playbook_executor = None
+
+ def execute_playbook(self, playbook_path, hosts_file=None,
+ key_file=None, extra_vars=None):
+ inventory = Inventory(loader=self.loader,
+ variable_manager=self.variable_manager,
+ host_list=hosts_file)
+ Options = namedtuple('Options',
+ ['listtags', 'listtasks', 'listhosts', 'syntax',
+ 'connection', 'module_path', 'forks', 'remote_user',
+ 'private_key_file', 'ssh_common_args', 'ssh_extra_args',
+ 'sftp_extra_args', 'scp_extra_args', 'become',
+ 'become_method', 'become_user', 'verbosity', 'check'])
+ options = Options(listtags=False, listtasks=False, listhosts=False,
+ syntax=False, connection='ssh', module_path=None,
+ forks=100, remote_user='root', private_key_file=key_file,
+ ssh_common_args=None, ssh_extra_args=None, sftp_extra_args=None,
+ scp_extra_args=None, become=None, become_method=None,
+ become_user='root', verbosity=None, check=False)
+ self.variable_manager.extra_vars = extra_vars
+
+ self.playbook_executor = PlaybookExecutor(playbooks=[playbook_path],
+ inventory=inventory,
+ variable_manager=self.variable_manager,
+ loader=self.loader,
+ options=options,
+ passwords=self.passwords)
+ return self.playbook_executor.run()
+
+ def get_detail_playbook_stats(self):
+ if self.playbook_executor:
+ stats = self.playbook_executor._tqm._stats
+ return map(lambda x: (x, stats.summarize(x)), stats.processed.keys())
+ else:
+ return None
diff --git a/qtip/driver/ansible_driver.py b/qtip/driver/ansible_driver.py
new file mode 100644
index 00000000..1cd7918d
--- /dev/null
+++ b/qtip/driver/ansible_driver.py
@@ -0,0 +1,85 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+from collections import defaultdict
+from os import path
+
+from qtip.driver.ansible_api import AnsibleApi
+from qtip.util.env import AnsibleEnvSetup
+from qtip.util.logger import QtipLogger
+
+logger = QtipLogger('ansible_driver').get
+PLAYBOOK_DIR = path.join(path.dirname(__file__), 'playbook')
+
+
+class AnsibleDriver(object):
+ """driver for running performance tests with Ansible"""
+
+ def __init__(self, config={}):
+ self.config = config
+ self.env = AnsibleEnvSetup()
+ self.env_setup_flag = False
+
+ @staticmethod
+ def merge_two_dicts(x, y):
+ '''
+ It is from http://stackoverflow.com/questions/38987/
+ how-can-i-merge-two-python-dictionaries-in-a-single-expression
+ '''
+ z = x.copy()
+ z.update(y)
+ return z
+
+ def pre_run(self):
+ if self.env_setup_flag:
+ logger.info("Already setup environment......")
+ else:
+ logger.info("Starting to setup test environment...")
+ self.env.setup(self.config)
+ self.env_setup_flag = True
+ logger("Done!")
+
+ def run(self, metric_list, **kwargs):
+ if 'args' in self.config:
+ extra_vars = self.merge_two_dicts(kwargs, self.config['args'])
+ else:
+ extra_vars = kwargs
+ logger.info("extra_var: {0}".format(extra_vars))
+
+ # TODO zhihui: will add a new property named "tool" for metrics, hardcode it now.
+ tool_to_metrics = defaultdict(list)
+ for metric in metric_list:
+ if metric in ['dhrystone', 'whetstone']:
+ tool_to_metrics['unixbench'].append(metric)
+ extra_vars[metric] = True
+ elif metric == 'ssl':
+ tool_to_metrics['openssl'].append(metric)
+ else:
+ tool_to_metrics[metric].append(metric)
+
+ ansible_api = AnsibleApi()
+ map(lambda tool: self._run_metric(ansible_api, tool,
+ tool_to_metrics[tool], extra_vars),
+ tool_to_metrics)
+
+ def _run_metric(self, ansible_api, tool, metrics, extra_vars):
+ logger.info('Using {0} to measure metrics {1}'.format(tool, metrics))
+
+ for metric in metrics:
+ extra_vars[metric] = True
+
+ logger.debug("extra_vars: {0}".format(extra_vars))
+
+ for item in ['setup', 'run', 'clean']:
+ pbook = "{0}/{1}/{2}.yaml".format(PLAYBOOK_DIR, tool, item)
+ logger.debug("Start to run {0}".format(pbook))
+ ansible_api.execute_playbook(pbook, self.env.hostfile,
+ self.env.keypair['private'], extra_vars)
+ playbook_stat = ansible_api.get_detail_playbook_stats()
+ logger.debug("playbook_stat: {0}".format(playbook_stat))
diff --git a/qtip/driver/playbook/bwn_ng.yaml b/qtip/driver/playbook/bwn_ng.yaml
index 99477856..f79bb04e 100644
--- a/qtip/driver/playbook/bwn_ng.yaml
+++ b/qtip/driver/playbook/bwn_ng.yaml
@@ -20,4 +20,6 @@
when: ansible_os_family == "Debian"
- name: Run bwm-ng
- shell: bwm-ng -o plain -c 1 > $HOME/qtip_result/bwm-dump.log \ No newline at end of file
+ shell: bwm-ng -o plain -c 1 > bwm-dump.log
+ args:
+ chdir: '{{ dest_path }}/' \ No newline at end of file
diff --git a/qtip/driver/playbook/dhrystone/run.yaml b/qtip/driver/playbook/dhrystone/run.yaml
deleted file mode 100644
index 55de6597..00000000
--- a/qtip/driver/playbook/dhrystone/run.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-##############################################################################
-# Copyright (c) 2017 ZTE Corporation and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-- hosts: hosts
- become: yes
- remote_user: root
-
- tasks:
- - name: Get current timestamp
- set_fact:
- timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
-
- - name: Checking home directory
- shell: echo $HOME
- register: home_dir
-
- - name: Fetch hostname
- shell: hostname
- register: host_name
-
- - name: Make UnixBench
- shell: make --directory $HOME/tempT/UnixBench/
-
- - name: Make some directories needed
- file:
- path: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
- state: directory
-
- - include: ../inxi.yaml
-
- - include: ../top.yaml
-
- - name: Run dhrystone
- shell: ./Run -v dhrystone
- args:
- chdir: '{{ home_dir.stdout }}/tempT/UnixBench/'
-
- - name: Copying result to qtip result directory
- shell: cp -r $HOME/tempT/UnixBench/results/* ./
- args:
- chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
-
- - name: Copy top log to qtip result directory
- shell: mv $HOME/qtip_result/top.log ./
- args:
- chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
-
- - name: Copy inxi log to qtip result directory
- shell: mv $HOME/qtip_result/inxi.log ./
- args:
- chdir: '{{ home_dir.stdout }}/qtip_result/{{ timestamp }}/{{ host_name.stdout }}'
-
- - name: Fetch result files to local manchine
- synchronize:
- mode: pull
- src: '{{ home_dir.stdout }}/qtip_result/'
- dest: '{{ result_dir }}/dhrystone/logs/'
diff --git a/qtip/driver/ansible.py b/qtip/driver/playbook/dpi/clean.yaml
index cd17625d..0b9f9291 100644
--- a/qtip/driver/ansible.py
+++ b/qtip/driver/playbook/dpi/clean.yaml
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2016 ZTE Corp and others.
+# Copyright (c) 2017 ZTE Corporation and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
@@ -7,8 +7,17 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from qtip.driver.base import BaseDriver
+- hosts: hosts
+ become: yes
+ remote_user: root
+ tasks:
+ - name: Cleaning tempD
+ file:
+ path: '{{ ansible_env.HOME }}/tempD'
+ state: absent
-class AnsibleDriver(BaseDriver):
- """driver for running performance tests with Ansible"""
+ - name: Cleaning qtip_result
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
diff --git a/qtip/driver/playbook/dpi/dpi_average.sh b/qtip/driver/playbook/dpi/dpi_average.sh
new file mode 100644
index 00000000..6f038053
--- /dev/null
+++ b/qtip/driver/playbook/dpi/dpi_average.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+COUNTER=0
+WDIR=$PWD
+while [ $COUNTER -lt 10 ]; do
+ echo $WDIR
+ $( ./ndpiReader -i test.pcap >> $WDIR/dpi_dump.txt )
+ let COUNTER=COUNTER+1
+ echo "Run number: $COUNTER"
+done \ No newline at end of file
diff --git a/qtip/driver/playbook/dpi/run.yaml b/qtip/driver/playbook/dpi/run.yaml
new file mode 100644
index 00000000..58f7eb2f
--- /dev/null
+++ b/qtip/driver/playbook/dpi/run.yaml
@@ -0,0 +1,46 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Get current timestamp
+ set_fact:
+ timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
+
+ - name: Make some directories needed
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+ state: directory
+
+ - include: ../inxi.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+
+ - include: ../top.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+
+ - name: Run nDPI benchmark
+ shell: ./dpi_average.sh
+ args:
+ chdir: '{{ ansible_env.HOME }}/tempD/nDPI/example/'
+
+ - name: Copying result and system info to qtip result directory
+ command: cp $HOME/tempD/nDPI/example/dpi_dump.txt ./
+ args:
+ chdir: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+
+ - name: Fetch result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ ansible_env.HOME }}/qtip_result/'
+ dest: '{{ result_dir }}/dpi/logs/'
diff --git a/qtip/driver/playbook/dpi/setup.yaml b/qtip/driver/playbook/dpi/setup.yaml
new file mode 100644
index 00000000..c1b45450
--- /dev/null
+++ b/qtip/driver/playbook/dpi/setup.yaml
@@ -0,0 +1,93 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: localhost
+ connection: local
+ gather_facts: no
+
+ tasks:
+ - name: Making Dpi directory
+ file:
+ path: '{{ result_dir }}/dpi/logs/'
+ state: directory
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Cleaning tempD directory
+ file:
+ path: '{{ ansible_env.HOME }}/tempD'
+ state: absent
+
+ - name: Cleaning qtip_result directory
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
+
+ - include: ../prepare_env.yaml
+
+ - name: Installing nDPI dependencies if CentOS
+ yum:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "RedHat"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - perl-Time-HiRes
+ - autofconf
+ - automake
+ - libpcap-devel libtool
+
+ - name: Installing nDPI dependencies if Ubuntu
+ apt:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "Debian"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - autoconf
+ - automake
+ - libpcap-dev
+ - libtool
+
+ - name: Making nDPI temporary directory
+ file:
+ path: '{{ ansible_env.HOME }}/tempD'
+ state: directory
+
+ - name: Clone nDPI
+ git:
+ repo: https://github.com/ntop/nDPI.git
+ dest: '{{ ansible_env.HOME }}/tempD/nDPI'
+
+ - name: Run autogen && configure Dpi && make Dpi
+ command: '{{ item }}'
+ with_items:
+ - ./autogen.sh
+ - ./configure
+ - make
+ args:
+ chdir: '{{ ansible_env.HOME }}/tempD/nDPI/'
+
+ - name: Fetching Test_pcap file
+ get_url:
+ url: http://build.opnfv.org/artifacts.opnfv.org/qtip/utilities/test.pcap
+ dest: '{{ ansible_env.HOME }}/tempD/nDPI/example/test.pcap'
+
+ - name: Fetch Averaging script
+ copy:
+ src: ./dpi_average.sh
+ dest: '{{ ansible_env.HOME }}/tempD/nDPI/example'
+ mode: 777 \ No newline at end of file
diff --git a/qtip/driver/playbook/inxi.yaml b/qtip/driver/playbook/inxi.yaml
index f6a0311d..a06da042 100644
--- a/qtip/driver/playbook/inxi.yaml
+++ b/qtip/driver/playbook/inxi.yaml
@@ -20,4 +20,6 @@
when: ansible_os_family == "Debian"
- name: Run inxi
- shell: inxi -b -c0 -n > $HOME/qtip_result/inxi.log
+ shell: inxi -b -c0 -n > inxi.log
+ args:
+ chdir: '{{ dest_path }}/'
diff --git a/qtip/driver/playbook/openssl/clean.yaml b/qtip/driver/playbook/openssl/clean.yaml
new file mode 100644
index 00000000..0139ba54
--- /dev/null
+++ b/qtip/driver/playbook/openssl/clean.yaml
@@ -0,0 +1,23 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Cleaning Open_SSL
+ file:
+ path: '{{ ansible_env.HOME }}/Open_SSL'
+ state: absent
+
+ - name: Cleaning qtip_result
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
diff --git a/qtip/driver/playbook/openssl/run.yaml b/qtip/driver/playbook/openssl/run.yaml
new file mode 100644
index 00000000..241cac61
--- /dev/null
+++ b/qtip/driver/playbook/openssl/run.yaml
@@ -0,0 +1,49 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Get current timestamp
+ set_fact:
+ timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
+
+ - name: Make some directories needed
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+ state: directory
+
+ - include: ../inxi.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - include: ../top.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - name: Benchmarking RSA signatures and AES-128-cbc cipher encryption throughput
+ shell: '{{ item }}'
+ with_items:
+ - ./openssl speed rsa >> RSA_dump
+ - ./openssl speed -evp aes-128-cbc >> AES-128-CBC_dump
+ args:
+ chdir: '{{ ansible_env.HOME }}/Open_SSL/openssl-1.0.2f/apps'
+
+ - name: Copying result to qtip result directory
+ shell: cp ~/Open_SSL/openssl-1.0.2f/apps/*_dump ./
+ args:
+ chdir: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - name: Fetch result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ ansible_env.HOME }}/qtip_result/'
+ dest: '{{ result_dir }}/ssl/logs/'
diff --git a/qtip/driver/playbook/openssl/setup.yaml b/qtip/driver/playbook/openssl/setup.yaml
new file mode 100644
index 00000000..e93bfb8e
--- /dev/null
+++ b/qtip/driver/playbook/openssl/setup.yaml
@@ -0,0 +1,87 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: localhost
+ connection: local
+ gather_facts: no
+
+ tasks:
+ - name: Making ssl directory
+ file:
+ path: '{{ result_dir }}/ssl/logs/'
+ state: directory
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Cleaning Open_SSL directory
+ file:
+ path: '{{ ansible_env.HOME }}/Open_SSL'
+ state: absent
+
+ - name: Cleaning qtip_result directory
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
+
+ - include: ../prepare_env.yaml
+
+ - name: Installing UnixBench dependencies if CentOS
+ yum:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "RedHat"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - perl-Time-HiRes
+ - wget
+ - autofconf
+ - automake
+ - libpcap-devel
+ - libtool
+
+ - name: Installing UnixBench dependencies if Ubuntu
+ apt:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "Debian"
+ with_items:
+ - git
+ - gcc
+ - patch
+ - perl
+ - wget
+ - autoconf
+ - automake
+ - libpcap-dev
+ - libtool
+
+ - name: Make Open_SSL directory
+ file:
+ path: '{{ ansible_env.HOME }}/Open_SSL'
+ state: directory
+
+ - name: Untar OpenSSL
+ unarchive:
+ src: http://artifacts.opnfv.org/qtip/utilities/openssl-1.0.2f.tar.gz
+ dest: '{{ ansible_env.HOME }}/Open_SSL/'
+ remote_src: True
+
+ - name: Configure && Make && Install OpenSSL
+ shell: "{{ item }}"
+ with_items:
+ - ./config
+ - make
+ - make install
+ args:
+ chdir: '{{ ansible_env.HOME }}/Open_SSL/openssl-1.0.2f' \ No newline at end of file
diff --git a/qtip/driver/playbook/ramspeed/clean.yaml b/qtip/driver/playbook/ramspeed/clean.yaml
new file mode 100644
index 00000000..f0188159
--- /dev/null
+++ b/qtip/driver/playbook/ramspeed/clean.yaml
@@ -0,0 +1,23 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Cleaning ramspeed
+ file:
+ path: '{{ ansible_env.HOME }}/ramspeed'
+ state: absent
+
+ - name: Cleaning qtip_result
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
diff --git a/qtip/driver/playbook/ramspeed/run.yaml b/qtip/driver/playbook/ramspeed/run.yaml
new file mode 100644
index 00000000..33c9a6ef
--- /dev/null
+++ b/qtip/driver/playbook/ramspeed/run.yaml
@@ -0,0 +1,44 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Get current timestamp
+ set_fact:
+ timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
+
+ - name: Make some directories needed
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+ state: directory
+
+ - include: ../inxi.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - include: ../top.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - name: Benchmarking IntMem Bandwidth and FloatMem Bandwidth
+ shell: '{{ item }}'
+ with_items:
+ - ~/ramspeed/ramsmp-3.5.0/ramsmp -b 3 -l 5 -p 1 >> Intmem
+ - ~/ramspeed/ramsmp-3.5.0/ramsmp -b 6 -l 5 -p 1 >> Floatmem
+ args:
+ chdir: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}/'
+
+ - name: Fetch result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ ansible_env.HOME }}/qtip_result/'
+ dest: '{{ result_dir }}/ramspeed/logs/'
diff --git a/qtip/driver/playbook/ramspeed/setup.yaml b/qtip/driver/playbook/ramspeed/setup.yaml
new file mode 100644
index 00000000..60368605
--- /dev/null
+++ b/qtip/driver/playbook/ramspeed/setup.yaml
@@ -0,0 +1,70 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: localhost
+ connection: local
+ gather_facts: no
+
+ tasks:
+ - name: Making ramspeed directory
+ file:
+ path: '{{ result_dir }}/ramspeed/logs/'
+ state: directory
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - name: Cleaning ramspeed directory
+ file:
+ path: '{{ ansible_env.HOME }}/ramspeed'
+ state: absent
+
+ - name: Cleaning qtip_result directory
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result'
+ state: absent
+
+ - include: ../prepare_env.yaml
+
+ - name: Installing RAM_Speed dependencies if CentOS
+ yum:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "RedHat"
+ with_items:
+ - gcc
+ - wget
+
+ - name: Installing RAM_Speed dependencies if Ubuntu
+ apt:
+ name: '{{ item }}'
+ state: present
+ when: ansible_os_family == "Debian"
+ with_items:
+ - gcc
+ - wget
+
+ - name: Making ramspeed temporary directory
+ file:
+ path: '{{ ansible_env.HOME }}/ramspeed'
+ state: directory
+
+ - name: Fetch and untar ramspeed.tar.gz
+ unarchive:
+ # TODO: Need to upload this file to http://artifacts.opnfv.org/qtip/utilities
+ src: https://docs.google.com/uc?id=0B92Bp5LZTM7gRFctalZLMktTNDQ
+ dest: '{{ ansible_env.HOME }}/ramspeed/'
+ remote_src: True
+
+ - name: Build ramsmp
+ shell: ./build.sh
+ args:
+ chdir: '{{ ansible_env.HOME }}/ramspeed/ramsmp-3.5.0'
diff --git a/qtip/driver/playbook/top.yaml b/qtip/driver/playbook/top.yaml
index 8de7e3d6..64584338 100644
--- a/qtip/driver/playbook/top.yaml
+++ b/qtip/driver/playbook/top.yaml
@@ -7,4 +7,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
- name: Collect cpu usage
- shell: top -bn1 > $HOME/qtip_result/top.log
+ shell: top -bn1 > top.log
+ args:
+ chdir: '{{ dest_path }}/'
diff --git a/qtip/driver/playbook/dhrystone/clean.yaml b/qtip/driver/playbook/unixbench/clean.yaml
index 72bfab7e..a7cb2540 100644
--- a/qtip/driver/playbook/dhrystone/clean.yaml
+++ b/qtip/driver/playbook/unixbench/clean.yaml
@@ -1,6 +1,6 @@
##############################################################################
# Copyright (c) 2017 ZTE Corporation and others.
-#
+# zhihui.wu1@zte.com.cn
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
@@ -12,16 +12,14 @@
remote_user: root
tasks:
- - name: Checking home directory
- shell: echo $HOME
- register: home_dir
-
- name: Cleaning tempT
file:
- path: '{{ home_dir.stdout }}/tempT'
+ path: '{{ ansible_env.HOME }}/tempT'
state: absent
- name: Cleaning qtip_result
file:
- path: '{{ home_dir.stdout }}/qtip_result'
+ path: '{{ ansible_env.HOME }}/qtip_result'
state: absent
+
+
diff --git a/qtip/driver/playbook/unixbench/dhrystone.yaml b/qtip/driver/playbook/unixbench/dhrystone.yaml
new file mode 100644
index 00000000..431814dd
--- /dev/null
+++ b/qtip/driver/playbook/unixbench/dhrystone.yaml
@@ -0,0 +1,27 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+# zhihui.wu1@zte.com.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: Run dhrystone
+ shell: ./Run -v dhrystone
+ args:
+ chdir: '{{ ansible_env.HOME }}/tempT/UnixBench/'
+
+- name: Copying result and system info to qtip result directory
+ shell: '{{ item }}'
+ with_items:
+ - mv ~/tempT/UnixBench/results/* ./
+ - cp ~/qtip_result/inxi.log ~/qtip_result/top.log ./
+ args:
+ chdir: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+
+- name: Fetch dhrystone result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ ansible_env.HOME }}/qtip_result/'
+ dest: '{{ result_dir }}/dhrystone/logs/'
diff --git a/qtip/driver/playbook/unixbench/run.yaml b/qtip/driver/playbook/unixbench/run.yaml
new file mode 100644
index 00000000..acef36a7
--- /dev/null
+++ b/qtip/driver/playbook/unixbench/run.yaml
@@ -0,0 +1,37 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+# zhihui.wu1@zte.com.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- hosts: hosts
+ become: yes
+ remote_user: root
+
+ tasks:
+ - set_fact:
+ is_dhrystone: "{{ dhrystone | default(False) }}"
+ is_whetstone: "{{ whetstone | default(False) }}"
+ timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H-%M') }}"
+
+ - name: Make some directories needed
+ file:
+ path: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+ state: directory
+
+ - include: ../inxi.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/'
+
+ - include: ../top.yaml
+ vars:
+ dest_path: '{{ ansible_env.HOME }}/qtip_result/'
+
+ - include: ./dhrystone.yaml
+ when: "{{ is_dhrystone }}"
+
+ - include: ./whetstone.yaml
+ when: "{{ is_whetstone }}" \ No newline at end of file
diff --git a/qtip/driver/playbook/dhrystone/setup.yaml b/qtip/driver/playbook/unixbench/setup.yaml
index 430670c1..283884ac 100644
--- a/qtip/driver/playbook/dhrystone/setup.yaml
+++ b/qtip/driver/playbook/unixbench/setup.yaml
@@ -1,39 +1,46 @@
-##############################################################################
+#############################################################################
# Copyright (c) 2017 ZTE Corporation and others.
-#
+# zhihui.wu1@zte.com.cn
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
+#############################################################################
- hosts: localhost
connection: local
gather_facts: no
tasks:
+ - set_fact:
+ is_dhrystone: "{{ dhrystone | default(False) }}"
+ is_whetstone: "{{ whetstone | default(False) }}"
+
- name: Making dhrystone directory
file:
path: '{{ result_dir }}/dhrystone/logs/'
state: directory
+ when: '{{ is_dhrystone }}'
+
+ - name: Making whetstone directory
+ file:
+ path: '{{ result_dir }}/whetstone/logs/'
+ state: directory
+ when: '{{ is_whetstone }}'
- hosts: hosts
become: yes
remote_user: root
tasks:
- - name: Checking home directory
- shell: echo $HOME
- register: home_dir
-
- name: Cleaning tempT directory
file:
- path: '{{ home_dir.stdout }}/tempT'
+ path: '{{ ansible_env.HOME }}/tempT'
state: absent
- name: Cleaning qtip_result directory
file:
- path: '{{ home_dir.stdout }}/qtip_result'
+ path: '{{ ansible_env.HOME }}/qtip_result'
state: absent
- include: ../prepare_env.yaml
@@ -60,7 +67,10 @@
- patch
- perl
- - name: Clone unixbench
+ - name: Clone UnixBench
git:
repo: https://github.com/kdlucas/byte-unixbench.git
- dest: '{{ home_dir.stdout }}/tempT'
+ dest: '{{ ansible_env.HOME }}/tempT/'
+
+ - name: Make UnixBench
+ shell: make --directory $HOME/tempT/UnixBench/ \ No newline at end of file
diff --git a/qtip/driver/playbook/unixbench/whetstone.yaml b/qtip/driver/playbook/unixbench/whetstone.yaml
new file mode 100644
index 00000000..f09e4e53
--- /dev/null
+++ b/qtip/driver/playbook/unixbench/whetstone.yaml
@@ -0,0 +1,28 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+# zhihui.wu1@zte.com.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+- name: Run whetstone
+ shell: ./Run -v whetstone
+ when: whetstone
+ args:
+ chdir: '{{ ansible_env.HOME }}/tempT/UnixBench/'
+
+- name: Copying result and system info to qtip result directory
+ shell: '{{ item }}'
+ with_items:
+ - mv ~/tempT/UnixBench/results/* ./
+ - cp ~/qtip_result/inxi.log ~/qtip_result/top.log ./
+ args:
+ chdir: '{{ ansible_env.HOME }}/qtip_result/{{ timestamp }}/{{ ansible_hostname }}'
+
+- name: Fetch whetstone result files to local manchine
+ synchronize:
+ mode: pull
+ src: '{{ ansible_env.HOME }}/qtip_result/'
+ dest: '{{ result_dir }}/whetstone/logs/'
diff --git a/tests/data/benchmarks/plan/compute.yaml b/tests/data/benchmarks/plan/compute.yaml
index 8529d8dc..f4a7a2dc 100644
--- a/tests/data/benchmarks/plan/compute.yaml
+++ b/tests/data/benchmarks/plan/compute.yaml
@@ -16,6 +16,80 @@ config:
collectors:
- type: logfile
paths:
+ - '../../external/dpi/'
+ logs:
+ - filename: dpi_dump.txt
+ parsers:
+ - type: grep
+ regex: |-
+ ^\s+nDPI throughput:.+?(?P<pps>\d+.\d+)\sM\spps.+
+ ?(?P<bps>\d+.\d+)\sGb\/sec
+ - type: logfile
+ paths:
+ - '../../external/ramspeed/'
+ logs:
+ - filename: Intmem
+ parsers:
+ - type: grep
+ regex: '^INTEGER\s+BatchRun\s+Copy:\s+?(?P<integer_copy>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^INTEGER\s+BatchRun\s+Scale:\s+?(?P<integer_scale>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^INTEGER\s+BatchRun\s+Add:\s+?(?P<integer_add>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^INTEGER\s+BatchRun\s+Triad:\s+?(?P<integer_triad>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^INTEGER\s+BatchRun\s+AVERAGE:\s+?(?P<integer_average>\d+\.\d+)\sMB/s$'
+ - filename: Floatmem
+ parsers:
+ - type: grep
+ regex: '^FL-POINT\s+BatchRun\s+Copy:\s+?(?P<float_copy>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^FL-POINT\s+BatchRun\s+Scale:\s+?(?P<float_scale>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^FL-POINT\s+BatchRun\s+Add:\s+?(?P<float_add>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^FL-POINT\s+BatchRun\s+Triad:\s+?(?P<float_triad>\d+\.\d+)\sMB/s$'
+ - type: grep
+ regex: '^FL-POINT\s+BatchRun\s+AVERAGE:\s+?(?P<float_average>\d+\.\d+)\sMB/s$'
+ - type: logfile
+ paths:
+ - '../../external/ssl/'
+ logs:
+ - filename: RSA_dump
+ parsers:
+ - type: grep
+ regex: |-
+ ^rsa\s+512\sbits\s.+
+ ?(?P<rsa_sign_512>\d+\.\d)\s+
+ ?(?P<rsa_verify_512>\d+\.\d)$
+ - type: grep
+ regex: |-
+ ^rsa\s+1024\sbits\s.+
+ ?(?P<rsa_sign_1024>\d+\.\d)\s+
+ ?(?P<rsa_verify_1024>\d+\.\d)$
+ - type: grep
+ regex: |-
+ ^rsa\s+2048\sbits\s.+
+ ?(?P<rsa_sign_2048>\d+\.\d)\s+
+ ?(?P<rsa_verify_2048>\d+\.\d)$
+ - type: grep
+ regex: |-
+ ^rsa\s+4096\sbits\s.+
+ ?(?P<rsa_sign_4096>\d+\.\d)\s+
+ ?(?P<rsa_verify_4096>\d+\.\d)$
+ - filename: AES-128-CBC_dump
+ parsers:
+ - type: grep
+ regex: |-
+ ^aes-128-cbc\s+
+ ?(?P<aes_128_cbc_16_bytes>\d+\.\w+)\s+
+ ?(?P<aes_128_cbc_64_bytes>\d+\.\w+)\s+
+ ?(?P<aes_128_cbc_256_bytes>\d+\.\w+)\s+
+ ?(?P<aes_128_cbc_1024_bytes>\d+\.\w+)\s+
+ ?(?P<aes_128_cbc_8192_bytes>\d+\.\w+)$
+ - type: logfile
+ paths:
- '../../external/sysinfo'
logs:
- filename: top.log
diff --git a/tests/data/external/dpi/dpi_dump.txt b/tests/data/external/dpi/dpi_dump.txt
new file mode 100644
index 00000000..1f4e2839
--- /dev/null
+++ b/tests/data/external/dpi/dpi_dump.txt
@@ -0,0 +1,809 @@
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.56 M pps / 14.62 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.31 M pps / 12.31 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.54 M pps / 14.45 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.35 M pps / 12.71 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.55 M pps / 14.53 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.32 M pps / 12.42 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.54 M pps / 14.46 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.54 M pps / 14.49 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.37 M pps / 12.89 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes
+
+-----------------------------------------------------------
+* NOTE: This is demo app to show *some* nDPI features.
+* In this demo we have implemented only some basic features
+* just to show you what you can do with the library. Feel
+* free to extend it and send us the patches for inclusion
+------------------------------------------------------------
+
+Using nDPI (1.8.0-dev-707-6a27b62) [1 thread(s)]
+Reading packets from pcap file test.pcap...
+Running thread 0...
+
+nDPI Memory statistics:
+ nDPI Memory (once): 110.55 KB
+ Flow Memory (per flow): 1.95 KB
+ Actual Memory: 3.46 MB
+ Peak Memory: 3.46 MB
+
+Traffic statistics:
+ Ethernet bytes: 75948198 (includes ethernet CRC/IFC/trailer)
+ Discarded bytes: 55256
+ IP packets: 60265 of 61155 packets total
+ IP bytes: 74501838 (avg pkt size 1218 bytes)
+ Unique flows: 545
+ TCP Packets: 21188
+ UDP Packets: 39042
+ VLAN Packets: 0
+ MPLS Packets: 0
+ PPPoE Packets: 0
+ Fragmented Packets: 4
+ Max Packet size: 64260
+ Packet Len < 64: 30624
+ Packet Len 64-128: 1158
+ Packet Len 128-256: 674
+ Packet Len 256-1024: 817
+ Packet Len 1024-1500: 21924
+ Packet Len > 1500: 5068
+ nDPI throughput: 1.55 M pps / 14.57 Gb/sec
+ Traffic throughput: 228.03 pps / 2.19 Mb/sec
+ Traffic duration: 264.290 sec
+ Guessed flow protos: 9
+
+
+Detected protocols:
+ Unknown packets: 6126 bytes: 10913415 flows: 46
+ FTP_CONTROL packets: 42 bytes: 4384 flows: 1
+ DNS packets: 66 bytes: 6520 flows: 23
+ IPP packets: 46 bytes: 12059 flows: 1
+ HTTP packets: 377 bytes: 113616 flows: 24
+ MDNS packets: 43 bytes: 11742 flows: 9
+ NetBIOS packets: 48 bytes: 4754 flows: 12
+ SSDP packets: 101 bytes: 32533 flows: 21
+ DHCP packets: 21 bytes: 7346 flows: 2
+ BitTorrent packets: 37639 bytes: 29656716 flows: 65
+ ICMP packets: 15 bytes: 4956 flows: 5
+ IGMP packets: 10 bytes: 600 flows: 9
+ SSL packets: 1199 bytes: 622508 flows: 24
+ ICMPV6 packets: 2 bytes: 172 flows: 2
+ DHCPV6 packets: 1 bytes: 144 flows: 1
+ Facebook packets: 349 bytes: 206444 flows: 21
+ Twitter packets: 137 bytes: 45679 flows: 8
+ Dropbox packets: 155 bytes: 45358 flows: 12
+ GMail packets: 35 bytes: 10470 flows: 3
+ YouTube packets: 11721 bytes: 31050728 flows: 33
+ Skype packets: 237 bytes: 35082 flows: 30
+ Google packets: 558 bytes: 164639 flows: 52
+ WhatsApp packets: 969 bytes: 1477350 flows: 17
+ Viber packets: 60 bytes: 27602 flows: 1
+ LLMNR packets: 71 bytes: 5297 flows: 36
+ Amazon packets: 89 bytes: 23572 flows: 9
+ QUIC packets: 41 bytes: 3474 flows: 1
+ BJNP packets: 72 bytes: 4320 flows: 72
+ Microsoft packets: 35 bytes: 10358 flows: 5
+
+
+Protocol statistics:
+ Safe 632978 bytes
+ Acceptable 31693889 bytes
+ Fun 31257172 bytes
+ Unsafe 4384 bytes
+ Unrated 10913415 bytes \ No newline at end of file
diff --git a/tests/data/external/ramspeed/Floatmem b/tests/data/external/ramspeed/Floatmem
new file mode 100644
index 00000000..f3cc1e6d
--- /dev/null
+++ b/tests/data/external/ramspeed/Floatmem
@@ -0,0 +1,52 @@
+RAMspeed/SMP (Linux) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09
+
+8Gb per pass mode, 1 processes
+
+5-benchmark FLOATmem BatchRun mode
+
+Benchmark #1:
+FL-POINT Copy: 8220.47 MB/s
+FL-POINT Scale: 8195.78 MB/s
+FL-POINT Add: 10319.18 MB/s
+FL-POINT Triad: 10403.87 MB/s
+---
+FL-POINT AVERAGE: 9284.83 MB/s
+
+Benchmark #2:
+FL-POINT Copy: 8086.66 MB/s
+FL-POINT Scale: 7842.82 MB/s
+FL-POINT Add: 9900.13 MB/s
+FL-POINT Triad: 10029.43 MB/s
+---
+FL-POINT AVERAGE: 8964.76 MB/s
+
+Benchmark #3:
+FL-POINT Copy: 7766.98 MB/s
+FL-POINT Scale: 7837.62 MB/s
+FL-POINT Add: 9827.57 MB/s
+FL-POINT Triad: 9918.89 MB/s
+---
+FL-POINT AVERAGE: 8837.77 MB/s
+
+Benchmark #4:
+FL-POINT Copy: 7647.89 MB/s
+FL-POINT Scale: 7594.00 MB/s
+FL-POINT Add: 9873.93 MB/s
+FL-POINT Triad: 9970.89 MB/s
+---
+FL-POINT AVERAGE: 8771.68 MB/s
+
+Benchmark #5:
+FL-POINT Copy: 7821.21 MB/s
+FL-POINT Scale: 7880.56 MB/s
+FL-POINT Add: 9914.84 MB/s
+FL-POINT Triad: 10044.05 MB/s
+---
+FL-POINT AVERAGE: 8915.17 MB/s
+
+FL-POINT BatchRun Copy: 7908.64 MB/s
+FL-POINT BatchRun Scale: 7870.16 MB/s
+FL-POINT BatchRun Add: 9967.13 MB/s
+FL-POINT BatchRun Triad: 10073.43 MB/s
+---
+FL-POINT BatchRun AVERAGE: 8954.84 MB/s \ No newline at end of file
diff --git a/tests/data/external/ramspeed/Intmem b/tests/data/external/ramspeed/Intmem
new file mode 100644
index 00000000..08fffe47
--- /dev/null
+++ b/tests/data/external/ramspeed/Intmem
@@ -0,0 +1,52 @@
+RAMspeed/SMP (Linux) v3.5.0 by Rhett M. Hollander and Paul V. Bolotoff, 2002-09
+
+8Gb per pass mode, 1 processes
+
+5-benchmark INTmem BatchRun mode
+
+Benchmark #1:
+INTEGER Copy: 11493.80 MB/s
+INTEGER Scale: 11527.61 MB/s
+INTEGER Add: 11567.60 MB/s
+INTEGER Triad: 11546.06 MB/s
+---
+INTEGER AVERAGE: 11533.77 MB/s
+
+Benchmark #2:
+INTEGER Copy: 11580.06 MB/s
+INTEGER Scale: 11617.25 MB/s
+INTEGER Add: 11748.95 MB/s
+INTEGER Triad: 11837.43 MB/s
+---
+INTEGER AVERAGE: 11695.92 MB/s
+
+Benchmark #3:
+INTEGER Copy: 11674.45 MB/s
+INTEGER Scale: 11566.59 MB/s
+INTEGER Add: 11643.59 MB/s
+INTEGER Triad: 11633.42 MB/s
+---
+INTEGER AVERAGE: 11629.51 MB/s
+
+Benchmark #4:
+INTEGER Copy: 11496.38 MB/s
+INTEGER Scale: 11528.06 MB/s
+INTEGER Add: 11641.10 MB/s
+INTEGER Triad: 11742.61 MB/s
+---
+INTEGER AVERAGE: 11602.04 MB/s
+
+Benchmark #5:
+INTEGER Copy: 11568.45 MB/s
+INTEGER Scale: 11579.32 MB/s
+INTEGER Add: 11646.55 MB/s
+INTEGER Triad: 11596.57 MB/s
+---
+INTEGER AVERAGE: 11597.72 MB/s
+
+INTEGER BatchRun Copy: 11562.63 MB/s
+INTEGER BatchRun Scale: 11563.77 MB/s
+INTEGER BatchRun Add: 11649.55 MB/s
+INTEGER BatchRun Triad: 11671.22 MB/s
+---
+INTEGER BatchRun AVERAGE: 11611.79 MB/s \ No newline at end of file
diff --git a/tests/data/external/ssl/AES-128-CBC_dump b/tests/data/external/ssl/AES-128-CBC_dump
new file mode 100644
index 00000000..32568e14
--- /dev/null
+++ b/tests/data/external/ssl/AES-128-CBC_dump
@@ -0,0 +1,7 @@
+OpenSSL 1.0.2f 28 Jan 2016
+built on: reproducible build, date unspecified
+options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
+compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
+The 'numbers' are in 1000s of bytes per second processed.
+type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
+aes-128-cbc 533103.05k 570042.22k 580021.25k 584568.83k 599470.83k \ No newline at end of file
diff --git a/tests/data/external/ssl/RSA_dump b/tests/data/external/ssl/RSA_dump
new file mode 100644
index 00000000..55e40792
--- /dev/null
+++ b/tests/data/external/ssl/RSA_dump
@@ -0,0 +1,9 @@
+OpenSSL 1.0.2f 28 Jan 2016
+built on: reproducible build, date unspecified
+options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
+compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
+ sign verify sign/s verify/s
+rsa 512 bits 0.000056s 0.000004s 17828.4 222903.5
+rsa 1024 bits 0.000169s 0.000011s 5923.9 88397.9
+rsa 2048 bits 0.000793s 0.000037s 1261.4 26951.3
+rsa 4096 bits 0.008280s 0.000131s 120.8 7633.7