def do_vote(args): """ cast vote to accept or reject a code measure proposal user can also check the amount of votes of a specific proposal Args: args (array) arguments<proposalid, vote> """ if args.view is None: if args.id is None: raise CodeSmellException("Missing proposal ID") if args.vote is None: raise CodeSmellException("Missing VOTE") if args.vote == 'yes': vote = 1 else: vote = 0 url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) if args.vote: response_dict = client.vote(proposal_id=args.id, vote=vote) print(response_dict) else: response_list = client.check_votes(proposal_id=args.view) print(response_list)
def do_list(args): """ list transactions of code smell family Args: args (array) arguments """ if args.type is not None and args.type not in ('code_smell', 'proposal', 'vote'): raise CodeSmellException("Incorrect Transaction Type") if args.type in ('code_smell', 'vote') and args.active is not None: raise CodeSmellException("Incorrect parms combination") url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) if args.active is not None: transactions = client.list(txn_type=args.type, active_flag=1) else: transactions = client.list(txn_type=args.type) if len(transactions) == 0: raise CodeSmellException("No transactions found") else: print (transactions)
def do_vote(args): """ cast vote to accept or reject a code measure proposal Args: args (array) arguments<proposalid, vote> """ if args.view is None: if args.id is None: raise CodeSmellException("Missing proposal ID") if args.vote is None: raise CodeSmellException("Missing VOTE") if args.vote == 'yes': vote = 1 else: vote = 0 url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) if args.vote: response = client.vote(proposal_id=args.id, vote=vote) else: response = client.check_votes(proposal_id=args.view) print("Response: {}".format(response))
def do_default(args): """ load a set of default code smells. Args: args (array) arguments """ url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=args.path) response = client.default() print("Response: {}".format(response))
def do_show(args): """ list transaction of code smell family Args: args (array) arguments """ if args.address is None: raise CodeSmellException ("Missing Transaction Address") url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) transaction = client.show(address=args.address) if len(transaction) == 0: raise CodeSmellException("No transaction found") else: pprint (transaction)
def setUp(self): #get default values DISTRIBUTION_NAME = 'suserum-code_smell' HOME = os.getenv('SAWTOOTH_HOME') DEFAULT_URL = 'http://127.0.0.1:8008' #get user key username = getpass.getuser() home = os.path.expanduser("~") key_dir = os.path.join(home, ".sawtooth", "keys") keyfile = '{}/{}.priv'.format(key_dir, username) self.client = CodeSmellClient(base_url=DEFAULT_URL, keyfile=keyfile, work_path=HOME) #get test txn_id self.txn = self.client.list() for entry in self.txn.keys(): self.txn_id = entry break
def do_list(args): """ list transactions of code smell family Args: args (array) arguments """ #verify that we shave the right type if args.type is not None and args.type not in ('code_smell', 'proposal', 'vote', 'config'): raise CodeSmellException("Incorrect Transaction Type") url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) transactions = client.list(txn_type=args.type, active=args.active) if len(transactions) == 0: raise CodeSmellException("No transactions found") else: print (transactions)
def do_proposal(args): """ propose new metric for the code smell family Args: args (array) arguments """ if args.propose is None: raise CodeSmellException("Missing code smells") url = _get_url(args) keyfile = _get_keyfile(args) client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME) #parse input into a dict code_smells = {} str_input = args.propose code_smells = dict(code_smell.split("=") for code_smell in str_input.split(",")) response = client.propose(code_smells=code_smells) print("Response: {}".format(response))
class SimpleTest(unittest.TestCase): def setUp(self): #get default values DISTRIBUTION_NAME = 'suserum-code_smell' HOME = os.getenv('SAWTOOTH_HOME') DEFAULT_URL = 'http://127.0.0.1:8008' #get user key username = getpass.getuser() home = os.path.expanduser("~") key_dir = os.path.join(home, ".sawtooth", "keys") keyfile = '{}/{}.priv'.format(key_dir, username) self.client = CodeSmellClient(base_url=DEFAULT_URL, keyfile=keyfile, work_path=HOME) #get test txn_id self.txn = self.client.list() for entry in self.txn.keys(): self.txn_id = entry break def test_load_default(self): response = self.client.default() self.assertNotEqual(response, None) def test_default_repo_id(self): response = self.client.default(12345) self.assertNotEqual(response, None) def test_list(self): response = self.client.list() self.assertNotEqual(response, None) def test_list_incorrect_type(self): response = self.client.list("noType") self.assertEqual(len(response), 0) def test_bad_vote(self): self.assertRaises(CodeSmellException, self.client.vote, "234", "yes") def test_show_txn(self): response = self.client.show(self.txn_id) self.assertNotEqual(response, None) def test_incorrect_proposal_update(self): self.assertRaises(CodeSmellException, self.client._update_suse_file, "LargeClass=kx,Smal")
api = line line_num += 1 for line in suse.split('\n'): if 'approval_treshold=' in line: approval_treshold = int(line.split('=')[1]) if 'proposal_active_days=' in line: proposal_active_days = int(line.split('=')[1]) #get key username = getpass.getuser() home = os.path.expanduser("~") key_dir = os.path.join(home, ".sawtooth", "keys") keyfile = '{}/{}.priv'.format(key_dir, username) client = CodeSmellClient(base_url="http://127.0.0.1:" + str(api), keyfile=keyfile, work_path=prj_path) #check if enough 'yes' votes to pass proposal print('pid:', proposal_id, api) votes = client.check_votes(proposal_id) if not votes: sys.exit(0) yes_votes = votes.count(1) print('VOTES:', votes, (yes_votes >= approval_treshold)) if yes_votes >= approval_treshold: print('pass by vote threshold pass', yes_votes) client.update_proposal(proposal_id, 1, repo_id) deleteSelfFromCron(proposal_id, proposal_date, prj_path) sys.exit(0)