Example #1
0
    def test_RandomAccessIoHandle_WriteDataAtPosition2_DataIsWritten(self):
        io = StringIO.StringIO("0123456789")
        handle = IoHandle(io)
        
        handle.write(2, "--")

        self.assertEquals(io.getvalue(), "01--456789")
Example #2
0
    def test_RandomAccessIoHandle_ReadDataAtPosition3_DataIsReturned(self):
        io = StringIO.StringIO("0123456789")
        handle = IoHandle(io)
        
        result = handle.read(offset=2, length=3)

        self.assertEquals(result, "234")
Example #3
0
    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
Example #4
0
    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))
Example #5
0
 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))
Example #8
0
    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")
Example #10
0
    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, [])
Example #11
0
 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))])
Example #12
0
    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"])
Example #13
0
    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"])
Example #14
0
    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"])
Example #15
0
    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"])
Example #16
0
    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"])
Example #17
0
    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"])
Example #18
0
 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)
Example #19
0
    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)
Example #20
0
 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)] ))
Example #21
0
    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)
            ]))