def test_basic_db_function(self): # Get a random db name: db_name = generat_name() frame_endpoint = TCPFrameClient(remote) dbe = DBEndpoint(frame_endpoint,db_name) try: c = lite.connect('deko.db') cur = c.cursor() cur.execute("SELECT * FROM disas") dataa = cur.fetchall() i=0 for d in dataa : # print type(str(d[3])) dbe.add_function(str(d[0]),str(d[1]),str(d[3])) # dbe.add_function(d[0],d[1],d[3]) dbe.request_similars(str(d[3]),2) # Check if the amount of returned functions is reasonable: similars = dbe.response_similars() print("+" + (150 * "-")) print ("|%s:"%d[0]) print similars print("+" + (150 * "-")) i+=1 c.commit() except lite.Error, e: if c: c.rollback() print "Error %s:" % e.args[0] sys.exit(1)
def test_basic_db_function(self): # Get a random db name: db_name = generat_name() frame_endpoint = TCPFrameClient(remote) dbe = DBEndpoint(frame_endpoint, db_name) try: c = lite.connect('deko.db') cur = c.cursor() cur.execute("SELECT * FROM disas") dataa = cur.fetchall() i = 0 for d in dataa: # print type(str(d[3])) dbe.add_function(str(d[0]), str(d[1]), str(d[3])) # dbe.add_function(d[0],d[1],d[3]) dbe.request_similars(str(d[3]), 2) # Check if the amount of returned functions is reasonable: similars = dbe.response_similars() print("+" + (150 * "-")) print("|%s:" % d[0]) print similars print("+" + (150 * "-")) i += 1 c.commit() except lite.Error, e: if c: c.rollback() print "Error %s:" % e.args[0] sys.exit(1)
def test_add_function(self): """ Check basic operation of DBEndpoint """ mfe = MockFrameEndpoint() dbe = DBEndpoint(mfe,'my_db_name') # We expect the CHOOSE_DB message to be here: self.assertEqual(len(mfe.out_list),1) frame = mfe.out_list.pop(0) assert 'my_db_name' in frame func_name = 'my_func_name' func_comment = 'my function comment' func_data = 'kasdjflk40938523094802934829304' dbe.add_function(func_name,func_comment,func_data) self.assertEqual(len(mfe.out_list),1) frame = mfe.out_list.pop(0) for d in (func_name,func_comment,func_data): assert d in frame
def test_basic_db_function(self): # Get a random db name: db_name = rand_db_name() frame_endpoint = TCPFrameClient(remote) dbe = DBEndpoint(frame_endpoint,db_name) # A three somewhat similar functions: func_name1 = 'func_name1' func_comment1 = 'func_comment1' func_data1 = '230948509238459238459283409582309458230945' func_name2 = 'func_name2' func_comment2 = 'func_comment2' func_data2 = '230948509218459238459223409582309458230945' func_name3 = 'func_name3' func_comment3 = 'func_comment3' func_data3 = '230948509018459238459223409280309458030945' # A very different function: func_name4 = 'func_name4' func_comment4 = 'func_comment4' func_data4 = 'kasjflkasjfdlkasjdfoiuweoriuqwioreuwqioekaskldfjaslk' dbe.add_function(func_name1,func_comment1,func_data1) dbe.add_function(func_name2,func_comment2,func_data2) dbe.add_function(func_name3,func_comment3,func_data3) dbe.add_function(func_name4,func_comment4,func_data4) # Check if the amount of returned functions is reasonable: dbe.request_similars(func_data1,1) similars = dbe.response_similars() self.assertEqual(len(similars),1) dbe.request_similars(func_data1,2) similars = dbe.response_similars() self.assertEqual(len(similars),2) dbe.request_similars(func_data1,3) similars = dbe.response_similars() self.assertEqual(len(similars),3) dbe.request_similars(func_data1,4) similars = dbe.response_similars() self.assertEqual(len(similars),3) self.assertEqual(similars[0].name,func_name1) self.assertEqual(similars[0].comment,func_comment1) self.assertEqual(similars[0].sim_grade,NUM_HASHES) # Function 2 is second place with respect to similarity to function 1: self.assertEqual(similars[1].name,func_name2) self.assertLess(similars[1].sim_grade,NUM_HASHES) # Function 3 is third place: self.assertEqual(similars[2].name,func_name3) self.assertLess(similars[2].sim_grade,NUM_HASHES) # function 4 is the only function that looks like function 4 in this # dataset: dbe.request_similars(func_data4,3) similars = dbe.response_similars() self.assertEqual(len(similars),1) self.assertEqual(similars[0].name,func_name4) dbe.close() # Check persistency of the database by opening the same one again and # running a query: frame_endpoint = TCPFrameClient(remote) dbe = DBEndpoint(frame_endpoint,db_name) dbe.request_similars(func_data1,4) similars = dbe.response_similars() self.assertEqual(len(similars),3) self.assertEqual(similars[0].name,func_name1) self.assertEqual(similars[0].comment,func_comment1) self.assertEqual(similars[0].sim_grade,NUM_HASHES) dbe.close()