Setup testing structure

This commit is contained in:
Sebastian Lenzlinger
2024-05-02 06:01:05 +02:00
parent f06aeda0c6
commit 5cc7e2bae0
21 changed files with 235 additions and 20 deletions

View File

@@ -1,7 +1,8 @@
#!/usr/bin/env python3
import argparse
from subcommands.sniff import setup_sniff_parser
from kydcap.subcommands.sniff import setup_sniff_parser
from kydcap.subcommands.initialize_device_root_dir import setup_init_root_dir_parser
CAP_DIR_PREFIX = ...
@@ -15,12 +16,25 @@ def setup_argparse():
subparsers = root_parser.add_subparsers(title="subcommands", required=True, dest="command")
setup_sniff_parser(subparsers)
setup_init_root_dir_parser(subparsers)
return root_parser
if __name__ == "__main__":
def main():
parser = setup_argparse()
args = parser.parse_args()
# if args.command
print(args)
if args.command:
try:
args.func(args)
except KeyboardInterrupt:
print("Received keyboard interrupt. Exiting...")
exit(1)
except Exception as e:
print(f"Error: {e}")
# create_capture_directory(args.device_name)
if __name__ == "__main__":
main()

View File

@@ -1,6 +1,7 @@
from datetime import datetime
from enum import Flag, unique, global_enum
DEVICE_METADATA_FILE = "device-metadata.json"
CAPTURE_METADATA_FILE = "capture-metadata.json"
TODAY_DATE_STRING = datetime.now().strftime("%d%b%Y").lower()

View File

View File

@@ -1,19 +1,20 @@
import pathlib
from kydcap.config import DEVICE_METADATA_FILE
from kydcap.models.device_metadata import DeviceMetadata
from kydcap.models.device_metadata_model import DeviceMetadata
def setup_init_root_dir_parser(subparsers):
parser = subparsers.add_parser("init-device-root", aliases=["idr"])
parser.add_argument("root_dir", type=pathlib.Path, default=pathlib.Path.cwd())
parser.add_argument("--root_dir", type=pathlib.Path, default=pathlib.Path.cwd())
group = parser.add_mutually_exclusive_group()
group.add_argument("--dynamic", action="store_false", help="enable guided setup")
group.add_argument("-n", "--name", action="store", required=True, type=str, help="name of device")
group.add_argument("--dynamic", action="store_true", help="enable guided setup", default=False)
group.add_argument("-n", "--name", action="store", type=str, help="name of device")
parser.set_defaults(func=handle_idr)
def handle_idr(args):
print("Entered kydcap initialize-device-root")
root_dir = args.root_dir
device_name = None
if args.dynamic:

View File

@@ -2,7 +2,7 @@ import subprocess
from pathlib import Path
from kydcap.config import *
from kydcap.models.device_metadata import DeviceMetadata
from kydcap.models.device_metadata_model import DeviceMetadata
def setup_sniff_parser(subparsers):
@@ -85,7 +85,18 @@ def handle_sniff(args):
pass
print('Executing: ' + ' '.join(cmd))
# TODO maybe dump this into file -> put into device metadata
start_time = datetime.now().strftime('%H:%M:%S')
subprocess.run(cmd)
stop_time = datetime.now().strftime('%H:%M:%S')
try:
start_time = datetime.now().strftime('%H:%M:%S')
subprocess.run(cmd)
stop_time = datetime.now().strftime('%H:%M:%S')
except KeyboardInterrupt:
print("Received keyboard interrupt.")
exit(ReturnCodes.ABORTED)
except subprocess.CalledProcessError as e:
print(f"Failed to capture packet: {e}")
exit(ReturnCodes.FAILURE)
except Exception as e:
print(f"Failed to capture packet: {e}")
exit(ReturnCodes.FAILURE)
return ReturnCodes.SUCCESS

0
code/tests/fixtures/__init__.py vendored Normal file
View File

15
code/tests/fixtures/shared_fixtures.py vendored Normal file
View File

@@ -0,0 +1,15 @@
import pytest
import tempfile
from pathlib import Path
@pytest.fixture(scope='session')
def tmp_dir():
with tempfile.TemporaryDirectory() as tmp_dir:
yield Path(tmp_dir)
@pytest.fixture
def mock_device_metadata_json_(tmp_dir):
with tempfile.TemporaryDirectory() as tmp_dir:
pass

View File

0
code/tests/test_main.py Normal file
View File

View File

@@ -0,0 +1,6 @@
import json
from pathlib import Path
from unittest.mock import mock_open, patch
import pytest
from kydcap.utils.capture_metadata_utils import set_device_ip_address

View File