def do_login(self, line): ''' User login Usage: login -u <userId> -p <password> ''' url = self.config['server_url'] + '/user/auth' inputs = cmd_str2dic(line) # check inputs if '-u' not in inputs: print('[!] missing -u for user id') return elif '-p' not in inputs: print('[!] missing -p for password') return # generate requests md5 = hashlib.md5() md5.update(bytes(inputs['-p'], 'utf-8')) payload = { "userId" : inputs['-u'], "password" : md5.hexdigest() } rsp_raw = requests.post(url, data=payload) rsp = rsp_raw.json() if rsp_raw.status_code == requests.codes['ok'] \ and rsp['success'] is True: self.session['userId'] = rsp['userId'] self.session['token'] = rsp['token'] else: print('[!] Login failed. Please check your user id or password.')
def test_json(self): cmd_str = 'command -t job_type -p {"num1":1, "num2":2, "str1":"abcd", "str2":"efgh"}' cmd_dict = cmd_str2dic(cmd_str) exp_dict = { 'cmd_name': 'command', '-t': 'job_type', '-p': '{"num1":1, "num2":2, "str1":"abcd", "str2":"efgh"}' } self.assertEqual(cmd_dict, exp_dict)
def test_schedule_cmd(self): cmd_str = 'schedule -n job name -dsc job description -t job_type -p "-d 20 -n 5"' cmd_dict = cmd_str2dic(cmd_str) exp_dict = { 'cmd_name': 'schedule', '-n': 'job name', '-dsc': 'job description', '-t': 'job_type', '-p': '-d 20 -n 5' } self.assertEqual(cmd_dict, exp_dict)
def do_display(self, line): ''' Show information. Usage: display <target> <target>: 'jobs' ''' # check inputs inputs = cmd_str2dic(line) if len(inputs) < 1: print('[!] missing target') return if inputs['cmd_name'] == 'jobs': url = self.config['server_url'] + '/quant/results' # generate requests payload = { "userId" : self.session['userId'], "token" : self.session['token'] } rsp_raw = requests.post(url, data=payload) rsp = rsp_raw.json() if rsp_raw.status_code == requests.codes['ok']: table_data = [ ['name', 'creator', 'create_date', 'status', 'description', 'cmd'] ] for result in rsp['results']: table_data.append([ result['name'], result['creator'], result['create_date'], result['status'], result['description'], result['cmd'] ]) table = AsciiTable(table_data) print(table.table) else: print('[!] Server returns error code: ' + rsp_raw)
def do_schedule(self, line): ''' Schedule jobs. Usage: schedule -n <job name> -dsc <job description> -t <job type> -p "<arguments>" Example: schedule -n my_job -dsc just_for_test -t mv_avg -p "-d 20 -n 5" ''' url = self.config['server_url'] + '/quant/jobs' inputs = cmd_str2dic(line) payload = { "userId" : self.session['userId'], "token" : self.session['token'], "job_name" : inputs['-n'], "description" : inputs['-dsc'], "cmd" : 'schedule ' + line } rsp_raw = requests.post(url, data=payload) if rsp_raw.status_code == requests.codes['ok']: print('[x] Job scheduled!') else: print('[!] Scheduling failed!')
def test_crawl_cmd(self): cmd_str = '-s 2017-11-11 -e 2017-11-18 -c 600497.SS' cmd_dict = cmd_str2dic(cmd_str) exp_dict = {'-s': '2017-11-11', '-e': '2017-11-18', '-c': '600497.SS'} self.assertEqual(cmd_dict, exp_dict)
def test_mv_avg_cmd(self): cmd_str = '-n 5 -d 20' cmd_dict = cmd_str2dic(cmd_str) exp_dict = {'-n': '5', '-d': '20'} self.assertEqual(cmd_dict, exp_dict)