Esempio n. 1
0
    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.')
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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!')
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)