Package org.jwat.common

Examples of org.jwat.common.ByteCountingInputStream


        out.write( '!' );
        byte[] srcArr = out.toByteArray();

        String srcStr = "!";

        in = new ByteCountingInputStream( new ByteArrayInputStream( srcArr ) );
        Assert.assertEquals( 1, in.skip( 10 ) );
        Assert.assertEquals( 0, in.skip( 10 ) );

        in = new ByteCountingPushBackInputStream( new ByteArrayInputStream( srcArr ), 1 );
        Assert.assertEquals( 1, in.skip( 10 ) );
View Full Code Here


        int errors = 0;
        int warnings = 0;

        try {
            InputStream in = this.getClass().getClassLoader().getResourceAsStream(warcFile);
            ByteCountingInputStream bcin = new ByteCountingInputStream(in);
            WarcReader reader = WarcReaderFactory.getReader(bcin);

            reader.setBlockDigestEnabled( bDigest );
            Assert.assertTrue(reader.setBlockDigestAlgorithm( "sha1" ));
            reader.setPayloadDigestEnabled( bDigest );
            Assert.assertTrue(reader.setPayloadDigestAlgorithm( "sha1" ));

            Iterator<WarcRecord> recordIterator = reader.iterator();
            WarcRecord record;

            while (recordIterator.hasNext()) {
                record = recordIterator.next();
                ++records;

                if (record.header.warcRecordIdUri == null) {
                    Assert.fail("Invalid warc-record-id");
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                warcEntry = new WarcEntry();
                warcEntry.recordId = record.header.warcRecordIdUri;
                warcEntry.offset = record.getStartOffset();
                warcEntries.add(warcEntry);

                record.close();

                consumed += record.getConsumed();
                Assert.assertEquals(record.consumed, record.getConsumed());

                // Test content-type and http response/request
                if (record.header.contentType != null) {
                    if ("application".equals(record.header.contentType.contentType)
                            && "http".equals(record.header.contentType.mediaType)) {
                        if ("response".equals(record.header.contentType.getParameter("msgtype"))) {
                            Assert.assertNotNull(record.payload);
                            Assert.assertNotNull(record.httpHeader);
                            Assert.assertEquals(HttpHeader.HT_RESPONSE, record.httpHeader.headerType);
                        } else if ("request".equals(record.header.contentType.getParameter("msgtype"))) {
                            Assert.assertNotNull(record.payload);
                            Assert.assertNotNull(record.httpHeader);
                            Assert.assertEquals(HttpHeader.HT_REQUEST, record.httpHeader.headerType);
                        }
                    }
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                if ( bDigest ) {
                    if ( (record.payload != null && record.computedBlockDigest == null)
                            || (record.httpHeader != null && record.computedPayloadDigest == null) ) {
                        Assert.fail( "Digest missing!" );
                    }
                }

                if (bDebugOutput) {
                    System.out.println("0x" + Long.toString(warcEntry.offset, 16) + "(" + warcEntry.offset + ") - " + warcEntry.recordId);
                }

                if (record.diagnostics.hasErrors()) {
                    errors += record.diagnostics.getErrors().size();
                }
                if (record.diagnostics.hasWarnings()) {
                    warnings += record.diagnostics.getWarnings().size();
                }
            }

            if (reader.getIteratorExceptionThrown() != null) {
                reader.getIteratorExceptionThrown().printStackTrace();
                Assert.fail("Unexpected exception!");
            }

            URL url = this.getClass().getClassLoader().getResource(warcFile2);
            File file = new File(getUrlPath(url));

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(file.length(), consumed);

            reader.close();
            bcin.close();

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(file.length(), consumed);
        } catch (IOException e) {
            Assert.fail("Unexpected i/o exception");
        }
View Full Code Here

        int errors = 0;
        int warnings = 0;

        try {
            InputStream in = this.getClass().getClassLoader().getResourceAsStream(warcFile);
            ByteCountingInputStream bcin = new ByteCountingInputStream(in);
            WarcReader reader = WarcReaderFactory.getReader(bcin);

            reader.setBlockDigestEnabled( bDigest );
            Assert.assertTrue(reader.setBlockDigestAlgorithm( "sha1" ));
            reader.setPayloadDigestEnabled( bDigest );
            Assert.assertTrue(reader.setPayloadDigestAlgorithm( "sha1" ));

            Iterator<WarcRecord> recordIterator = reader.iterator();
            WarcRecord record;

            while (recordIterator.hasNext()) {
                record = recordIterator.next();
                ++records;

                if (record.header.warcRecordIdUri == null) {
                    Assert.fail("Invalid warc-record-id");
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                warcEntry = new WarcEntry();
                warcEntry.recordId = record.header.warcRecordIdUri;
                warcEntry.offset = record.getStartOffset();
                warcEntries.add(warcEntry);

                record.close();

                consumed += record.getConsumed();
                Assert.assertEquals(record.consumed, record.getConsumed());

                // Test content-type and http response/request
                if (record.header.contentType != null) {
                    if ("application".equals(record.header.contentType.contentType)
                            && "http".equals(record.header.contentType.mediaType)) {
                        if ("response".equals(record.header.contentType.getParameter("msgtype"))) {
                            Assert.assertNotNull(record.payload);
                            Assert.assertNotNull(record.httpHeader);
                            Assert.assertEquals(HttpHeader.HT_RESPONSE, record.httpHeader.headerType);
                        } else if ("request".equals(record.header.contentType.getParameter("msgtype"))) {
                            Assert.assertNotNull(record.payload);
                            Assert.assertNotNull(record.httpHeader);
                            Assert.assertEquals(HttpHeader.HT_REQUEST, record.httpHeader.headerType);
                        }
                    }
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                if ( bDigest ) {
                    if ( (record.payload != null && record.computedBlockDigest == null)
                            || (record.httpHeader != null && record.computedPayloadDigest == null) ) {
                        Assert.fail( "Digest missing!" );
                    }
                }

                if (bDebugOutput) {
                    System.out.println("0x" + Long.toString(warcEntry.offset, 16) + "(" + warcEntry.offset + ") - " + warcEntry.recordId);
                }

                if (record.diagnostics.hasErrors()) {
                    errors += record.diagnostics.getErrors().size();
                }
                if (record.diagnostics.hasWarnings()) {
                    warnings += record.diagnostics.getWarnings().size();
                }
            }

            if (reader.getIteratorExceptionThrown() != null) {
                reader.getIteratorExceptionThrown().printStackTrace();
                Assert.fail("Unexpected exception!");
            }

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(bcin.getConsumed(), consumed);

            reader.close();
            bcin.close();

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(bcin.getConsumed(), consumed);
        } catch (IOException e) {
            Assert.fail("Unexpected i/o exception");
        }

        Assert.assertEquals(expected_records, records);
View Full Code Here

    @Test
    public void test_arcreader() {
        String in_file;
        InputStream in;
        ByteCountingInputStream bcin;
        ArcReader reader;
        ArcRecordBase record;
        Payload payload;
        PayloadWithHeaderAbstract payloadWithHeader;
        InputStream in_payload;
        byte[] tmpBuf = new byte[8192];
        int read;
        Object[][] expectedDiagnoses;
        int records;
        String tmpStr;

        MessageDigest md_block = null;
        if (blockAlgo != null) {
            try {
                md_block = MessageDigest.getInstance(blockAlgo);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        MessageDigest md_payload = null;
        if (payloadAlgo != null) {
            try {
                md_payload = MessageDigest.getInstance(payloadAlgo);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        byte[] block_digest;
        byte[] payload_digest;

        try {
            /*
             * Uncompressed.
             */
            in_file = "IAH-20080430204825-00000-blackbook.arc";

            in = this.getClass().getClassLoader().getResourceAsStream(in_file);
            bcin = new ByteCountingInputStream(in);
            reader = ArcReaderFactory.getReader(bcin, 8192);
            reader.setBlockDigestAlgorithm(blockAlgo);
            reader.setBlockDigestEncoding(blockBase);
            reader.setBlockDigestEnabled(true);
            reader.setPayloadDigestAlgorithm(payloadAlgo);
            reader.setPayloadDigestEncoding(payloadBase);
            reader.setPayloadDigestEnabled(true);

            records = 0;
            while ((record = reader.getNextRecord()) != null) {
                payload = record.getPayload();
                Assert.assertEquals(record.payload, payload);
                payloadWithHeader = null;
                if (payload != null) {
                    Assert.assertTrue(record.hasPayload());
                    payloadWithHeader = payload.getPayloadHeaderWrapped();
                } else {
                    Assert.assertFalse(record.hasPayload());
                }

                if (md_payload != null) {
                    md_payload.reset();
                }
                if (md_block != null && payload != null) {
                    md_block.reset();
                }

                block_digest = null;
                payload_digest = null;

                if (md_payload != null && payloadWithHeader != null) {
                    md_block.update(payloadWithHeader.getHeader());

                    //System.out.println("--");
                    //System.out.println(new String(payloadWithHeader.getHeader()));
                    //System.out.println("--");

                    in_payload = payloadWithHeader.getPayloadInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                        md_payload.update(tmpBuf, 0, read);
                    }
                } else if (md_block != null && payload != null) {
                    in_payload = payload.getInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                    }
                }

                Assert.assertFalse(record.isClosed());
                record.close();
                Assert.assertTrue(record.isClosed());
                ++records;

                if (md_block != null && payload != null) {
                    block_digest = md_block.digest();
                    //System.out.println("b1: " + Base16.encodeArray(block_digest));
                    //System.out.println("b2: " + Base16.encodeArray(payload.getDigest()));
                    Assert.assertArrayEquals(block_digest, payload.getDigest());

                    Assert.assertEquals(blockAlgo, record.computedBlockDigest.algorithm);
                    if (!"base2".equals(blockBase)) {
                        Assert.assertEquals(blockBase, record.computedBlockDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedBlockDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedBlockDigest.digestBytes, payload.getDigest());
                } else {
                    Assert.assertNull(record.computedBlockDigest);
                }
                if (md_payload != null && payloadWithHeader != null) {
                    payload_digest = md_payload.digest();
                    //System.out.println("p1: " + Base16.encodeArray(payload_digest));
                    //System.out.println("p2: " + Base16.encodeArray(payloadWithHeader.getDigest()));
                    Assert.assertArrayEquals(payload_digest, payloadWithHeader.getDigest());

                    Assert.assertEquals(payloadAlgo, record.computedPayloadDigest.algorithm);
                    if (!"base2".equals(payloadBase)) {
                        Assert.assertEquals(payloadBase, record.computedPayloadDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedPayloadDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedPayloadDigest.digestBytes, payloadWithHeader.getDigest());
                } else {
                    Assert.assertNull(record.computedPayloadDigest);
                }

                if (!"base2".equals(blockBase) && !"base2".equals(payloadBase)) {
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertFalse(record.diagnostics.hasErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                } else {
                    Assert.assertFalse(record.isCompliant());
                    if (payloadWithHeader != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                                {DiagnosisType.INVALID_DATA, "Payload digest encoding scheme", 1}
                        };
                    } else if (payload != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                        };
                    } else {
                        expectedDiagnoses = new Object[0][0];
                    }
                    TestBaseUtils.compareDiagnoses(expectedDiagnoses, record.diagnostics.getErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                }

                tmpStr = record.toString();
                Assert.assertNotNull(tmpStr);
            }
            Assert.assertEquals(300, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());

            reader.close();

            Assert.assertEquals(300, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            /*
             * Compressed.
             */
            in_file = "IAH-20080430204825-00000-blackbook.arc.gz";

            in = this.getClass().getClassLoader().getResourceAsStream(in_file);
            bcin = new ByteCountingInputStream(in);
            reader = ArcReaderFactory.getReader(bcin, 8192);
            reader.setBlockDigestAlgorithm(blockAlgo);
            reader.setBlockDigestEncoding(blockBase);
            reader.setBlockDigestEnabled(true);
            reader.setPayloadDigestAlgorithm(payloadAlgo);
            reader.setPayloadDigestEncoding(payloadBase);
            reader.setPayloadDigestEnabled(true);

            records = 0;
            while ((record = reader.getNextRecord()) != null) {
                payload = record.getPayload();
                Assert.assertEquals(record.payload, payload);
                payloadWithHeader = null;
                if (payload != null) {
                    Assert.assertTrue(record.hasPayload());
                    payloadWithHeader = payload.getPayloadHeaderWrapped();
                } else {
                    Assert.assertFalse(record.hasPayload());
                }

                if (md_payload != null) {
                    md_payload.reset();
                }
                if (md_block != null && payload != null) {
                    md_block.reset();
                }

                block_digest = null;
                payload_digest = null;

                if (md_payload != null && payloadWithHeader != null) {
                    md_block.update(payloadWithHeader.getHeader());

                    //System.out.println("--");
                    //System.out.println(new String(payloadWithHeader.getHeader()));
                    //System.out.println("--");

                    in_payload = payloadWithHeader.getPayloadInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                        md_payload.update(tmpBuf, 0, read);
                    }
                } else if (md_block != null && payload != null) {
                    in_payload = payload.getInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                    }
                }

                Assert.assertFalse(record.isClosed());
                record.close();
                Assert.assertTrue(record.isClosed());
                ++records;

                if (md_block != null && payload != null) {
                    block_digest = md_block.digest();
                    //System.out.println("b1: " + Base16.encodeArray(block_digest));
                    //System.out.println("b2: " + Base16.encodeArray(payload.getDigest()));
                    Assert.assertArrayEquals(block_digest, payload.getDigest());

                    Assert.assertEquals(blockAlgo, record.computedBlockDigest.algorithm);
                    if (!"base2".equals(blockBase)) {
                        Assert.assertEquals(blockBase, record.computedBlockDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedBlockDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedBlockDigest.digestBytes, payload.getDigest());
                } else {
                    Assert.assertNull(record.computedBlockDigest);
                }
                if (md_payload != null && payloadWithHeader != null) {
                    payload_digest = md_payload.digest();
                    //System.out.println("p1: " + Base16.encodeArray(payload_digest));
                    //System.out.println("p2: " + Base16.encodeArray(payloadWithHeader.getDigest()));
                    Assert.assertArrayEquals(payload_digest, payloadWithHeader.getDigest());

                    Assert.assertEquals(payloadAlgo, record.computedPayloadDigest.algorithm);
                    if (!"base2".equals(payloadBase)) {
                        Assert.assertEquals(payloadBase, record.computedPayloadDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedPayloadDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedPayloadDigest.digestBytes, payloadWithHeader.getDigest());
                } else {
                    Assert.assertNull(record.computedPayloadDigest);
                }

                if (!"base2".equals(blockBase) && !"base2".equals(payloadBase)) {
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertFalse(record.diagnostics.hasErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                } else {
                    Assert.assertFalse(record.isCompliant());
                    if (payloadWithHeader != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                                {DiagnosisType.INVALID_DATA, "Payload digest encoding scheme", 1}
                        };
                    } else if (payload != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                        };
                    } else {
                        expectedDiagnoses = new Object[0][0];
                    }
                    TestBaseUtils.compareDiagnoses(expectedDiagnoses, record.diagnostics.getErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                }

                tmpStr = record.toString();
                Assert.assertNotNull(tmpStr);
            }
            Assert.assertEquals(300, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());

            reader.close();

            Assert.assertEquals(300, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            /*
             * Small file.
             */
            in_file = "small_BNF.arc";

            in = this.getClass().getClassLoader().getResourceAsStream(in_file);
            bcin = new ByteCountingInputStream(in);
            reader = ArcReaderFactory.getReader(bcin, 8192);
            reader.setBlockDigestAlgorithm(blockAlgo);
            reader.setBlockDigestEncoding(blockBase);
            reader.setBlockDigestEnabled(true);
            reader.setPayloadDigestAlgorithm(payloadAlgo);
            reader.setPayloadDigestEncoding(payloadBase);
            reader.setPayloadDigestEnabled(true);

            records = 0;
            while ((record = reader.getNextRecord()) != null) {
                payload = record.getPayload();
                Assert.assertEquals(record.payload, payload);
                payloadWithHeader = null;
                if (payload != null) {
                    Assert.assertTrue(record.hasPayload());
                    payloadWithHeader = payload.getPayloadHeaderWrapped();
                } else {
                    Assert.assertFalse(record.hasPayload());
                }

                if (md_payload != null) {
                    md_payload.reset();
                }
                if (md_block != null && payload != null) {
                    md_block.reset();
                }

                block_digest = null;
                payload_digest = null;

                if (md_payload != null && payloadWithHeader != null) {
                    md_block.update(payloadWithHeader.getHeader());

                    //System.out.println("--");
                    //System.out.println(new String(payloadWithHeader.getHeader()));
                    //System.out.println("--");

                    in_payload = payloadWithHeader.getPayloadInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                        md_payload.update(tmpBuf, 0, read);
                    }
                } else if (md_block != null && payload != null) {
                    in_payload = payload.getInputStream();
                    while ((read = in_payload.read(tmpBuf)) != -1) {
                        md_block.update(tmpBuf, 0, read);
                    }
                }

                Assert.assertFalse(record.isClosed());
                record.close();
                Assert.assertTrue(record.isClosed());
                ++records;

                if (md_block != null && payload != null) {
                    block_digest = md_block.digest();
                    //System.out.println("b1: " + Base16.encodeArray(block_digest));
                    //System.out.println("b2: " + Base16.encodeArray(payload.getDigest()));
                    Assert.assertArrayEquals(block_digest, payload.getDigest());

                    Assert.assertEquals(blockAlgo, record.computedBlockDigest.algorithm);
                    if (!"base2".equals(blockBase)) {
                        Assert.assertEquals(blockBase, record.computedBlockDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedBlockDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedBlockDigest.digestBytes, payload.getDigest());
                } else {
                    Assert.assertNull(record.computedBlockDigest);
                }
                if (md_payload != null && payloadWithHeader != null) {
                    payload_digest = md_payload.digest();
                    //System.out.println("p1: " + Base16.encodeArray(payload_digest));
                    //System.out.println("p2: " + Base16.encodeArray(payloadWithHeader.getDigest()));
                    Assert.assertArrayEquals(payload_digest, payloadWithHeader.getDigest());

                    Assert.assertEquals(payloadAlgo, record.computedPayloadDigest.algorithm);
                    if (!"base2".equals(payloadBase)) {
                        Assert.assertEquals(payloadBase, record.computedPayloadDigest.encoding);
                    } else {
                        Assert.assertNull(record.computedPayloadDigest.encoding);
                    }
                    Assert.assertArrayEquals(record.computedPayloadDigest.digestBytes, payloadWithHeader.getDigest());
                } else {
                    Assert.assertNull(record.computedPayloadDigest);
                }

                if (!"base2".equals(blockBase) && !"base2".equals(payloadBase)) {
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertFalse(record.diagnostics.hasErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                } else {
                    Assert.assertFalse(record.isCompliant());
                    if (payloadWithHeader != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                                {DiagnosisType.INVALID_DATA, "Payload digest encoding scheme", 1}
                        };
                    } else if (payload != null) {
                        expectedDiagnoses = new Object[][] {
                                {DiagnosisType.INVALID_DATA, "Block digest encoding scheme", 1},
                        };
                    } else {
                        expectedDiagnoses = new Object[0][0];
                    }
                    TestBaseUtils.compareDiagnoses(expectedDiagnoses, record.diagnostics.getErrors());
                    Assert.assertFalse(record.diagnostics.hasWarnings());
                }

                tmpStr = record.toString();
                Assert.assertNotNull(tmpStr);
            }
            Assert.assertEquals(6, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());

            reader.close();

            Assert.assertEquals(6, records);
            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
        } catch (IOException e) {
            e.printStackTrace();
            Assert.fail("Unexpected exception!");
        }
    }
View Full Code Here

        int errors = 0;
        int warnings = 0;

        try {
            InputStream in = this.getClass().getClassLoader().getResourceAsStream(arcFile);
            ByteCountingInputStream bcin = new ByteCountingInputStream(in);
            ArcReader reader = ArcReaderFactory.getReader(bcin);
            ArcRecordBase record;

            reader.setBlockDigestEnabled( bDigest );
            Assert.assertTrue(reader.setBlockDigestAlgorithm( "sha1" ));
            reader.setPayloadDigestEnabled( bDigest );
            Assert.assertTrue(reader.setPayloadDigestAlgorithm( "sha1" ));

            Iterator<ArcRecordBase> recordIterator = reader.iterator();

            while (recordIterator.hasNext()) {
                record = recordIterator.next();
                ++records;

                switch (records) {
                case 1:
                    Assert.assertEquals(ArcRecordBase.RT_VERSION_BLOCK, record.recordType);
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertNotNull(record.versionHeader);
                    Assert.assertNotNull(record.versionHeader.isValid());
                    Assert.assertEquals(ArcVersion.VERSION_1_1, record.versionHeader.version);
                    break;
                default:
                    Assert.assertEquals(ArcRecordBase.RT_ARC_RECORD, record.recordType);
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertNull(record.versionHeader);
                    break;
                }

                if (record.header.urlUri == null) {
                    Assert.fail("Invalid arc uri");
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                //System.out.println(record.getStartOffset());
                //System.out.println(reader.getStartOffset());
                //System.out.println(reader.getOffset());

                arcEntry = new ArcEntry();
                arcEntry.recordId = record.header.urlUri;
                arcEntry.offset = record.getStartOffset();
                arcEntries.add(arcEntry);

                if (bDebugOutput) {
                    System.out.println("0x" + Long.toString(arcEntry.offset, 16) + "(" + arcEntry.offset + ") - " + arcEntry.recordId);
                }

                record.close();

                consumed += record.getConsumed();
                Assert.assertEquals(record.consumed, record.getConsumed());

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                if ( bDigest ) {
                    if ( (record.payload != null && record.computedBlockDigest == null)
                            || (record.httpHeader != null && record.computedPayloadDigest == null) ) {
                        Assert.fail( "Digest missing!" );
                    }
                }

                //System.out.println(record.getStartOffset());
                //System.out.println(reader.getStartOffset());
                //System.out.println(reader.getOffset());

                if (record.diagnostics.hasErrors()) {
                    errors += record.diagnostics.getErrors().size();
                }
                if (record.diagnostics.hasWarnings()) {
                    warnings += record.diagnostics.getWarnings().size();
                }
            }

            if (reader.getIteratorExceptionThrown() != null) {
                reader.getIteratorExceptionThrown().printStackTrace();
                Assert.fail("Unexpected exception!");
            }

            URL url = this.getClass().getClassLoader().getResource(arcFile2);
            File file = new File(getUrlPath(url));

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(file.length(), consumed);

            reader.close();
            bcin.close();

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(file.length(), consumed);
        } catch (IOException e) {
            e.printStackTrace();
            Assert.fail("Unexpected exception");
        }
View Full Code Here

        int errors = 0;
        int warnings = 0;

        try {
            InputStream in = this.getClass().getClassLoader().getResourceAsStream(arcFile);
            ByteCountingInputStream bcin = new ByteCountingInputStream(in);
            ArcReader reader = ArcReaderFactory.getReader(bcin, 8192);
            ArcRecordBase record;

            reader.setBlockDigestEnabled( bDigest );
            Assert.assertTrue(reader.setBlockDigestAlgorithm( "sha1" ));
            reader.setPayloadDigestEnabled( bDigest );
            Assert.assertTrue(reader.setPayloadDigestAlgorithm( "sha1" ));

            Iterator<ArcRecordBase> recordIterator = reader.iterator();

            while (recordIterator.hasNext()) {
                record = recordIterator.next();
                ++records;

                switch (records) {
                case 1:
                    Assert.assertEquals(ArcRecordBase.RT_VERSION_BLOCK, record.recordType);
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertNotNull(record.versionHeader);
                    Assert.assertNotNull(record.versionHeader.isValid());
                    Assert.assertEquals(ArcVersion.VERSION_1_1, record.versionHeader.version);
                    break;
                default:
                    Assert.assertEquals(ArcRecordBase.RT_ARC_RECORD, record.recordType);
                    Assert.assertTrue(record.isCompliant());
                    Assert.assertNull(record.versionHeader);
                    break;
                }

                if (bDebugOutput) {
                    System.out.println("0x" + Long.toString(record.getStartOffset(), 16) + "(" + record.getStartOffset() + ")");
                    System.out.println( record.header.urlStr );
                    System.out.println( record.header.ipAddressStr );
                    System.out.println( record.header.archiveDateStr );
                    System.out.println( record.header.contentTypeStr );
                    System.out.println( record.header.resultCode );
                    System.out.println( record.header.checksumStr );
                    System.out.println( record.header.locationStr );
                    System.out.println( record.header.offset );
                    System.out.println( record.header.filenameStr );
                    System.out.println( record.header.archiveLength );
                }

                if (record.header.urlUri == null) {
                    Assert.fail("Invalid arc uri");
                }

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                arcEntry = new ArcEntry();
                arcEntry.recordId = record.header.urlUri;
                arcEntry.offset = record.getStartOffset();
                arcEntries.add(arcEntry);

                if (bDebugOutput) {
                    System.out.println("0x" + Long.toString(arcEntry.offset, 16) + "(" + arcEntry.offset + ") - " + arcEntry.recordId);
                }

                record.close();

                consumed += record.getConsumed();
                Assert.assertEquals(record.consumed, record.getConsumed());

                Assert.assertThat(record.getStartOffset(), is(equalTo(reader.getStartOffset())));
                Assert.assertThat(record.getStartOffset(), is(not(equalTo(reader.getOffset()))));

                if ( bDigest ) {
                    if ( (record.payload != null && record.computedBlockDigest == null)
                            || (record.httpHeader != null && record.computedPayloadDigest == null) ) {
                        Assert.fail( "Digest missing!" );
                    }
                }

                if (record.diagnostics.hasErrors()) {
                    errors += record.diagnostics.getErrors().size();
                }
                if (record.diagnostics.hasWarnings()) {
                    warnings += record.diagnostics.getWarnings().size();
                }
            }

            if (reader.getIteratorExceptionThrown() != null) {
                reader.getIteratorExceptionThrown().printStackTrace();
                Assert.fail("Unexpected exception!");
            }

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(bcin.getConsumed(), consumed);

            reader.close();
            bcin.close();

            Assert.assertEquals(bcin.getConsumed(), reader.getConsumed());
            Assert.assertEquals(bcin.getConsumed(), reader.getOffset());
            Assert.assertEquals(bcin.getConsumed(), consumed);
        } catch (IOException e) {
            Assert.fail("Unexpected i/o exception");
        }

        Assert.assertEquals(expected_records, records);
View Full Code Here

TOP

Related Classes of org.jwat.common.ByteCountingInputStream

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.