def setup_movingto_canonical_to_onepercent(): """ <Purpose> Setup everything thats needed to run the movingto_canonical_to_onepercent test. <Arguments> None. <Side Effects> None. <Return> None. """ testuser = maindb.get_user(mockutil.testusername) # Retrieve the info about the donation we just made. all_donations = maindb.get_donations_by_user(testuser, include_inactive_and_broken=True) node = all_donations[0].node # Delete all the vessel records from the database. Assume that the nodes were # joined back by this point. maindb.delete_all_vessels_of_node(node) # Do the setup for this test. vessels_dict[mockutil.extra_vessel_name]['userkeys'] = [node_transition_lib.transition_state_keys['movingto_canonical']] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['onepercentmanyevents'])])
def setup_movingto_canonical_to_canonical(): """ <Purpose> Setup everything thats needed to run the movingto_canonical_to_canonical test. <Arguments> None. <Side Effects> None. <Return> None. """ # Do the setup for this test. vessels_dict[mockutil.extra_vessel_name]['userkeys'] = [ node_transition_lib.transition_state_keys['movingto_canonical'] ] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_join_vessels() mockutil.mock_backend_set_vessel_user_keylist([ mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['canonical']) ])
def setup_test(): """ <Purpose> Prepare everything in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Create a user who has the donation key. maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.canonicalpublickey)])
def run_movingto_twopercent_to_canonical_test(): transitionlist = [] # Change the vessel_dict and reset all the mock functions in order to have the appropriate info testuser = maindb.get_user(mockutil.testusername) all_donations = maindb.get_donations_by_user(testuser, include_inactive_and_broken=True) node = all_donations[0].node # Create 9 vessels for this node for i in range(9): vessels_dict["vessel"+str(i)]={} vessels_dict["vessel"+str(i)]["userkeys"] = [] vessels_dict["vessel"+str(i)]["ownerkey"] = rsa.rsa_string_to_publickey(node.owner_pubkey) vessels_dict["vessel"+str(i)]["ownerinfo"] = "" vessels_dict["vessel"+str(i)]["status"] = "" vessels_dict["vessel"+str(i)]["advertise"] = True maindb.create_vessel(node, "vessel"+str(i)) vessels_dict[mockutil.extra_vessel_name]["userkeys"] = [node_transition_lib.transition_state_keys['movingto_twopercent']] vessels_dict[mockutil.extra_vessel_name]["ownerkey"] = rsa.rsa_string_to_publickey(node.owner_pubkey) mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_join_vessels() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['canonical'])]) transitionlist.append(("movingto_twopercent", "canonical", node_transition_lib.combine_vessels, node_transition_lib.noop, False)) print "Starting movingto_twopercent to canonical test....." (success_count, failure_count) = node_transition_lib.do_one_processnode_run(transitionlist, "startstatename", 1)[0] assert(success_count == 1) assert(failure_count == 0) assert_database_info_before_completed() assert(mockutil.set_vessel_owner_key_call_count == 0) assert(mockutil.set_vessel_user_keylist_call_count == 1) all_donations = maindb.get_donations_by_user(testuser, include_inactive_and_broken=True) node = all_donations[0].node vessel_list_per_node = maindb.get_vessels_on_node(node) #testing to see if the vessels were deleted after join_vessels was called assert(mockutil.join_vessels_call_count == 9) assert(len(vessel_list_per_node) == 0) assert(node.extra_vessel_name == "extra_vessel_join9")
def run_moving2onepercent_to_onepercent_test(): transitionlist = [] # Change the vessel_dict and reset all the mock functions in order to have the appropriate info vessels_dict[mockutil.extra_vessel_name]["userkeys"] = [node_transition_lib.movingtoonepercentmanyeventspublickey] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.onepercentmanyeventspublickey)]) onepercentmanyevents_resource_fd = file(transition_canonical_to_onepercentmanyevents.RESOURCES_TEMPLATE_FILE_PATH) onepercentmanyevents_resourcetemplate = onepercentmanyevents_resource_fd.read() onepercentmanyevents_resource_fd.close() transitionlist.append((("movingto_onepercent_state", node_transition_lib.movingtoonepercentmanyeventspublickey), ("onepercentmanyevents_state", node_transition_lib.onepercentmanyeventspublickey), transition_canonical_to_onepercentmanyevents.onepercentmanyevents_divide, node_transition_lib.noop, onepercentmanyevents_resourcetemplate)) print "Starting canonical to movingtoonepercentmanyevents test....." (success_count, failure_count) = node_transition_lib.do_one_processnode_run(transitionlist, "startstatename", 1)[0] assert(success_count == 1) assert(failure_count == 0) assert_database_info_after_completed() assert(mockutil.set_vessel_owner_key_call_count == 0) # Note that the call to set_vessel_user_keylist should be 10. # 9 time for splitting the vessels and setting keylist to [] # and one time for setting the actual state of the node. assert(mockutil.set_vessel_user_keylist_call_count == 10) testuser = maindb.get_user(mockutil.testusername) all_donations = maindb.get_donations_by_user(testuser, include_inactive_and_broken=True) node = all_donations[0].node vessel_list_per_node = maindb.get_vessels_on_node(node) #testing to see if the vessels exist after splitting assert(mockutil.split_vessel_call_count == 9) assert(len(vessel_list_per_node) == 9) for i in range(len(vessel_list_per_node)): # Note that the vessel names go from 1-9 rather then 0-8 assert(vessel_list_per_node[i].node == node) assert(vessel_list_per_node[i].name == "new_vessel"+str(1+i)) assert(node.extra_vessel_name == "extra_vessel_split9")
def setup_test(): """ <Purpose> Prepare everything in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Make sure all the variables are its default values mockutil.mockutil_cleanup_variables() # Create a user who has the donation key. user_object = maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", False, mockutil.per_node_key_str, mockutil.extra_vessel_name) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([ mockutil._mock_pubkey_to_string( node_transition_lib. transition_state_keys['movingto_onepercentmanyevents']) ])
def setup_test(): """ <Purpose> Prepare everything in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Create a user who has the donation key. user_object = maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", True, mockutil.per_node_key_str, mockutil.extra_vessel_name) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() # set_vessel_user_keylist_call_count won't be called because the # node_transition_lib will see that it's a state change to the same state. mockutil.mock_backend_set_vessel_user_keylist(None)
def setup_test(): """ <Purpose> Prepare everything in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Make sure all the variables are its default values mockutil.mockutil_cleanup_variables() # Create a user who has the donation key. user_object = maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", False, mockutil.per_node_key_str, mockutil.extra_vessel_name) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['movingto_twopercent'])])
def setup_movingto_canonical_to_canonical(): """ <Purpose> Setup everything thats needed to run the movingto_canonical_to_canonical test. <Arguments> None. <Side Effects> None. <Return> None. """ # Do the setup for this test. vessels_dict[mockutil.extra_vessel_name]['userkeys'] = [node_transition_lib.transition_state_keys['movingto_canonical']] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_join_vessels() mockutil.mock_backend_set_vessel_user_keylist([mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['canonical'])])
def setup_movingto_canonical_to_onepercent(): """ <Purpose> Setup everything thats needed to run the movingto_canonical_to_onepercent test. <Arguments> None. <Side Effects> None. <Return> None. """ testuser = maindb.get_user(mockutil.testusername) # Retrieve the info about the donation we just made. all_donations = maindb.get_donations_by_user( testuser, include_inactive_and_broken=True) node = all_donations[0].node # Delete all the vessel records from the database. Assume that the nodes were # joined back by this point. maindb.delete_all_vessels_of_node(node) # Do the setup for this test. vessels_dict[mockutil.extra_vessel_name]['userkeys'] = [ node_transition_lib.transition_state_keys['movingto_canonical'] ] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([ mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['onepercentmanyevents']) ])
def setup_general(): """ <Purpose> Prepare all the general stuff in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Make sure all the variables are its default values mockutil.mockutil_cleanup_variables() # Create a user who has the donation key. user_object = maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", True, mockutil.per_node_key_str, mockutil.extra_vessel_name) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") testuser = maindb.get_user(mockutil.testusername) # Retrieve the info about the donation we just made. all_donations = maindb.get_donations_by_user(testuser, include_inactive_and_broken=True) node = all_donations[0].node global vessels_dict vessels_dict = vessels_dict_basic.copy() # Create 9 different vessels, assuming that the original vessel got split into 9. for i in range(9): vessels_dict["vessel"+str(i)]={} vessels_dict["vessel"+str(i)]["userkeys"] = [] vessels_dict["vessel"+str(i)]["ownerkey"] = rsa.rsa_string_to_publickey(node.owner_pubkey) vessels_dict["vessel"+str(i)]["ownerinfo"] = "" vessels_dict["vessel"+str(i)]["status"] = "" vessels_dict["vessel"+str(i)]["advertise"] = True maindb.create_vessel(node, "vessel"+str(i)) # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key()
def setup_general(): """ <Purpose> Prepare all the general stuff in order to run the tests. <Arguments> None <Exceptions> None <Side Efects> None <Return> None """ testlib.setup_test_db() # Make sure all the variables are its default values mockutil.mockutil_cleanup_variables() # Create a user who has the donation key. user_object = maindb.create_user(mockutil.testusername, "password", "*****@*****.**", "affiliation", "10 11", "2 2 2", mockutil.donor_key_str) # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", True, mockutil.per_node_key_str, mockutil.extra_vessel_name) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") testuser = maindb.get_user(mockutil.testusername) # Retrieve the info about the donation we just made. all_donations = maindb.get_donations_by_user( testuser, include_inactive_and_broken=True) node = all_donations[0].node global vessels_dict vessels_dict = vessels_dict_basic.copy() # Create 9 different vessels, assuming that the original vessel got split into 9. for i in range(9): vessels_dict["vessel" + str(i)] = {} vessels_dict["vessel" + str(i)]["userkeys"] = [] vessels_dict["vessel" + str(i)]["ownerkey"] = rsa.rsa_string_to_publickey( node.owner_pubkey) vessels_dict["vessel" + str(i)]["ownerinfo"] = "" vessels_dict["vessel" + str(i)]["status"] = "" vessels_dict["vessel" + str(i)]["advertise"] = True maindb.create_vessel(node, "vessel" + str(i)) # Setup all the mock functions mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_lockserver_calls() mockutil.mock_backend_generate_key([mockutil.per_node_key_str]) mockutil.mock_nodemanager_get_vesselresources() mockutil.mock_transitionlib_do_advertise_lookup([mockutil.node_address]) mockutil.mock_backend_set_vessel_owner_key()
def run_multiple_donation_test(): """ <Purpose> The purpose of this test is to see how the transtion script would react if we provide a dictionary where a vessel is in the acceptdonation state but the node has already in the canonical state. This is possible if the node had two vessel in the acceptdonation state to start with. This is essentially if the node has two donations. Currently we don't handle multiple donations from the second node, so when we run the test, the success count should be 0 and the failure count should be 1. Also the name of the extra vessel should not change. <Arguments> None <Exceptions> None <Side Effects> None <Return> None """ # Have the extra vessel in canonical form vessels_dict[mockutil.extra_vessel_name]["userkeys"] = [node_transition_lib.canonicalpublickey] # Have a second vessel in acceptdonation state. Essentially a second donation. vessels_dict["second_donation"] = {"userkeys" : [node_transition_lib.acceptdonationpublickey], "ownerkey" : mockutil.donor_key, "ownerinfo" : "", "status" : "", "advertise" : True} # Create a database entry for the node node_object = maindb.create_node(mockutil.nodeid_key_str, mockutil.node_ip, mockutil.node_port, "10.0test", False, mockutil.per_node_key_str, mockutil.extra_vessel_name) user_object = maindb.get_user(mockutil.testusername) # Create a donation for user maindb.create_donation(node_object, user_object, "Making a donation") # Register the new vesseldict so get_info returns this new modified vesseldict mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) transitionlist = [] transitionlist.append((("donation_state", node_transition_lib.acceptdonationpublickey), ("canonical_state", node_transition_lib.canonicalpublickey), node_transition_lib.noop, node_transition_lib.noop)) print "Running test where database has record of node, no record of donation and node has donor key" (success_count, failure_count) = node_transition_lib.do_one_processnode_run(transitionlist, "startstatename", 1)[0] assert(success_count == 0) assert(failure_count == 1) assert_database_info() assert(mockutil.set_vessel_owner_key_call_count == 0) assert(mockutil.set_vessel_user_keylist_call_count == 0)
def run_moving2onepercent_to_canonical_test(): transitionlist = [] # Change the vessel_dict and reset all the mock functions in order to have the appropriate info testuser = maindb.get_user(mockutil.testusername) all_donations = maindb.get_donations_by_user( testuser, include_inactive_and_broken=True) node = all_donations[0].node # Create 9 vessels for this node for i in range(9): vessels_dict["vessel" + str(i)] = {} vessels_dict["vessel" + str(i)]["userkeys"] = [] vessels_dict["vessel" + str(i)]["ownerkey"] = rsa.rsa_string_to_publickey( node.owner_pubkey) vessels_dict["vessel" + str(i)]["ownerinfo"] = "" vessels_dict["vessel" + str(i)]["status"] = "" vessels_dict["vessel" + str(i)]["advertise"] = True maindb.create_vessel(node, "vessel" + str(i)) vessels_dict[mockutil.extra_vessel_name]["userkeys"] = [ node_transition_lib. transition_state_keys['movingto_onepercentmanyevents'] ] vessels_dict[ mockutil.extra_vessel_name]["ownerkey"] = rsa.rsa_string_to_publickey( node.owner_pubkey) mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_join_vessels() mockutil.mock_backend_set_vessel_user_keylist([ mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['canonical']) ]) transitionlist.append( ("movingto_onepercentmanyevents", "canonical", node_transition_lib.combine_vessels, node_transition_lib.noop, False)) print "Starting canonical to movingtoonepercentmanyevents test....." (success_count, failure_count) = node_transition_lib.do_one_processnode_run( transitionlist, "startstatename", 1)[0] assert (success_count == 1) assert (failure_count == 0) assert_database_info_before_completed() assert (mockutil.set_vessel_owner_key_call_count == 0) assert (mockutil.set_vessel_user_keylist_call_count == 1) all_donations = maindb.get_donations_by_user( testuser, include_inactive_and_broken=True) node = all_donations[0].node vessel_list_per_node = maindb.get_vessels_on_node(node) #testing to see if the vessels were deleted after join_vessels was called assert (mockutil.join_vessels_call_count == 9) assert (len(vessel_list_per_node) == 0) assert (node.extra_vessel_name == "extra_vessel_join9")
def run_moving2onepercent_to_onepercent_test(): transitionlist = [] # Change the vessel_dict and reset all the mock functions in order to have the appropriate info vessels_dict[mockutil.extra_vessel_name]["userkeys"] = [ node_transition_lib. transition_state_keys['movingto_onepercentmanyevents'] ] mockutil.mock_nodemanager_get_node_info(mockutil.nodeid_key, "10.0test", vessels_dict) mockutil.mock_backend_set_vessel_owner_key() mockutil.mock_backend_split_vessel() mockutil.mock_backend_set_vessel_user_keylist([ mockutil._mock_pubkey_to_string( node_transition_lib.transition_state_keys['onepercentmanyevents']) ]) onepercentmanyevents_resource_fd = file( transition_canonical_to_onepercentmanyevents. RESOURCES_TEMPLATE_FILE_PATH) onepercentmanyevents_resourcetemplate = onepercentmanyevents_resource_fd.read( ) onepercentmanyevents_resource_fd.close() transitionlist.append( ("movingto_onepercentmanyevents", "onepercentmanyevents", node_transition_lib.split_vessels, node_transition_lib.noop, True, onepercentmanyevents_resourcetemplate)) print "Starting canonical to movingtoonepercentmanyevents test....." (success_count, failure_count) = node_transition_lib.do_one_processnode_run( transitionlist, "startstatename", 1)[0] assert (success_count == 1) assert (failure_count == 0) assert_database_info_after_completed() assert (mockutil.set_vessel_owner_key_call_count == 0) # Note that the call to set_vessel_user_keylist should be 10. # 9 time for splitting the vessels and setting keylist to [] # and one time for setting the actual state of the node. assert (mockutil.set_vessel_user_keylist_call_count == 10) testuser = maindb.get_user(mockutil.testusername) all_donations = maindb.get_donations_by_user( testuser, include_inactive_and_broken=True) node = all_donations[0].node vessel_list_per_node = maindb.get_vessels_on_node(node) #testing to see if the vessels exist after splitting assert (mockutil.split_vessel_call_count == 9) assert (len(vessel_list_per_node) == 9) for i in range(len(vessel_list_per_node)): # Note that the vessel names go from 1-9 rather then 0-8 assert (vessel_list_per_node[i].node == node) assert (vessel_list_per_node[i].name == "new_vessel" + str(1 + i)) assert (node.extra_vessel_name == "extra_vessel_split9")