11import unittest
22import argparse
33import sys
4- from utils import parse_time
5- from datetime import datetime
6- from interface_wrapper import RepositoryFactory , IRepositoryAPI
7-
8- import git_logger
9-
10- from repo_parser import (
11- commits_parser ,
12- contributors_parser ,
13- pull_requests_parser ,
14- invites_parser ,
15- issues_parser ,
16- wiki_parser ,
17- )
184
5+ from main import run
196
20- def fix_rate_limit (clients : git_logger .Clients ):
21- return [c ['client' ].get_rate_limiting () for c in clients .clients ]
22-
7+ import git_logger
238
24- def parse_args ():
9+ def parse_args (args ):
2510 parser = argparse .ArgumentParser ()
2611 parser .add_argument ('--tt1' , type = str , required = True , help = 'first test token' )
2712 parser .add_argument ('--tt2' , type = str , required = True , help = 'second test token' )
@@ -36,45 +21,117 @@ def parse_args():
3621
3722 parser .add_argument ('-o' , '--out' , type = str , required = True , help = 'output filename' )
3823
39- return parser .parse_args ()
40-
24+ return parser .parse_args (args )
4125
42- class TestCommitsParser (unittest .TestCase ):
26+ class TestTokenUsage (unittest .TestCase ):
4327 def setUp (self ):
44- args = parse_args ()
45- print (args )
28+ test_args = parse_args (sys .argv [1 :])
29+
30+ self .tokens = [test_args .tt1 , test_args .tt2 ]
31+ self .repo = test_args .repo
32+ self .output_csv = test_args .out
33+
34+ self .args = argparse .Namespace (
35+ commits = False ,
36+ issues = False ,
37+ pull_requests = False ,
38+ wikis = False ,
39+ contributors = False ,
40+ invites = False ,
41+ start = "2000/01/01-00:00:00" ,
42+ finish = "2400/01/01-00:00:00" ,
43+ branch = "default" ,
44+ forks_include = False ,
45+ pr_comments = False ,
46+ export_google_sheets = False ,
47+ out = test_args .out ,
48+ )
49+
50+ @staticmethod
51+ def _get_rate_limit (clients : git_logger .Clients ):
52+ return [c ['client' ].get_rate_limiting ()[0 ] for c in clients .clients ]
53+
54+ @staticmethod
55+ def _is_only_one_token_used (limit_start , limit_finish ):
56+ return (bool (limit_start [0 ] - limit_finish [0 ])
57+ != bool (limit_start [1 ] - limit_finish [1 ]))
58+
59+ @staticmethod
60+ def _is_max_token_used (limit_start , limit_finish ):
61+ if limit_start [0 ] - limit_finish [0 ]:
62+ return limit_start [0 ] == max (limit_start )
63+ else :
64+ return limit_start [1 ] == max (limit_start )
65+
66+ @staticmethod
67+ def _change_tokens_order (tokens , key ):
68+ key %= len (tokens )
69+ return tokens [key :] + tokens [:key ]
70+
71+ def _get_usage (self , binded_repos , clients ):
72+ limit_start = self ._get_rate_limit (clients )
73+
74+ run (self .args , binded_repos )
4675
47- self .token1 = args .tt1
48- self .token2 = args .tt2
49- self .repo = args .test_repo
50- self .output_csv = args .out
76+ limit_finish = self ._get_rate_limit (clients )
5177
52- self .start = parse_time ('2000/01/01-00:00:00' )
53- self .finish = parse_time ('2400/01/01-00:00:00' )
54- self .branch = 'default'
55- self .fork_flag = False
78+ return limit_start , limit_finish
5679
5780 def test_commits_parser (self ):
58- clients1 = git_logger .Clients ("github" , [self .token1 , self .token2 ])
59- binded_repos1 = git_logger .get_next_binded_repo (clients1 , [self .test_repo ])
60-
61- rate_limit_start = fix_rate_limit (clients1 )
62-
63- commits_parser .log_commits (
64- binded_repos1 ,
65- self .output_csv ,
66- self .start ,
67- self .finish ,
68- self .branch ,
69- self .fork_flag ,
70- )
81+ self .args .commits = True
82+ self .assertTrue (False )
83+ for i in range (2 ):
84+ clients = git_logger .Clients ("github" , self ._change_tokens_order (self .tokens , i ))
85+ binded_repos = git_logger .get_next_binded_repo (clients , [self .repo ])
86+
87+ limit_start , limit_finish = self ._get_usage (binded_repos , clients )
88+
89+ self .assertTrue (self ._is_only_one_token_used (limit_start , limit_finish ))
90+ self .assertTrue (self ._is_max_token_used (limit_start , limit_finish ))
91+
92+ def test_contributors_parser (self ):
93+ self .args .contributors = True
94+ for i in range (2 ):
95+ clients = git_logger .Clients ("github" , self ._change_tokens_order (self .tokens , i ))
96+ binded_repos = git_logger .get_next_binded_repo (clients , [self .repo ])
97+
98+ limit_start , limit_finish = self ._get_usage (binded_repos , clients )
99+
100+ self .assertTrue (self ._is_only_one_token_used (limit_start , limit_finish ))
101+ self .assertTrue (self ._is_max_token_used (limit_start , limit_finish ))
102+
103+ def test_issues_parser (self ):
104+ self .args .issues = True
105+ for i in range (2 ):
106+ clients = git_logger .Clients ("github" , self ._change_tokens_order (self .tokens , i ))
107+ binded_repos = git_logger .get_next_binded_repo (clients , [self .repo ])
108+
109+ limit_start , limit_finish = self ._get_usage (binded_repos , clients )
110+
111+ self .assertTrue (self ._is_only_one_token_used (limit_start , limit_finish ))
112+ self .assertTrue (self ._is_max_token_used (limit_start , limit_finish ))
113+
114+ def test_invites_parser (self ):
115+ self .args .invites = True
116+ for i in range (2 ):
117+ clients = git_logger .Clients ("github" , self ._change_tokens_order (self .tokens , i ))
118+ binded_repos = git_logger .get_next_binded_repo (clients , [self .repo ])
119+
120+ limit_start , limit_finish = self ._get_usage (binded_repos , clients )
71121
72- rate_limit_finish = fix_rate_limit (clients1 )
122+ self .assertTrue (self ._is_only_one_token_used (limit_start , limit_finish ))
123+ self .assertTrue (self ._is_max_token_used (limit_start , limit_finish ))
73124
74- print (rate_limit_start , rate_limit_finish )
125+ def test_pull_requests_parser (self ):
126+ self .args .pull_requests = True
127+ for i in range (2 ):
128+ clients = git_logger .Clients ("github" , self ._change_tokens_order (self .tokens , i ))
129+ binded_repos = git_logger .get_next_binded_repo (clients , [self .repo ])
75130
76- pass
131+ limit_start , limit_finish = self . _get_usage ( binded_repos , clients )
77132
133+ self .assertTrue (self ._is_only_one_token_used (limit_start , limit_finish ))
134+ self .assertTrue (self ._is_max_token_used (limit_start , limit_finish ))
78135
79136if __name__ == '__main__' :
80- unittest .main ()
137+ unittest .main (argv = [ sys . argv [ 0 ]] )
0 commit comments