From 24f6e7b56326eb19bb0a737cee4796349e1c34cb Mon Sep 17 00:00:00 2001 From: jblu Date: Wed, 20 Sep 2023 00:18:26 -0500 Subject: [PATCH] updated unit tests and fixed a bug --- .drone.yml | 4 ++-- qbit-maid.py | 4 ++++ qlist.py | 6 +++--- qprocess.py | 12 ++++++++---- test_dragnet.py | 21 --------------------- test_qbitmaid.py | 4 ++-- test_write_csv.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 62 insertions(+), 32 deletions(-) delete mode 100755 test_dragnet.py create mode 100644 test_write_csv.py diff --git a/.drone.yml b/.drone.yml index 9ca72bf..afae4a7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -39,7 +39,7 @@ steps: image: git.jonb.io/jblu/qbit-maid:latest commands: - python test_qbitmaid.py - - python test_dragnet.py + - python test_write_csv.py when: branch: - main @@ -50,7 +50,7 @@ steps: image: git.jonb.io/jblu/qbit-maid:dev commands: - python test_qbitmaid.py - - python test_dragnet.py + - python test_write_csv.py when: branch: - dev* diff --git a/qbit-maid.py b/qbit-maid.py index eebf871..6c5dbd1 100755 --- a/qbit-maid.py +++ b/qbit-maid.py @@ -73,6 +73,10 @@ class Qbt: self.enable_dragnet = self.config["dragnet"]["enable_dragnet"] self.dragnet_outfile = self.config["dragnet"]["dragnet_outfile"] + #telemetry + self.enable_telemetry = self.config["telemetry"]["enable_telemetry"] + self.telemetry_outfile = self.config["telemetry"]["telemetry_outfile"] + #ignored_categories self.cat_whitelist = self.config["ignored_categories"] diff --git a/qlist.py b/qlist.py index 4b6c82c..2b445a9 100755 --- a/qlist.py +++ b/qlist.py @@ -12,7 +12,7 @@ def build_tor_list(self): # Need a way to tag when the tracker is blank if is_tracker_blank(torrent['tracker']): if self.use_log: - self.tl.warning(f'Torrent doesn\'t have a tracker ["{torrent["name"][0:20]}..."] [{torrent["tracker"]}]hash: {torrent["hash"]}') + self.tl.warning(f'Torrent doesn\'t have a tracker ["{torrent["name"][0:20]}..."] hash: {torrent["hash"]}') self.ignored_counter += 1 continue elif is_cat_ignored(torrent['category'], self.cat_whitelist.values()): @@ -32,7 +32,7 @@ def build_tor_list(self): self.qbt_client.torrents_add_tags(self.tracker_protected_tag,torrent['hash']) elif is_not_protected_tracker(torrent['tracker'], self.tracker_whitelist.values()): self.qbt_client.torrents_add_tags(self.tracker_non_protected_tag,torrent['hash']) - if is_preme(torrent['seeding_time'], self.minimum_age): + if is_preme(torrent['seeding_time'], self.min_age): self.preme_tor_counter += 1 self.tl.debug(f'Premature torrent: ["{torrent["name"][0:20]}..."] Seconds Seeded: [{torrent["seeding_time"]}] hash: {torrent["hash"]}') continue @@ -51,7 +51,7 @@ def build_tor_list(self): def is_preme(seeding_time, minage): - if seeding_time >= minage: + if seeding_time <= minage: return True def is_cat_ignored(cat, catlist): diff --git a/qprocess.py b/qprocess.py index 4662ce6..8c877bb 100755 --- a/qprocess.py +++ b/qprocess.py @@ -3,6 +3,10 @@ def tor_processor(self): If torrent meets criteria for deletion, its infohash_v1 will be appended to self.torrent_hash_delete_list """ for canidate in self.tracker_list: + if self.enable_telemetry: + header = ['state','ratio','tags','added','age','time','thash','tname','trname'] + row = [canidate['state'],canidate['ratio'],canidate["tags"],canidate['added_on'],self.age,self.t.time(),canidate['infohash_v1'],canidate["name"][0:20],canidate['tracker']] + write_csv(self.cv,self.telemetry_outfile,header,row) if self.use_log: self.tl.debug(f'---Reviewing canidate: ["{canidate["name"][0:20]}..."] {canidate["infohash_v1"]}---') if is_downloading(canidate['state']): @@ -30,7 +34,9 @@ def tor_processor(self): self.tl.info(f'Submitted ["{canidate["name"][0:20]}..."] for deletion.') else: if self.enable_dragnet: - dragnet(self.cv,self.dragnet_outfile,canidate['state'],canidate['ratio'],canidate["tags"],canidate['added_on'],self.age,self.t.time(),canidate['infohash_v1'],canidate["name"][0:20],canidate['tracker']) + header = ['state','ratio','tags','added','age','time','thash','tname','trname'] + row = [canidate['state'],canidate['ratio'],canidate["tags"],canidate['added_on'],self.age,self.t.time(),canidate['infohash_v1'],canidate["name"][0:20],canidate['tracker']] + write_csv(self.cv,self.dragnet_outfile,header,row) self.tl.info(f'["{canidate["name"][0:20]}..."] is orphaned.') self.up_tor_counter += 1 continue @@ -68,9 +74,7 @@ def is_not_protected_tor(setnonprotectedtag, tortags): if setnonprotectedtag in tortags: return True -def dragnet(csv_obj,outfile,state,ratio,tags,added,age,time,thash,tname,trname): - header = ['state','ratio','tags','added','age','time','thash','tname','trname'] - row = [state,ratio,tags,added,age,time,thash,tname,trname] +def write_csv(csv_obj,outfile,header,row): with open(outfile, 'a+', encoding='UTF8', newline='') as f: writer = csv_obj.writer(f) if f.tell() == 0: diff --git a/test_dragnet.py b/test_dragnet.py deleted file mode 100755 index a1fca29..0000000 --- a/test_dragnet.py +++ /dev/null @@ -1,21 +0,0 @@ -from qprocess import dragnet -import csv -import unittest - -class TestDragnet(unittest.TestCase): - def test_dragnet_sanity(self): - self.cv = csv - outfile = './test_outfile.csv' - state = 'downloading' - ratio = 1.05 - tags = 'ipt' - added = 1 - age = 240000 - time = 123456 - thash = 'asfasdf23412adfqwer' - tname = 'thisismynamehahahah' - trname = 'https://localhost.stackoverflow.tech/317332f1c125bc9c1b9b14fb8e054908/announce' - dragnet(self.cv,outfile,state,ratio,tags,added,age,time,thash,tname,trname) - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/test_qbitmaid.py b/test_qbitmaid.py index 3fefd99..36e20c4 100755 --- a/test_qbitmaid.py +++ b/test_qbitmaid.py @@ -5,8 +5,8 @@ from qprocess import is_downloading,is_protected_under_ratio,is_old_tor,is_prote class TestQbitmaid(unittest.TestCase): def test_ispreme_sanity(self): self.assertTrue(is_preme(1,1)) - self.assertTrue(is_preme(2,1)) - self.assertFalse(is_preme(1,2)) + self.assertTrue(is_preme(1,2)) + self.assertFalse(is_preme(2,1)) def test_ispreme(self): pass diff --git a/test_write_csv.py b/test_write_csv.py new file mode 100644 index 0000000..46fdccb --- /dev/null +++ b/test_write_csv.py @@ -0,0 +1,43 @@ +from qprocess import write_csv +import csv +import unittest +import os +# Torrent Items needed for testing +# canidate['state'] {canidate["ratio"]} {torrent["tags"]} torrent["seeding_time"] {torrent["category"]} {torrent["name"][0:20]} {canidate["time_active"]} +class TestWriteCSV(unittest.TestCase): + def test_write_csv_dragnet(self): + self.cv = csv + outfile = './test_dragnet_outfile.csv' + state = 'downloading' + ratio = 1.05 + tags = 'ipt' + added = 1 + age = 240000 + time = 123456 + thash = 'asfasdf23412adfqwer' + tname = 'thisismynamehahahah' + trname = 'https://localhost.stackoverflow.tech/317332f1c125bc9c1b9b14fb8e054908/announce' + header = ['state','ratio','tags','added','age','time','thash','tname','trname'] + row = [state,ratio,tags,added,age,time,thash,tname,trname] + write_csv(self.cv,outfile,header,row) + self.assertTrue(os.path.exists(outfile)) + + def test_write_csv_telemetry(self): + self.cv = csv + outfile = './test_telemetry_outfile.csv' + state = 'downloading' + ratio = 1.05 + tags = 'ipt' + added = 1 + age = 240000 + time = 123456 + thash = 'asfasdf23412adfqwer' + tname = 'thisismynamehahahah' + trname = 'https://localhost.stackoverflow.tech/317332f1c125bc9c1b9b14fb8e054908/announce' + header = ['state','ratio','tags','added','age','time','thash','tname','trname'] + row = [state,ratio,tags,added,age,time,thash,tname,trname] + write_csv(self.cv,outfile,header,row) + self.assertTrue(os.path.exists(outfile)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file