Search in sources :

Example 6 with Chunk

use of org.syncany.chunk.Chunk in project syncany by syncany.

the class FixedOffsetChunkerTest method testNextChunkEvenIfThereAreNone.

@Test
public void testNextChunkEvenIfThereAreNone() throws IOException {
    // Test Constants
    final int TOTAL_FILE_SIZE = 5 * 1024;
    final int EXACT_CHUNK_SIZE = 512 * 1024;
    // Setup
    File inputFile = TestFileUtil.createRandomFileInDirectory(tempDir, TOTAL_FILE_SIZE);
    Chunker chunker = new FixedChunker(EXACT_CHUNK_SIZE);
    // Create chunks
    Enumeration<Chunk> chunkEnumeration = chunker.createChunks(inputFile);
    while (chunkEnumeration.hasMoreElements()) {
        chunkEnumeration.nextElement();
    }
    // This should lead to an IOException
    assertNull("No chunk expected, but data received.", chunkEnumeration.nextElement());
    assertFalse("hasElements() should return 'false' if no chunk available.", chunkEnumeration.hasMoreElements());
}
Also used : FixedChunker(org.syncany.chunk.FixedChunker) FixedChunker(org.syncany.chunk.FixedChunker) Chunker(org.syncany.chunk.Chunker) Chunk(org.syncany.chunk.Chunk) File(java.io.File) Test(org.junit.Test)

Example 7 with Chunk

use of org.syncany.chunk.Chunk in project syncany by syncany.

the class FrameworkCombinationTest method extractChunksFromMultiChunks.

private Map<ChunkChecksum, File> extractChunksFromMultiChunks(List<File> outputMultiChunkFiles, FrameworkCombination combination) throws IOException {
    Map<ChunkChecksum, File> extractedChunks = new HashMap<ChunkChecksum, File>();
    for (File outputMultiChunkFile : outputMultiChunkFiles) {
        logger.log(Level.INFO, "- Extracting multichunk " + outputMultiChunkFile + " ...");
        MultiChunk outputMultiChunk = combination.multiChunker.createMultiChunk(combination.transformer.createInputStream(new FileInputStream(outputMultiChunkFile)));
        Chunk outputChunkInMultiChunk = null;
        while (null != (outputChunkInMultiChunk = outputMultiChunk.read())) {
            File extractedChunkFile = new File(tempDir + "/chunk-" + StringUtil.toHex((outputChunkInMultiChunk.getChecksum())) + "-from-multichunk-" + outputMultiChunk.getId());
            logger.log(Level.INFO, "  + Writing chunk " + StringUtil.toHex((outputChunkInMultiChunk.getChecksum())) + " to " + extractedChunkFile + " ...");
            TestFileUtil.writeToFile(outputChunkInMultiChunk.getContent(), extractedChunkFile);
            extractedChunks.put(new ChunkChecksum(outputChunkInMultiChunk.getChecksum()), extractedChunkFile);
        }
    }
    return extractedChunks;
}
Also used : HashMap(java.util.HashMap) MultiChunk(org.syncany.chunk.MultiChunk) ChunkChecksum(org.syncany.database.ChunkEntry.ChunkChecksum) Chunk(org.syncany.chunk.Chunk) MultiChunk(org.syncany.chunk.MultiChunk) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 8 with Chunk

use of org.syncany.chunk.Chunk in project syncany by syncany.

the class TTTDChunkerTest method testCreateChunksFrom5MBFileAndTestChunkSize.

@Test
public void testCreateChunksFrom5MBFileAndTestChunkSize() throws Exception {
    // Test Constants
    final int TOTAL_FILE_SIZE = 5 * 1024 * 1024;
    final int AVG_CHUNK_SIZE = 512 * 1024;
    // Setup				
    File inputRandom5MBFile = TestFileUtil.createRandomFileInDirectory(tempDir, TOTAL_FILE_SIZE);
    File outputCopyOfRandom5MBFile = TestFileUtil.getRandomFilenameInDirectory(tempDir);
    FileOutputStream outputCopyOfRandom5MBFileOutputStream = new FileOutputStream(outputCopyOfRandom5MBFile);
    Chunker chunker = new TttdChunker(AVG_CHUNK_SIZE);
    // Create chunks
    Enumeration<Chunk> chunkEnumeration = chunker.createChunks(inputRandom5MBFile);
    Chunk lastChunk = null;
    while (chunkEnumeration.hasMoreElements()) {
        lastChunk = chunkEnumeration.nextElement();
        // Checksum
        assertNotNull("Chunk checksum should not be null.", lastChunk.getChecksum());
        outputCopyOfRandom5MBFileOutputStream.write(lastChunk.getContent(), 0, lastChunk.getSize());
    }
    outputCopyOfRandom5MBFileOutputStream.close();
    // Number of chunks
    // TODO [low] How to test the number of chunks?
    // Checksums
    byte[] inputFileChecksum = FileUtil.createChecksum(inputRandom5MBFile, TttdChunker.DEFAULT_DIGEST_ALG);
    byte[] outputFileChecksum = FileUtil.createChecksum(outputCopyOfRandom5MBFile, TttdChunker.DEFAULT_DIGEST_ALG);
    assertArrayEquals("Checksums of input and output file do not match.", inputFileChecksum, outputFileChecksum);
    assertArrayEquals("Last chunk's getFileChecksum() should be the file checksum.", inputFileChecksum, lastChunk.getFileChecksum());
}
Also used : FileOutputStream(java.io.FileOutputStream) TttdChunker(org.syncany.chunk.TttdChunker) Chunker(org.syncany.chunk.Chunker) Chunk(org.syncany.chunk.Chunk) File(java.io.File) TttdChunker(org.syncany.chunk.TttdChunker) Test(org.junit.Test)

Aggregations

File (java.io.File)8 Chunk (org.syncany.chunk.Chunk)8 Test (org.junit.Test)5 Chunker (org.syncany.chunk.Chunker)4 MultiChunk (org.syncany.chunk.MultiChunk)4 FileOutputStream (java.io.FileOutputStream)3 FileInputStream (java.io.FileInputStream)2 FixedChunker (org.syncany.chunk.FixedChunker)2 TttdChunker (org.syncany.chunk.TttdChunker)2 ChunkChecksum (org.syncany.database.ChunkEntry.ChunkChecksum)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 ZipFile (java.util.zip.ZipFile)1 Deduper (org.syncany.chunk.Deduper)1 DeduperListener (org.syncany.chunk.DeduperListener)1 MultiChunkId (org.syncany.database.MultiChunkEntry.MultiChunkId)1 LocalTransferSettings (org.syncany.plugins.local.LocalTransferSettings)1