Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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))
Beispiel #4
0
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))
Beispiel #5
0
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)
Beispiel #6
0
    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
Beispiel #7
0
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)
Beispiel #8
0
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))
Beispiel #9
0
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")
Beispiel #10
0
        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)