示例#1
0
def create(site_list, arbitrator_list):
    """
    Validate creating a minimal booth config

    iterable site_list -- list of booth sites' addresses
    iterable arbitrator_list -- list of arbitrators' addresses
    """
    report_list = []
    peer_list = site_list + arbitrator_list

    if len(site_list) < 2:
        report_list.append(reports.booth_lack_of_sites(site_list))

    if len(peer_list) % 2 == 0:
        report_list.append(reports.booth_even_peers_num(len(peer_list)))

    duplicate_addresses = {
        address
        for address, count in Counter(peer_list).items() if count > 1
    }
    if duplicate_addresses:
        report_list.append(
            reports.booth_address_duplication(duplicate_addresses))

    return report_list
示例#2
0
def validate_peers(site_list, arbitrator_list):
    report = []

    if len(site_list) < 2:
        report.append(reports.booth_lack_of_sites(site_list))

    peer_list = site_list + arbitrator_list

    if len(peer_list) % 2 == 0:
        report.append(reports.booth_even_peers_num(len(peer_list)))

    address_set = set()
    duplicate_addresses = set()
    for address in peer_list:
        if address in address_set:
            duplicate_addresses.add(address)
        else:
            address_set.add(address)
    if duplicate_addresses:
        report.append(reports.booth_address_duplication(duplicate_addresses))

    if report:
        raise LibraryError(*report)
示例#3
0
def validate_peers(site_list, arbitrator_list):
    report = []

    if len(site_list) < 2:
        report.append(reports.booth_lack_of_sites(site_list))

    peer_list = site_list + arbitrator_list

    if len(peer_list) % 2 == 0:
        report.append(reports.booth_even_peers_num(len(peer_list)))

    address_set = set()
    duplicate_addresses = set()
    for address in peer_list:
        if address in address_set:
            duplicate_addresses.add(address)
        else:
            address_set.add(address)
    if duplicate_addresses:
        report.append(reports.booth_address_duplication(duplicate_addresses))

    if report:
        raise LibraryError(*report)
示例#4
0
 def test_multiple_addresses(self):
     self.assert_message_from_report(
         "duplicate address for booth configuration: addr1, addr2, addr3",
         reports.booth_address_duplication(["addr2", "addr1", "addr3"]))
示例#5
0
 def test_single_address(self):
     self.assert_message_from_report(
         "duplicate address for booth configuration: addr1",
         reports.booth_address_duplication(["addr1"]))