From 5aae841b82584baccfcd9811bf37c2fb34a01b39 Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Sun, 17 Nov 2024 23:07:32 +1100 Subject: [PATCH] GraphQl 0.2.17.7 - test script --- docker-compose.yml | 1 + test/test_helper.py | 166 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 161 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6682481b..ebb11d31 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,6 +25,7 @@ services: - ${APP_DATA_LOCATION}/netalertx/dhcp_samples/pihole_dhcp_2.leases:/etc/pihole/dhcp2.leases - ${APP_DATA_LOCATION}/pihole/etc-pihole/pihole-FTL.db:/etc/pihole/pihole-FTL.db - ${DEV_LOCATION}/server:/app/server + - ${DEV_LOCATION}/test:/app/test - ${DEV_LOCATION}/dockerfiles:/app/dockerfiles # - ${APP_DATA_LOCATION}/netalertx/php.ini:/etc/php/8.2/fpm/php.ini - ${DEV_LOCATION}/install:/app/install diff --git a/test/test_helper.py b/test/test_helper.py index 8ca8d75d..e217065d 100755 --- a/test/test_helper.py +++ b/test/test_helper.py @@ -1,19 +1,19 @@ import sys import pathlib +import sqlite3 +import random +import string +import uuid +from datetime import datetime, timedelta sys.path.append(str(pathlib.Path(__file__).parent.parent.resolve()) + "/server/") - -import datetime - from helper import timeNowTZ, updateSubnets - # ------------------------------------------------------------------------------- def test_helper(): assert timeNow() == datetime.datetime.now().replace(microsecond=0) - # ------------------------------------------------------------------------------- def test_updateSubnets(): # test single subnet @@ -22,8 +22,162 @@ def test_updateSubnets(): assert type(result) is list assert len(result) == 1 - # test multip subnets + # test multiple subnets subnet = ["192.168.1.0/24 --interface=eth0", "192.168.2.0/24 --interface=eth1"] result = updateSubnets(subnet) assert type(result) is list assert len(result) == 2 + +# ------------------------------------------------------------------------------- +# Function to insert 10,000 random device entries +def insert_devices(db_path, num_entries=1): + conn = sqlite3.connect(db_path) + cursor = conn.cursor() + + print(f"{num_entries} entries to generate.") + + # Function to generate a random MAC address + def generate_mac(): + return '00:1A:2B:{:02X}:{:02X}:{:02X}'.format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) + + # Function to generate a random string of given length + def generate_random_string(length): + return ''.join(random.choices(string.ascii_letters + string.digits, k=length)) + + # Function to generate a random date within the last `n` days + def generate_random_date(n_days=365): + start_date = datetime.now() - timedelta(days=random.randint(0, n_days)) + return start_date.strftime('%Y-%m-%d %H:%M:%S') + + # Function to generate a GUID (Globally Unique Identifier) + def generate_guid(): + return str(uuid.uuid4()) # Generates a unique GUID + + # SQL query to insert a new row into Devices table + insert_query = """ + INSERT INTO Devices ( + devMac, + devName, + devOwner, + devType, + devVendor, + devFavorite, + devGroup, + devComments, + devFirstConnection, + devLastConnection, + devLastIP, + devStaticIP, + devScan, + devLogEvents, + devAlertEvents, + devAlertDown, + devSkipRepeated, + devLastNotification, + devPresentLastScan, + devIsNew, + devLocation, + devIsArchived, + devParentMAC, + devParentPort, + devIcon, + devGUID, + devSite, + devSSID, + devSyncHubNode, + devSourcePlugin + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); + """ + + # List of device types, vendors, groups, locations + device_types = ['Phone', 'Laptop', 'Tablet', 'Other'] + vendors = ['Vendor A', 'Vendor B', 'Vendor C'] + groups = ['Group1', 'Group2'] + locations = ['Location A', 'Location B'] + + # Insert the specified number of rows (default is 10,000) + for i in range(num_entries): + dev_mac = generate_mac() + dev_name = f'Device_{i:04d}' + dev_owner = f'Owner_{i % 100:03d}' + dev_type = random.choice(device_types) + dev_vendor = random.choice(vendors) + dev_favorite = random.choice([0, 1]) + dev_group = random.choice(groups) + dev_comments = "" # Left as NULL + dev_first_connection = generate_random_date(365) # Within last 365 days + dev_last_connection = generate_random_date(30) # Within last 30 days + dev_last_ip = f'192.168.0.{random.randint(0, 255)}' + dev_static_ip = random.choice([0, 1]) + dev_scan = random.randint(1, 10) + dev_log_events = random.choice([0, 1]) + dev_alert_events = random.choice([0, 1]) + dev_alert_down = random.choice([0, 1]) + dev_skip_repeated = random.randint(0, 5) + dev_last_notification = "" # Left as NULL + dev_present_last_scan = random.choice([0, 1]) + dev_is_new = random.choice([0, 1]) + dev_location = random.choice(locations) + dev_is_archived = random.choice([0, 1]) + dev_parent_mac = "" # Left as NULL + dev_parent_port = "" # Left as NULL + dev_icon = "" # Left as NULL + dev_guid = generate_guid() # Left as NULL + dev_site = "" # Left as NULL + dev_ssid = "" # Left as NULL + dev_sync_hub_node = "" # Left as NULL + dev_source_plugin = "" # Left as NULL + + # Execute the insert query + cursor.execute(insert_query, ( + dev_mac, + dev_name, + dev_owner, + dev_type, + dev_vendor, + dev_favorite, + dev_group, + dev_comments, + dev_first_connection, + dev_last_connection, + dev_last_ip, + dev_static_ip, + dev_scan, + dev_log_events, + dev_alert_events, + dev_alert_down, + dev_skip_repeated, + dev_last_notification, + dev_present_last_scan, + dev_is_new, + dev_location, + dev_is_archived, + dev_parent_mac, + dev_parent_port, + dev_icon, + dev_guid, + dev_site, + dev_ssid, + dev_sync_hub_node, + dev_source_plugin + )) + + # Commit after every 1000 rows to improve performance + if i % 1000 == 0: + conn.commit() + + # Final commit to save all remaining data + conn.commit() + + # Close the database connection + conn.close() + + print(f"{num_entries} entries have been successfully inserted into the Devices table.") + +# ------------------------------------------------------------------------------- +if __name__ == "__main__": + # Call insert_devices with database path and number of entries as arguments + db_path = "/app/db/app.db" + num_entries = int(sys.argv[1]) if len(sys.argv) > 1 else 10000 + insert_devices(db_path, num_entries)