Пример #1
0
    def make_partion(self):
        '''make the p2p network partion into 2 seperate ones.'''
        # record current block height
        ec, message = mvs_rpc.get_info()
        self.assertEqual(ec, 0, message)
        self.partion_height = message[0]

        ec, peers = mvs_rpc.getpeerinfo()
        for peer in peers:
            ec, message = mvs_rpc.ban_node(peer)
            self.assertEqual(ec, 0, message)
Пример #2
0
def fork_test(  ):
    origin = "origin"
    popback = "popback"
    # backup check point
    _, (height, _) = mvs_rpc.get_info()
    data_base_script(origin)

    # run testcase
    run_testcase()

    # make this node partion with the others
    peers = mvs_rpc.getpeerinfo()[1]
    for peer in peers:
        mvs_rpc.ban_node(peer)
    try:
        # popblock
        ec, _ = mvs_rpc.pop_block(height + 1)
        assert (ec == 0)
        assert( mvs_rpc.get_info()[1][0] == height)

        # check database
        data_base_script(popback)

    finally:
        for peer in peers:
            mvs_rpc.add_node(peer)

    # check origin and popback
    f_origin = open('./tools/%s/result.txt' % origin)
    f_popback= open('./tools/%s/result.txt' % popback)
    while True:
        line1 = f_origin.readline()
        line2 = f_popback.readline()
        assert (line1 == line2)

        if not (line1 or line2):
            break

    f_origin.close()
    f_popback.close()
    print "fork test passed!"