From 370ad5ac85232e79b3c953417c29ba86611e2d09 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Tue, 14 Apr 2020 18:33:49 +0200 Subject: [PATCH 01/10] add descriptor unit test --- test/module/test_descriptor.py | 61 ++++++++++++++++++++++++++++++++++ test/pytest.ini | 2 +- test/test_config.yaml | 9 +++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 test/module/test_descriptor.py diff --git a/test/module/test_descriptor.py b/test/module/test_descriptor.py new file mode 100644 index 0000000..c064170 --- /dev/null +++ b/test/module/test_descriptor.py @@ -0,0 +1,61 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +"""! + ____ ____ ______ __ __ __ _____ + / __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ / + / __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ < + / /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ / +/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/ + German BOS Information Script + by Bastian Schroll + +@file: test_descriptor.py +@date: 14.04.2020 +@author: Bastian Schroll +@description: Unittests for BOSWatch. File have to run as "pytest" unittest +""" +# problem of the pytest fixtures +# pylint: disable=redefined-outer-name +import logging +import pytest +from boswatch.utils import paths + +from boswatch.configYaml import ConfigYAML +from boswatch.packet import Packet +from module.descriptor import BoswatchModule as Descriptor + + +def setup_method(method): + logging.debug("[TEST] %s.%s", method.__module__, method.__name__) + + +@pytest.fixture +def makeDescriptor(): + config = ConfigYAML() + assert config.loadConfigFile(paths.TEST_PATH + "test_config.yaml") is True + descriptor = Descriptor(config.get("descriptor_test")) + return descriptor + + +@pytest.fixture +def makePacket(): + packet = Packet() + return packet + + +def test_descriptorFoundFirst(makeDescriptor, makePacket): + makePacket.set("tone", "12345") + makePacket = makeDescriptor.doWork(makePacket) + assert makePacket.get("description") == "Test 12345" + + +def test_descriptorFoundSecond(makeDescriptor, makePacket): + makePacket.set("tone", "23456") + makePacket = makeDescriptor.doWork(makePacket) + assert makePacket.get("description") == "Test 23456" + + +def test_descriptorNotFound(makeDescriptor, makePacket): + makePacket.set("tone", "99999") + makePacket = makeDescriptor.doWork(makePacket) + assert makePacket.get("description") == "99999" diff --git a/test/pytest.ini b/test/pytest.ini index 6e8fc02..e5d4311 100644 --- a/test/pytest.ini +++ b/test/pytest.ini @@ -8,7 +8,7 @@ # by Bastian Schroll [pytest] -addopts = -v --pep8 --flakes --cov=boswatch/ --cov-report=term-missing --log-level=CRITICAL +addopts = -v --pep8 --flakes --cov=boswatch/ --cov=module/ --cov plugin/ --cov-report=term-missing --log-level=CRITICAL # classic or progress console_output_style = progress diff --git a/test/test_config.yaml b/test/test_config.yaml index 6840f26..f20f454 100644 --- a/test/test_config.yaml +++ b/test/test_config.yaml @@ -30,3 +30,12 @@ list1: - two - three - string1 + +descriptor_test: + - scanField: tone + descrField: description + descriptions: + - for: 12345 + add: Test 12345 + - for: 23456 + add: Test 23456 \ No newline at end of file From e5141c186d3dfad983eac9c3fb6ea420a0507f4e Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Tue, 14 Apr 2020 18:47:12 +0200 Subject: [PATCH 02/10] add comments --- test/module/test_descriptor.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/module/test_descriptor.py b/test/module/test_descriptor.py index c064170..6309e79 100644 --- a/test/module/test_descriptor.py +++ b/test/module/test_descriptor.py @@ -31,6 +31,7 @@ def setup_method(method): @pytest.fixture def makeDescriptor(): + """!Build a descriptor object with loaded configuration""" config = ConfigYAML() assert config.loadConfigFile(paths.TEST_PATH + "test_config.yaml") is True descriptor = Descriptor(config.get("descriptor_test")) @@ -39,23 +40,27 @@ def makeDescriptor(): @pytest.fixture def makePacket(): + """!Build a BW Packet object""" packet = Packet() return packet def test_descriptorFoundFirst(makeDescriptor, makePacket): + """!Run descriptor on the first entry in list""" makePacket.set("tone", "12345") makePacket = makeDescriptor.doWork(makePacket) assert makePacket.get("description") == "Test 12345" def test_descriptorFoundSecond(makeDescriptor, makePacket): + """!Run descriptor on the second entry in list""" makePacket.set("tone", "23456") makePacket = makeDescriptor.doWork(makePacket) assert makePacket.get("description") == "Test 23456" def test_descriptorNotFound(makeDescriptor, makePacket): + """!Run descriptor on a non existent field""" makePacket.set("tone", "99999") makePacket = makeDescriptor.doWork(makePacket) assert makePacket.get("description") == "99999" From 806a3d866921deb10c819fbc68e6eda758196419 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Wed, 15 Apr 2020 08:35:00 +0200 Subject: [PATCH 03/10] add non existent field test --- test/module/test_descriptor.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/module/test_descriptor.py b/test/module/test_descriptor.py index 6309e79..67cd4e3 100644 --- a/test/module/test_descriptor.py +++ b/test/module/test_descriptor.py @@ -60,7 +60,13 @@ def test_descriptorFoundSecond(makeDescriptor, makePacket): def test_descriptorNotFound(makeDescriptor, makePacket): - """!Run descriptor on a non existent field""" + """!Run descriptor no matching data found""" makePacket.set("tone", "99999") makePacket = makeDescriptor.doWork(makePacket) assert makePacket.get("description") == "99999" + + +def test_descriptorScanFieldNotAvailable(makeDescriptor, makePacket): + """!Run descriptor on a non existent scanField""" + makePacket = makeDescriptor.doWork(makePacket) + assert makePacket.get("description") == None \ No newline at end of file From 61819cda0879761255d66461934fec5daa458ea1 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Wed, 15 Apr 2020 08:52:44 +0200 Subject: [PATCH 04/10] little fix --- test/module/test_descriptor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/module/test_descriptor.py b/test/module/test_descriptor.py index 67cd4e3..48bb2eb 100644 --- a/test/module/test_descriptor.py +++ b/test/module/test_descriptor.py @@ -69,4 +69,4 @@ def test_descriptorNotFound(makeDescriptor, makePacket): def test_descriptorScanFieldNotAvailable(makeDescriptor, makePacket): """!Run descriptor on a non existent scanField""" makePacket = makeDescriptor.doWork(makePacket) - assert makePacket.get("description") == None \ No newline at end of file + assert makePacket.get("description") is None \ No newline at end of file From 8e4dba28e3480384c7139fd43aa0b29aef06ba5b Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Wed, 15 Apr 2020 09:24:02 +0200 Subject: [PATCH 05/10] PEP8 new line at end --- test/module/test_descriptor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/module/test_descriptor.py b/test/module/test_descriptor.py index 48bb2eb..c2d63a2 100644 --- a/test/module/test_descriptor.py +++ b/test/module/test_descriptor.py @@ -69,4 +69,4 @@ def test_descriptorNotFound(makeDescriptor, makePacket): def test_descriptorScanFieldNotAvailable(makeDescriptor, makePacket): """!Run descriptor on a non existent scanField""" makePacket = makeDescriptor.doWork(makePacket) - assert makePacket.get("description") is None \ No newline at end of file + assert makePacket.get("description") is None From 85b7cb34685a73cbbcb2c086c93d212dbd4e7526 Mon Sep 17 00:00:00 2001 From: Schrolli91 Date: Fri, 17 Apr 2020 23:38:14 +0200 Subject: [PATCH 06/10] add py 3.8 for tests --- .github/workflows/run_pytest.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run_pytest.yml b/.github/workflows/run_pytest.yml index 1b12138..cd60fa9 100644 --- a/.github/workflows/run_pytest.yml +++ b/.github/workflows/run_pytest.yml @@ -9,22 +9,27 @@ jobs: max-parallel: 3 matrix: os: [ubuntu-latest] - python-version: [3.5, 3.6, 3.7] + python-version: [3.5, 3.6, 3.7, 3.8] runs-on: ${{matrix.os}} + steps: - uses: actions/checkout@v1 + - name: Set up Python ${{matrix.python-version}} at ${{matrix.os}} uses: actions/setup-python@v1 with: python-version: ${{matrix.python-version}} + - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt mkdir log/ + - name: Test with pytest run: | pytest -c 'test/pytest.ini' + - name: Save artifacts uses: actions/upload-artifact@master with: From af2fa094a05e2a2603407de3aace1297903b7fd3 Mon Sep 17 00:00:00 2001 From: Schrolli91 Date: Fri, 17 Apr 2020 23:40:43 +0200 Subject: [PATCH 07/10] remove max parallel --- .github/workflows/run_pytest.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/run_pytest.yml b/.github/workflows/run_pytest.yml index cd60fa9..30b9fe5 100644 --- a/.github/workflows/run_pytest.yml +++ b/.github/workflows/run_pytest.yml @@ -6,7 +6,6 @@ jobs: build: strategy: - max-parallel: 3 matrix: os: [ubuntu-latest] python-version: [3.5, 3.6, 3.7, 3.8] @@ -29,7 +28,7 @@ jobs: - name: Test with pytest run: | pytest -c 'test/pytest.ini' - + - name: Save artifacts uses: actions/upload-artifact@master with: From 940075ed85d0c6cff2beffd206a031041046e791 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Tue, 14 Apr 2020 22:34:17 +0200 Subject: [PATCH 08/10] Add Fix for descriptor --- module/descriptor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/descriptor.py b/module/descriptor.py index 77a28f8..f14f153 100644 --- a/module/descriptor.py +++ b/module/descriptor.py @@ -42,10 +42,10 @@ class BoswatchModule(ModuleBase): @param bwPacket: A BOSWatch packet instance""" for descriptor in self.config: + bwPacket.set(descriptor.get("descrField"), bwPacket.get(descriptor.get("scanField"))) for description in descriptor.get("descriptions"): if not bwPacket.get(descriptor.get("scanField")): break # scanField is not available in this packet - bwPacket.set(descriptor.get("descrField"), description.get("for")) if str(description.get("for")) == bwPacket.get(descriptor.get("scanField")): logging.debug("Description '%s' added in packet field '%s'", description.get("add"), descriptor.get("descrField")) From bfa9b0b3ceec08871c2cf3dfe9a9a241209aebc2 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Sat, 18 Apr 2020 14:09:59 +0200 Subject: [PATCH 09/10] return bwpacket if scanField is None --- module/descriptor.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/module/descriptor.py b/module/descriptor.py index f14f153..b470c83 100644 --- a/module/descriptor.py +++ b/module/descriptor.py @@ -42,6 +42,8 @@ class BoswatchModule(ModuleBase): @param bwPacket: A BOSWatch packet instance""" for descriptor in self.config: + if bwPacket.get(descriptor.get("scanField")) is None: + return bwPacket bwPacket.set(descriptor.get("descrField"), bwPacket.get(descriptor.get("scanField"))) for description in descriptor.get("descriptions"): if not bwPacket.get(descriptor.get("scanField")): From fde99396b8cdc1a742aaa4bd61f0c7d98e0046e2 Mon Sep 17 00:00:00 2001 From: Jan Speller Date: Sat, 18 Apr 2020 14:14:56 +0200 Subject: [PATCH 10/10] fix error --- module/descriptor.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/module/descriptor.py b/module/descriptor.py index b470c83..cf17530 100644 --- a/module/descriptor.py +++ b/module/descriptor.py @@ -42,12 +42,10 @@ class BoswatchModule(ModuleBase): @param bwPacket: A BOSWatch packet instance""" for descriptor in self.config: - if bwPacket.get(descriptor.get("scanField")) is None: - return bwPacket + if not bwPacket.get(descriptor.get("scanField")): + break # scanField is not available in this packet bwPacket.set(descriptor.get("descrField"), bwPacket.get(descriptor.get("scanField"))) for description in descriptor.get("descriptions"): - if not bwPacket.get(descriptor.get("scanField")): - break # scanField is not available in this packet if str(description.get("for")) == bwPacket.get(descriptor.get("scanField")): logging.debug("Description '%s' added in packet field '%s'", description.get("add"), descriptor.get("descrField"))