Setup testing structure
This commit is contained in:
parent
f06aeda0c6
commit
5cc7e2bae0
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -3,5 +3,5 @@
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.12 (pythonProject)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (pythonProject)" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (2024-bsc-sebastian-lenzlinger)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
14
.idea/webResources.xml
generated
Normal file
14
.idea/webResources.xml
generated
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="WebResourcesPaths">
|
||||
<contentEntries>
|
||||
<entry url="file://$PROJECT_DIR$">
|
||||
<entryData>
|
||||
<resourceRoots>
|
||||
<path value="file://$PROJECT_DIR$/data" />
|
||||
</resourceRoots>
|
||||
</entryData>
|
||||
</entry>
|
||||
</contentEntries>
|
||||
</component>
|
||||
</project>
|
||||
167
.idea/workspace.xml
generated
167
.idea/workspace.xml
generated
@ -4,7 +4,29 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="7a3ac8e1-7fbf-4aa7-9cf9-a51d7ade8503" name="Changes" comment="Update gitignore" />
|
||||
<list default="true" id="7a3ac8e1-7fbf-4aa7-9cf9-a51d7ade8503" name="Changes" comment="Start tracking development config files.">
|
||||
<change afterPath="$PROJECT_DIR$/.idea/webResources.xml" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/kydcap/subcommands/__init__.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/fixtures/__init__.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/fixtures/shared_fixtures.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/models/test_capture_metadata_model.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/models/test_device_metadata_model.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/subcommands/test_initialize_device_root_dir.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/subcommands/test_sniff.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/test_main.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/utils/test_capture_metadata_utils.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/utils/test_device_metadata_utils.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/code/tests/utils/test_tcpdump_utils.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/archive/metadata_utils.py" beforeDir="false" afterPath="$PROJECT_DIR$/archive/metadata_utils.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/config.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/config.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/__main__.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/models/capture_metadata.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/models/capture_metadata_model.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/models/device_metadata.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/models/device_metadata_model.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/subcommands/initialize_device_root_dir.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/subcommands/initialize_device_root_dir.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/code/kydcap/subcommands/sniff.py" beforeDir="false" afterPath="$PROJECT_DIR$/code/kydcap/subcommands/sniff.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
@ -21,7 +43,7 @@
|
||||
<option name="PUSH_AUTO_UPDATE" value="true" />
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="main" />
|
||||
<entry key="$PROJECT_DIR$" value="devel" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
@ -42,9 +64,12 @@
|
||||
"ASKED_ADD_EXTERNAL_FILES": "true",
|
||||
"ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true",
|
||||
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"Python.__init__.executor": "Run",
|
||||
"Python.__main__.executor": "Run",
|
||||
"Python.main.executor": "Run",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "devel",
|
||||
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"last_opened_file_path": "/home/slnopriv/projects/2024-bsc-sebastian-lenzlinger/code/kydcap/utils/device_metadata_utils.py",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
@ -64,6 +89,63 @@
|
||||
<recent name="$PROJECT_DIR$/code/kydcap/utils" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.__main__">
|
||||
<configuration name="__init__" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="2024-bsc-sebastian-lenzlinger" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/code/kydcap" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/code/kydcap/__init__.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="__main__" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
||||
<module name="2024-bsc-sebastian-lenzlinger" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/code/kydcap" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/code/kydcap/__main__.py" />
|
||||
<option name="PARAMETERS" value="init-device-root --dynamic" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Python.__main__" />
|
||||
<item itemvalue="Python.__init__" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.__init__" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
@ -83,7 +165,7 @@
|
||||
<workItem from="1713967495566" duration="6927000" />
|
||||
<workItem from="1714554228183" duration="34000" />
|
||||
<workItem from="1714554269789" duration="56478000" />
|
||||
<workItem from="1714616237168" duration="642000" />
|
||||
<workItem from="1714616237168" duration="6135000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Add code for capture testbed. This is a huge commit. End of day sync...">
|
||||
<option name="closed" value="true" />
|
||||
@ -109,19 +191,90 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1714616343905</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="4" />
|
||||
<task id="LOCAL-00004" summary="Add test module.">
|
||||
<option name="closed" value="true" />
|
||||
<created>1714617162903</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1714617162903</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00005" summary="Update gitignore again.">
|
||||
<option name="closed" value="true" />
|
||||
<created>1714617231842</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1714617231842</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00006" summary="Start tracking development config files.">
|
||||
<option name="closed" value="true" />
|
||||
<created>1714617266799</created>
|
||||
<option name="number" value="00006" />
|
||||
<option name="presentableId" value="LOCAL-00006" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1714617266799</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="7" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="RECENT_FILTERS">
|
||||
<map>
|
||||
<entry key="Branch">
|
||||
<value>
|
||||
<list>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="HEAD" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
<RecentGroup>
|
||||
<option name="FILTER_VALUES">
|
||||
<option value="devel" />
|
||||
</option>
|
||||
</RecentGroup>
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State>
|
||||
<option name="FILTERS">
|
||||
<map>
|
||||
<entry key="branch">
|
||||
<value>
|
||||
<list>
|
||||
<option value="HEAD" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</State>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="Add code for capture testbed. This is a huge commit. End of day sync..." />
|
||||
<MESSAGE value="Add some notes." />
|
||||
<MESSAGE value="Update gitignore" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Update gitignore" />
|
||||
<MESSAGE value="Add test module." />
|
||||
<MESSAGE value="Update gitignore again." />
|
||||
<MESSAGE value="Start tracking development config files." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Start tracking development config files." />
|
||||
</component>
|
||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||
<SUITE FILE_PATH="coverage/2024_bsc_sebastian_lenzlinger$main.coverage" NAME="main Coverage Results" MODIFIED="1714615309881" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/code/kydcap" />
|
||||
<SUITE FILE_PATH="coverage/2024_bsc_sebastian_lenzlinger$__init__.coverage" NAME="__init__ Coverage Results" MODIFIED="1714619300966" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/code/kydcap" />
|
||||
<SUITE FILE_PATH="coverage/2024_bsc_sebastian_lenzlinger$main.coverage" NAME="__main__ Coverage Results" MODIFIED="1714619560177" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/code/kydcap" />
|
||||
</component>
|
||||
</project>
|
||||
@ -3,7 +3,7 @@ from pathlib import Path
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from kydcap.models.device_metadata import DeviceMetadata
|
||||
from kydcap.models.device_metadata_model import DeviceMetadata
|
||||
from kydcap.config import DEVICE_METADATA_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()
|
||||
@ -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()
|
||||
|
||||
0
code/kydcap/subcommands/__init__.py
Normal file
0
code/kydcap/subcommands/__init__.py
Normal 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:
|
||||
|
||||
@ -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
0
code/tests/fixtures/__init__.py
vendored
Normal file
15
code/tests/fixtures/shared_fixtures.py
vendored
Normal file
15
code/tests/fixtures/shared_fixtures.py
vendored
Normal 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
|
||||
0
code/tests/models/test_capture_metadata_model.py
Normal file
0
code/tests/models/test_capture_metadata_model.py
Normal file
0
code/tests/models/test_device_metadata_model.py
Normal file
0
code/tests/models/test_device_metadata_model.py
Normal file
0
code/tests/subcommands/test_sniff.py
Normal file
0
code/tests/subcommands/test_sniff.py
Normal file
0
code/tests/test_main.py
Normal file
0
code/tests/test_main.py
Normal file
6
code/tests/utils/test_capture_metadata_utils.py
Normal file
6
code/tests/utils/test_capture_metadata_utils.py
Normal 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
|
||||
0
code/tests/utils/test_device_metadata_utils.py
Normal file
0
code/tests/utils/test_device_metadata_utils.py
Normal file
0
code/tests/utils/test_tcpdump_utils.py
Normal file
0
code/tests/utils/test_tcpdump_utils.py
Normal file
Loading…
x
Reference in New Issue
Block a user