Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    def test_request_similars(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_data = '029348509238459kldfjaklsdjflkasjdfklasdf'
        num_similars = 8

        # Prepare a response for the REQUEST_SIMILARS message ahead of time:
        # Two results:
        name1 = 'name1'
        comment1 = 'comment1'
        sim_grade1 = 7

        name2 = 'name1'
        comment2 = 'comment1'
        sim_grade2 = 7

        msg = ""
        # Two records:
        msg += struct.pack('I',2)

        # First record:
        msg += struct.pack('I',len(name1))
        msg += name1
        msg += struct.pack('I',len(comment1))
        msg += comment1
        msg += struct.pack('I',sim_grade1)

        # Second record:
        msg += struct.pack('I',len(name2))
        msg += name2
        msg += struct.pack('I',len(comment2))
        msg += comment2
        msg += struct.pack('I',sim_grade2)

        # Add message type:
        frame = dword_pack(MsgTypes.RESPONSE_SIMILARS,msg)
        mfe.in_list.append(frame)

        dbe.request_similars(func_data,num_similars)
        similars = dbe.response_similars()
        self.assertEqual(len(mfe.out_list),1)
        frame = mfe.out_list.pop(0)
        assert func_data in frame

        # We expect two results:
        self.assertEqual(len(similars),2)
        self.assertIsInstance(similars[0],FSimilar)

        dbe.close()
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
		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)
Exemplo n.º 5
0
    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()