class DBWriter(threading.Thread):
    def __init__(self, path, f_len):
        threading.Thread.__init__(self)
        self.path = path
        if os.path.exists(self.path):
            os.remove(self.path)
        open(self.path, 'w').close()
        self.f_len = f_len
        print 'simulating data block with size = %s ...'%f_len
        self.db = None
        self.checksum = hashlib.sha1()

    def run(self):
        self.db = DataBlock(self.path)# self.f_len)
        f_len = self.f_len
        parts = random.randint(1,11)
        for i in xrange(parts):
            data = ''.join(random.choice(string.letters) for i in xrange(f_len/parts))
            self.checksum.update(data)
            self.db.write(data)
            time.sleep(.1)

        rest = f_len - (f_len/parts)*parts
        if rest:
            data = ''.join(random.choice(string.letters) for i in xrange(rest))
            self.checksum.update(data)
            self.db.write(data)
        self.db.finalize()
        self.db.close()

    def get_checksum(self):
        return self.checksum.hexdigest()
Ejemplo n.º 2
0
class DBWriter(threading.Thread):
    def __init__(self, path, f_len):
        threading.Thread.__init__(self)
        self.path = path
        if os.path.exists(self.path):
            os.remove(self.path)
        open(self.path, 'w').close()
        self.f_len = f_len
        print 'simulating data block with size = %s ...' % f_len
        self.db = None
        self.checksum = hashlib.sha1()

    def run(self):
        self.db = DataBlock(self.path)  # self.f_len)
        f_len = self.f_len
        parts = random.randint(1, 11)
        for i in xrange(parts):
            data = ''.join(
                random.choice(string.letters) for i in xrange(f_len / parts))
            self.checksum.update(data)
            self.db.write(data)
            time.sleep(.1)

        rest = f_len - (f_len / parts) * parts
        if rest:
            data = ''.join(random.choice(string.letters) for i in xrange(rest))
            self.checksum.update(data)
            self.db.write(data)
        self.db.finalize()
        self.db.close()

    def get_checksum(self):
        return self.checksum.hexdigest()
Ejemplo n.º 3
0
    def test_data_block(self):
        ks = FileBasedSecurityManager(CLIENT_KS_1024_PATH, PASSWD)
        DataBlock.SECURITY_MANAGER = ks
        DB_PATH = tmp('test_data_block.kst')

        DATA_LEN = 10
        if os.path.exists(DB_PATH):
            os.remove(DB_PATH)
        db = DataBlock(DB_PATH, DATA_LEN, force_create=True)
        checksum = hashlib.sha1()
        for i in xrange(DATA_LEN / 10):
            data = ''.join(
                random.choice(string.letters)
                for i in xrange(DATA_LEN / (DATA_LEN / 10)))
            checksum.update(data)
            db.write(data)
        db.close()
        db.close()  #should be OK
        or_checksum = checksum.hexdigest()
        enc_checksum = db.checksum()

        db = DataBlock(DB_PATH, DATA_LEN)
        ret_data = ''
        checksum = hashlib.sha1()
        while True:
            data = db.read(100)
            if not data:
                break
            ret_data += data
            checksum.update(data)
        self.assertEqual(or_checksum, checksum.hexdigest())
        self.assertEqual(db.checksum(), enc_checksum)

        db = DataBlock(DB_PATH, DATA_LEN)
        raw = db.read_raw()
        self.assertEqual(db.checksum(), enc_checksum)

        db = DataBlock(DB_PATH, DATA_LEN)
        raw = db.read()
        self.assertEqual(ret_data, raw)

        app_db = DataBlock(DB_PATH)
        app_db.write('The end!')
        app_db.finalize()
        app_db.close()

        db = DataBlock(DB_PATH, actsize=True)
        raw = db.read()
        self.assertEqual(ret_data + 'The end!', raw)
        db.close()
    def test_data_block(self):
        ks = FileBasedSecurityManager(CLIENT_KS_1024_PATH, PASSWD)
        DataBlock.SECURITY_MANAGER = ks
        DB_PATH = tmp('test_data_block.kst')

        DATA_LEN = 10
        if os.path.exists(DB_PATH):
            os.remove(DB_PATH)
        db = DataBlock(DB_PATH, DATA_LEN, force_create=True)
        checksum = hashlib.sha1()
        for i in xrange(DATA_LEN/10):
            data = ''.join(random.choice(string.letters) for i in xrange(DATA_LEN/(DATA_LEN/10)))
            checksum.update(data)
            db.write(data)
        db.close()
        db.close() #should be OK
        or_checksum = checksum.hexdigest()
        enc_checksum = db.checksum()

        db = DataBlock(DB_PATH, DATA_LEN)
        ret_data = ''
        checksum = hashlib.sha1()
        while True:
            data = db.read(100)
            if not data:
                break
            ret_data += data
            checksum.update(data)
        self.assertEqual(or_checksum, checksum.hexdigest())
        self.assertEqual(db.checksum(), enc_checksum)

        db = DataBlock(DB_PATH, DATA_LEN)
        raw = db.read_raw()
        self.assertEqual(db.checksum(), enc_checksum)

        db = DataBlock(DB_PATH, DATA_LEN)
        raw = db.read()
        self.assertEqual(ret_data, raw)

        app_db = DataBlock(DB_PATH)
        app_db.write('The end!')
        app_db.finalize()
        app_db.close()

        db = DataBlock(DB_PATH, actsize=True)
        raw = db.read()
        self.assertEqual(ret_data+'The end!', raw)
        db.close()