summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/ansible.cfg17
-rw-r--r--tests/integration/fixtures/case.json14
-rw-r--r--tests/integration/fixtures/pod.json6
-rw-r--r--tests/integration/fixtures/project.json4
-rw-r--r--tests/integration/group_vars/all3
-rw-r--r--tests/integration/host_vars/localhost7
-rw-r--r--tests/integration/hosts1
-rw-r--r--tests/integration/hosts.default6
l---------tests/integration/roles1
-rw-r--r--tests/integration/run.yaml80
-rw-r--r--tests/integration/setup.yaml43
-rw-r--r--tests/integration/workspace-create.yml13
-rw-r--r--tests/unit/ansible_library/modules/apex_generate_inventory_test.py (renamed from tests/unit/ansible_library/modules/apex_test.py)4
-rw-r--r--tests/unit/ansible_library/modules/fuel_test.py8
-rw-r--r--tests/unit/cli/options_test.py3
-rw-r--r--tests/unit/reporter/test_testapi.py116
16 files changed, 138 insertions, 188 deletions
diff --git a/tests/integration/ansible.cfg b/tests/integration/ansible.cfg
index 40e28bcf..a11bd1af 100644
--- a/tests/integration/ansible.cfg
+++ b/tests/integration/ansible.cfg
@@ -11,18 +11,5 @@
# some basic default values...
-inventory = ./hosts
-library = ../../qtip/ansible_library/
-
-# set plugin path directories here, separate with colons
-action_plugins = ../../qtip/ansible_library/plugins/action
-#cache_plugins = /usr/share/ansible/plugins/cache
-#callback_plugins = /usr/share/ansible/plugins/callback
-#connection_plugins = /usr/share/ansible/plugins/connection
-#lookup_plugins = /usr/share/ansible/plugins/lookup
-#inventory_plugins = /usr/share/ansible/plugins/inventory
-#vars_plugins = /usr/share/ansible/plugins/vars
-filter_plugins = ../../qtip/ansible_library/plugins/filter
-#test_plugins = /usr/share/ansible/plugins/test
-#terminal_plugins = /usr/share/ansible/plugins/terminal
-#strategy_plugins = /usr/share/ansible/plugins/strategy
+inventory = hosts
+roles_path = ../../resources/roles
diff --git a/tests/integration/fixtures/case.json b/tests/integration/fixtures/case.json
deleted file mode 100644
index 22abc40f..00000000
--- a/tests/integration/fixtures/case.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "run": "",
- "name": "compute",
- "ci_loop": "",
- "tags": "",
- "url": "",
- "domains": "",
- "dependencies": "",
- "version": "",
- "criteria": "",
- "tier": "",
- "blocking": "",
- "description": ""
-} \ No newline at end of file
diff --git a/tests/integration/fixtures/pod.json b/tests/integration/fixtures/pod.json
deleted file mode 100644
index 8c2863ba..00000000
--- a/tests/integration/fixtures/pod.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "details": "",
- "role": "",
- "name": "internal",
- "mode": ""
-} \ No newline at end of file
diff --git a/tests/integration/fixtures/project.json b/tests/integration/fixtures/project.json
deleted file mode 100644
index ecd03e83..00000000
--- a/tests/integration/fixtures/project.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "name": "qtip",
- "description": "Platform Performance Benchmarking"
-} \ No newline at end of file
diff --git a/tests/integration/group_vars/all b/tests/integration/group_vars/all
deleted file mode 100644
index 16a93f46..00000000
--- a/tests/integration/group_vars/all
+++ /dev/null
@@ -1,3 +0,0 @@
-qtip_resources: ../../resources
-qtip_reports: ./reports
-qtip_fixtures: ./fixtures
diff --git a/tests/integration/host_vars/localhost b/tests/integration/host_vars/localhost
deleted file mode 100644
index 18d764cc..00000000
--- a/tests/integration/host_vars/localhost
+++ /dev/null
@@ -1,7 +0,0 @@
-testapi_url: http://localhost:8000/api/v1
-project_name: qtip
-case_name: compute
-pod_name: internal
-installer: fuel
-version: master
-scenario: demo
diff --git a/tests/integration/hosts b/tests/integration/hosts
new file mode 100644
index 00000000..2302edae
--- /dev/null
+++ b/tests/integration/hosts
@@ -0,0 +1 @@
+localhost ansible_connection=local
diff --git a/tests/integration/hosts.default b/tests/integration/hosts.default
deleted file mode 100644
index 9b91eea6..00000000
--- a/tests/integration/hosts.default
+++ /dev/null
@@ -1,6 +0,0 @@
-[fuel-master]
-fuel-master
-
-[local]
-localhost ansible_connection=local
-
diff --git a/tests/integration/roles b/tests/integration/roles
new file mode 120000
index 00000000..a2363eeb
--- /dev/null
+++ b/tests/integration/roles
@@ -0,0 +1 @@
+../../resources/roles \ No newline at end of file
diff --git a/tests/integration/run.yaml b/tests/integration/run.yaml
deleted file mode 100644
index 7545a65e..00000000
--- a/tests/integration/run.yaml
+++ /dev/null
@@ -1,80 +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
-##############################################################################
-
----
-# Execute compute benchmark plan and collect data
-# - system information
-# - test condition
-# - performance metrics
-- hosts: compute
- tasks:
- - name: check ssh connection
- ping:
- - name: collect system information
- include: "{{ qtip_resources }}/metric/inxi.yaml"
- - name: ssl metrics
- include: "{{ qtip_resources }}/metric/openssl.yaml"
- tags: [ssl]
-
-- hosts: compute
- tasks:
- - name: calculate QPI of compute
- calculate:
- metrics:
- ssl_rsa: "{{ openssl_rsa_metrics }}"
- spec: "{{ qtip_resources }}/QPI/compute.yaml"
- register: qpi_result
- delegate_to: localhost
- tags: [calculate]
-
-- hosts: local
- tasks:
- - name: aggregate QPI results from all tested nodes
- aggregate:
- group: compute
- register: pod_result
-
-# Generate and publish report
-
-- hosts: local
- tasks:
- - name: create report folder
- file:
- path: "{{ qtip_reports }}"
- state: directory
- - name: create system information report
- template:
- src: "{{ qtip_resources }}/template/system-info.j2"
- dest: "{{ qtip_reports }}/system-info"
- - name: create qpi report
- template:
- src: "{{ qtip_resources }}/template/qpi-report.j2"
- dest: "{{ qtip_reports }}/qpi-report"
- tags: [report]
- - name: push result to testapi
- uri:
- url: "{{ testapi_url }}/results"
- body: "{{ item|to_json }}"
- method: POST
- body_format: json
- status_code: 200
- with_items:
- -
- project_name: "{{ project_name }}"
- case_name: "{{ case_name }}"
- pod_name: "{{ pod_name }}"
- installer: "{{ installer }}"
- version: "{{ version }}"
- scenario: "{{ scenario }}"
- start_date: "{{ ansible_date_time.date }}"
- stop_date: "{{ ansible_date_time.date }}"
- criteria: ""
- details: " {{ pod_result }}"
-
- tags: [testapi]
diff --git a/tests/integration/setup.yaml b/tests/integration/setup.yaml
deleted file mode 100644
index 8d055c23..00000000
--- a/tests/integration/setup.yaml
+++ /dev/null
@@ -1,43 +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
-##############################################################################
-
-# Prepare connection to SUT (System Under Test)
-- hosts: fuel-master
- gather_facts: no
- tasks:
- - name: collect facts of fuel hosts
- fuel:
- - name: update inventory file
- template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts
- delegate_to: localhost
- - name: update ssh.cfg file
- template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg
- delegate_to: localhost
-
-# Initialize testapi database
-- hosts: localhost
- tasks:
- - name: create project and pod
- uri:
- url: "{{ testapi_url }}/{{item}}s"
- method: POST
- body: "{{ lookup('file', '{}/{}.json'.format(qtip_fixtures, item)) }}"
- status_code: [200, 403]
- body_format: json
- with_items:
- - project
- - pod
- - name: create cases
- uri:
- url: "{{ testapi_url }}/projects/qtip/cases"
- method: POST
- body: "{{ lookup('file', '{}/case.json'.format(qtip_fixtures)) }}"
- status_code: [200, 403]
- body_format: json
- tags: [testapi]
diff --git a/tests/integration/workspace-create.yml b/tests/integration/workspace-create.yml
new file mode 100644
index 00000000..83e0fadd
--- /dev/null
+++ b/tests/integration/workspace-create.yml
@@ -0,0 +1,13 @@
+##############################################################################
+# 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
+ roles:
+ - { role: qtip-bootstrap, installer: fuel }
diff --git a/tests/unit/ansible_library/modules/apex_test.py b/tests/unit/ansible_library/modules/apex_generate_inventory_test.py
index 8a1d0673..7df9d35c 100644
--- a/tests/unit/ansible_library/modules/apex_test.py
+++ b/tests/unit/ansible_library/modules/apex_generate_inventory_test.py
@@ -10,7 +10,7 @@
import json
import os
-from qtip.ansible_library.modules import apex
+from qtip.ansible_library.modules import apex_generate_inventory
def test_generate_inventory(data_root):
@@ -18,7 +18,7 @@ def test_generate_inventory(data_root):
'apex', 'baremetal_info.json')))
server_info = json.load(open(os.path.join(data_root, 'external',
'apex', 'server_info.json')))
- inventory = apex.generate_inventory(baremetal_info, server_info)
+ inventory = apex_generate_inventory.generate_inventory(baremetal_info, server_info)
assert dict(inventory['hosts']) == {
u'compute': [u'192.0.2.5', u'192.0.2.6'],
u'control': [u'192.0.2.7', u'192.0.2.8', u'192.0.2.9']}
diff --git a/tests/unit/ansible_library/modules/fuel_test.py b/tests/unit/ansible_library/modules/fuel_test.py
index 6a440e0d..e004fc17 100644
--- a/tests/unit/ansible_library/modules/fuel_test.py
+++ b/tests/unit/ansible_library/modules/fuel_test.py
@@ -32,13 +32,7 @@ def test_generate_inventory(data_root):
u'node-28',
u'node-25',
u'node-27'],
- u'mongo': [u'node-24'],
- 'node-23': [u'node-23'],
- 'node-24': [u'node-24'],
- 'node-25': [u'node-25'],
- 'node-26': [u'node-26'],
- 'node-27': [u'node-27'],
- 'node-28': [u'node-28']}
+ u'mongo': [u'node-24']}
assert dict(inventory['hosts_meta']) == {
u'node-23': {'ansible_ssh_host': u'10.20.11.10', 'cluster': 4, 'ip': u'10.20.11.10',
'mac': u'74:4a:a4:01:71:61', 'name': u'Untitled (71:61)', 'online': True, 'os_platform': u'ubuntu',
diff --git a/tests/unit/cli/options_test.py b/tests/unit/cli/options_test.py
index 9dbbe6f3..d7c0f700 100644
--- a/tests/unit/cli/options_test.py
+++ b/tests/unit/cli/options_test.py
@@ -8,6 +8,7 @@
##############################################################################
import pytest
+import re
import sys
from click.testing import CliRunner
@@ -26,7 +27,7 @@ class TestClass(object):
def test_version(self, runner):
result = runner.invoke(cli, ['--version'])
- assert 'dev' in result.output
+ assert re.search(r'\d+\.\d+\.\d+', result.output)
def test_debug(self, runner):
runner.invoke(cli, ['-d'])
diff --git a/tests/unit/reporter/test_testapi.py b/tests/unit/reporter/test_testapi.py
new file mode 100644
index 00000000..85655274
--- /dev/null
+++ b/tests/unit/reporter/test_testapi.py
@@ -0,0 +1,116 @@
+##############################################################################
+# Copyright (c) 2017 akhil.batra@research.iiit.ac.in 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
+##############################################################################
+
+
+import mock
+import pytest
+
+from qtip.reporter import testapi
+
+
+@pytest.mark.parametrize("testapi_url, payload", [
+ ("http://testresults.opnfv.org/test/api/v1", {'project_name': 'qtip',
+ 'case_name': 'fake-case',
+ 'pod_name': 'fake_pod',
+ 'installer': 'fake_installer',
+ 'version': '1',
+ 'scenario': 'fake_scenario',
+ 'criteria': 'fake_criteria',
+ 'build_tag': 'fake_tag',
+ 'start_date': 'fake_date',
+ 'stop_date': 'fake_date',
+ 'details': 'fake:details'}),
+])
+@mock.patch('qtip.reporter.testapi.requests')
+def test_testapi_unavailable(mock_request, testapi_url, payload):
+ mock_request.post.return_value.status_code = testapi.requests.codes.unavailable
+ mock_request.post.return_value.reason = 'Service unavailable'
+ testapi.push_results(testapi_url, payload)
+ mock_request.post.assert_called_with(testapi_url + '/results', json=payload)
+ mock_request.post.return_value.raise_for_status.assert_called()
+
+
+@pytest.mark.parametrize("testapi_url, payload", [
+ ("http://testresults.opnfv.org/test/api/v1", {'project_name': 'qtip',
+ 'case_name': 'fake-case',
+ 'pod_name': 'fake_pod',
+ 'installer': 'fake_installer',
+ 'version': '1',
+ 'scenario': 'fake_scenario',
+ 'criteria': 'fake_criteria',
+ 'build_tag': 'fake_tag',
+ 'start_date': 'fake_date',
+ 'stop_date': 'fake_date',
+ 'details': 'fake:details'}),
+])
+@mock.patch('qtip.reporter.testapi.requests')
+def test_push_results_success(mock_request, testapi_url, payload):
+ mock_request.post.return_value.status_code = testapi.requests.codes.ok
+ mock_request.post.return_value.json.return_value = {'href': 'mock_url'}
+ push_response = testapi.push_results(testapi_url, payload)
+ mock_request.post.assert_called_with(testapi_url + '/results', json=payload)
+ assert push_response['href'] == 'mock_url'
+
+
+@pytest.mark.parametrize("testapi_url, payload", [
+ ("http://testresults.opnfv.org/test/api/v1", {'project_name': 'qtip',
+ 'case_name': 'fake-case',
+ 'pod_name': 'fake_pod',
+ 'installer': 'fake_installer',
+ 'version': '1',
+ 'scenario': 'fake_scenario',
+ 'criteria': 'fake_criteria',
+ 'build_tag': 'fake_tag',
+ 'start_date': 'fake_date',
+ 'stop_date': 'fake_date',
+ 'details': 'fake:details'}),
+])
+@mock.patch('qtip.reporter.testapi.requests')
+def test_push_results_not_found(mock_request, testapi_url, payload):
+ mock_request.post.return_value.status_code = testapi.requests.codes.not_found
+ mock_request.post.return_value.reason = 'Not found'
+ testapi.push_results(testapi_url, payload)
+ mock_request.post.assert_called_with(testapi_url + '/results', json=payload)
+ mock_request.post.return_value.raise_for_status.assert_called()
+
+
+@pytest.mark.parametrize("testapi_url, payload", [
+ ("http://testresults.opnfv.org/test/api/v1", {'project_name': 'qtip',
+ 'case_name': 'fake-case',
+ 'pod_name': 'fake_pod',
+ 'installer': 'fake_installer',
+ 'version': '',
+ 'scenario': None,
+ 'criteria': 'fake_criteria',
+ 'build_tag': 'fake_tag',
+ 'start_date': 'fake_date',
+ 'stop_date': 'fake_date',
+ 'details': 'fake:details'}),
+])
+def test_push_results_invalid_params(testapi_url, payload):
+ with pytest.raises(testapi.InvalidParamsError) as error_invalid:
+ testapi.push_results(testapi_url, payload)
+ assert set(error_invalid.value.params) == {'version', 'scenario'}
+
+
+@pytest.mark.parametrize("testapi_url, payload", [
+ ("http://testresults.opnfv.org/test/api/v1", {'project_name': 'qtip',
+ 'case_name': 'fake-case',
+ 'pod_name': 'fake_pod',
+ 'installer': 'fake_installer',
+ 'criteria': 'fake_criteria',
+ 'build_tag': 'fake_tag',
+ 'start_date': 'fake_date',
+ 'stop_date': 'fake_date',
+ 'details': 'fake:details'}),
+])
+def test_push_results_missing_params(testapi_url, payload):
+ with pytest.raises(testapi.MissingParamsError) as error_missing:
+ testapi.push_results(testapi_url, payload)
+ assert set(error_missing.value.params) == {'version', 'scenario'}