def test_RandomAccessIoHandle_WriteDataAtPosition2_DataIsWritten(self): io = StringIO.StringIO("0123456789") handle = IoHandle(io) handle.write(2, "--") self.assertEquals(io.getvalue(), "01--456789")
def test_RandomAccessIoHandle_ReadDataAtPosition3_DataIsReturned(self): io = StringIO.StringIO("0123456789") handle = IoHandle(io) result = handle.read(offset=2, length=3) self.assertEquals(result, "234")
def test_WalletFile_1(self): io = IoHandle.using_stringio() wallet = WalletFile.new(io) wallet.start_tx() wallet.outpoints[1]= OutpointIndex(12, Uint256.from_hexstr("2af4cc9ec3358354345c91694031a1fcdbe9a9064197521814e8a20fe018eb5f"), 3, OutpointIndex.PUBKEY_HASH, 4, PubKeyOutpoint(PublicKey.from_hexstr("022af4cc9ec3358354345c91691031a1fcdbe9a9064197521814e8a20fe018eb5f"), is_pubkey_hash=True)) wallet.end_tx() wallet.commit() wallet.start_tx() wallet.outpoints[1] = OutpointIndex(12, Uint256.from_hexstr("2af4cc9ec3358354345c91694031a1fcdbe9a9064197521814e8a20fe018eb5f"), 3, OutpointIndex.PUBKEY_HASH, 4, PubKeyOutpoint(PublicKey.from_hexstr("022af4cc9ec3358354345c91691031a1fcdbe9a9064197521814e8a20fe018eb5f"), is_pubkey_hash=True)) wallet.end_tx() wallet.commit() #with open(r"c:\local\tmp\wallet-test.wlt", "wb") as wlt: # wlt.write(io.iohandle.getvalue()) io.seek(0, SEEK_SET) wallet2 = WalletFile.load(io, len(io.iohandle.getvalue())) print wallet2.fileheader print wallet2.outpoints
def test_LogBufferReader(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = LogBufferReader(io, SIZE) reader.write_entry(1, Log(LogHeader(5, 23123, 4), "abcd", "dcba")) self.assertEquals( reader.read_entry(1), (Log(LogHeader(5, 23123, 4), "abcd", "dcba"), 20))
def test_1(self): IO_SIZE = 1000 BUFFER_SIZE = 1000 INDEX_COUNT = 20 io = IoHandle.using_stringio(BUFFER_SIZE) buffer_reader = LogBufferReader(io, BUFFER_SIZE) logbuffer = LogBuffer(buffer_reader) io = IoHandle.using_stringio(LogIndexEntrySerializer.SERIALIZED_LENGTH * INDEX_COUNT) logindex_reader = LogIndexReader(io, INDEX_COUNT) logindex = SerializedLogIndex.new(logindex_reader) io = MultiChunkIO.using_stringios({0:IO_SIZE}) log = TransactionalChunkFile(io, logindex, logbuffer, 1, 2) log.start_transaction() log.write(0, 3, "hello test") log.write(0, 12, "hello blog")
def test_SerializedDict_AddElementAndReload_DictIsTheSame(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) serialized_dict = SerializedDict.new(io, SIZE, LogHeaderSerializer) serialized_dict[4] = LogHeader(1, 32, 21) d2 = SerializedDict.load(io, SIZE, LogHeaderSerializer) self.assertEquals(list(d2.iteritems()), [(4, LogHeader(1, 32, 21))])
def test_LogBufferReader(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = LogBufferReader(io, SIZE) reader.write_entry(1, Log(LogHeader(5, 23123, 4), "abcd", "dcba")) self.assertEquals(reader.read_entry(1), (Log(LogHeader(5, 23123, 4), "abcd", "dcba"), 20))
def test_SerializedSet_CreateNew_IterItemsIsEmpty(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, [])
def test_1(self): IO_SIZE = 1000 BUFFER_SIZE = 1000 INDEX_COUNT = 20 io = IoHandle.using_stringio(BUFFER_SIZE) buffer_reader = LogBufferReader(io, BUFFER_SIZE) logbuffer = LogBuffer(buffer_reader) io = IoHandle.using_stringio( LogIndexEntrySerializer.SERIALIZED_LENGTH * INDEX_COUNT) logindex_reader = LogIndexReader(io, INDEX_COUNT) logindex = SerializedLogIndex.new(logindex_reader) io = MultiChunkIO.using_stringios({0: IO_SIZE}) log = TransactionalChunkFile(io, logindex, logbuffer, 1, 2) log.start_transaction() log.write(0, 3, "hello test") log.write(0, 12, "hello blog")
def test_SerializedSet_AddTwoElementsRemoveSecondThenReRead_FirstElementIsReturned(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) reader.add("abcd") pos2 = reader.add("efghijkl") reader.remove(pos2) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, ["abcd"])
def test_SerializedSet_AddOneElements_CheckElementIsPresent(self): SIZE = 50 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) reader.add("ab") #print repr(io.iohandle.getvalue()) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, ["ab"])
def test_SerializedSet_AddTwoElementsRemoveSecondThenReRead_FirstElementIsReturned( self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) reader.add("abcd") pos2 = reader.add("efghijkl") reader.remove(pos2) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, ["abcd"])
def test_SerializedSet_AddThreeElementsRemoveFirstAndThirdThenReRead_SecondElementIsReturned(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) pos1 = reader.add("abcd") reader.add("efghijkl") pos3 = reader.add("mnopqrst") reader.remove(pos3) reader.remove(pos1) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, ["efghijkl"])
def test_SerializedSet_AddThreeElementsRemoveFirstAndThirdThenReRead_SecondElementIsReturned( self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) pos1 = reader.add("abcd") reader.add("efghijkl") pos3 = reader.add("mnopqrst") reader.remove(pos3) reader.remove(pos1) reader2 = SerializedSet.load(io, SIZE) items = list(reader2.itervalues()) self.assertEquals(items, ["efghijkl"])
def test_SerializedSet_AddThreeElementsRemoveAll_CheckIOIsIdenticalToTheBeginning(self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) io1 = io.iohandle.getvalue() pos1 = reader.add("abcd") pos2 = reader.add("efghijkl") pos3 = reader.add("mnopqrst") reader.remove(pos3) reader.remove(pos2) reader.remove(pos1) io2 = io.iohandle.getvalue() self.assertEquals(io1, io2)
def test_SerializedSet_AddThreeElementsRemoveAll_CheckIOIsIdenticalToTheBeginning( self): SIZE = 1000 io = IoHandle.using_stringio(SIZE) reader = SerializedSet.new(io, SIZE) io1 = io.iohandle.getvalue() pos1 = reader.add("abcd") pos2 = reader.add("efghijkl") pos3 = reader.add("mnopqrst") reader.remove(pos3) reader.remove(pos2) reader.remove(pos1) io2 = io.iohandle.getvalue() self.assertEquals(io1, io2)
def test_SerializedLogIndex_recover_ErasesLastUnfinishedTransaction(self): COUNT = 10 io = IoHandle.using_stringio(COUNT) reader = LogIndexReader(io, COUNT) logindex = SerializedLogIndex.new(reader) logindex.log(LogIndexEntry(LogIndexEntry.BEGIN_TX)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 1)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 2)) logindex.log(LogIndexEntry(LogIndexEntry.END_TX)) logindex.log(LogIndexEntry(LogIndexEntry.BEGIN_TX)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 3)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 4)) logindex2 = SerializedLogIndex.load(reader) logindex2.recover() self.assertEquals(logindex2.tocommit, deque([ LogIndexEntry(LogIndexEntry.BEGIN_TX), LogIndexEntry(LogIndexEntry.WRITE, 1), LogIndexEntry(LogIndexEntry.WRITE, 2), LogIndexEntry(LogIndexEntry.END_TX)] ))
def test_WalletFile_1(self): io = IoHandle.using_stringio() wallet = WalletFile.new(io) wallet.start_tx() wallet.outpoints[1] = OutpointIndex( 12, Uint256.from_hexstr( "2af4cc9ec3358354345c91694031a1fcdbe9a9064197521814e8a20fe018eb5f" ), 3, OutpointIndex.PUBKEY_HASH, 4, PubKeyOutpoint(PublicKey.from_hexstr( "022af4cc9ec3358354345c91691031a1fcdbe9a9064197521814e8a20fe018eb5f" ), is_pubkey_hash=True)) wallet.end_tx() wallet.commit() wallet.start_tx() wallet.outpoints[1] = OutpointIndex( 12, Uint256.from_hexstr( "2af4cc9ec3358354345c91694031a1fcdbe9a9064197521814e8a20fe018eb5f" ), 3, OutpointIndex.PUBKEY_HASH, 4, PubKeyOutpoint(PublicKey.from_hexstr( "022af4cc9ec3358354345c91691031a1fcdbe9a9064197521814e8a20fe018eb5f" ), is_pubkey_hash=True)) wallet.end_tx() wallet.commit() #with open(r"c:\local\tmp\wallet-test.wlt", "wb") as wlt: # wlt.write(io.iohandle.getvalue()) io.seek(0, SEEK_SET) wallet2 = WalletFile.load(io, len(io.iohandle.getvalue())) print wallet2.fileheader print wallet2.outpoints
def test_SerializedLogIndex_recover_ErasesLastUnfinishedTransaction(self): COUNT = 10 io = IoHandle.using_stringio(COUNT) reader = LogIndexReader(io, COUNT) logindex = SerializedLogIndex.new(reader) logindex.log(LogIndexEntry(LogIndexEntry.BEGIN_TX)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 1)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 2)) logindex.log(LogIndexEntry(LogIndexEntry.END_TX)) logindex.log(LogIndexEntry(LogIndexEntry.BEGIN_TX)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 3)) logindex.log(LogIndexEntry(LogIndexEntry.WRITE, 4)) logindex2 = SerializedLogIndex.load(reader) logindex2.recover() self.assertEquals( logindex2.tocommit, deque([ LogIndexEntry(LogIndexEntry.BEGIN_TX), LogIndexEntry(LogIndexEntry.WRITE, 1), LogIndexEntry(LogIndexEntry.WRITE, 2), LogIndexEntry(LogIndexEntry.END_TX) ]))