package org.fastcatsearch.ir.config; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.bind.JAXBException; import org.fastcatsearch.common.io.BytesStreamInput; import org.fastcatsearch.ir.config.CollectionsConfig.Collection; import org.fastcatsearch.ir.config.DataInfo.RevisionInfo; import org.fastcatsearch.ir.config.DataInfo.SegmentInfo; import org.fastcatsearch.ir.io.BytesDataInput; import org.fastcatsearch.ir.io.BytesDataOutput; import org.fastcatsearch.ir.util.Formatter; import org.fastcatsearch.util.JAXBConfigs; import org.junit.Test; public class DataInfoConfigTest { @Test public void testDataInfoRead() throws IOException, JAXBException { String dataInfoXml = "<data-info documents=\"7500\" deletes=\"300\">\n" + " <segment id=\"0\" base=\"0\" revision=\"2\" documents=\"6000\" deletes=\"250\" createTime=\"2013-06-15 15:30:00\" />\n" + " <segment id=\"1\" base=\"6000\" revision=\"1\" documents=\"1500\" deletes=\"50\" createTime=\"2013-06-15 16:30:00\" />\n" + "</data-info>"; InputStream is = new ByteArrayInputStream(dataInfoXml.getBytes()); DataInfo collectionsConfig = JAXBConfigs.readConfig(is, DataInfo.class); } @Test public void testDataInfoWrite() throws JAXBException { DataInfo dataInfo = new DataInfo(); dataInfo.setSegmentInfoList(new ArrayList<SegmentInfo>()); SegmentInfo segmentInfo = new SegmentInfo("0", 0); segmentInfo.updateRevision(new RevisionInfo(0, "1234-5678", 200, 100, 10, 0,Formatter.formatDate(new Date()))); dataInfo.getSegmentInfoList().add(segmentInfo); segmentInfo = new SegmentInfo("1", 1000); segmentInfo.updateRevision(new RevisionInfo(0, "2345-6789", 400, 350, 20, 0, Formatter.formatDate(new Date()))); dataInfo.getSegmentInfoList().add(segmentInfo); ByteArrayOutputStream os = new ByteArrayOutputStream(); JAXBConfigs.writeRawConfig(os, dataInfo, DataInfo.class); System.out.println(os.toString()); } @Test public void testWriteAndRead() throws IOException, JAXBException { DataInfo dataInfo = new DataInfo(); ByteArrayOutputStream output2 = new ByteArrayOutputStream(); JAXBConfigs.writeRawConfig(output2, dataInfo, DataInfo.class); byte[] arr = output2.toByteArray(); System.out.println("arr.len = "+arr.length); ByteArrayInputStream input2 = new ByteArrayInputStream(arr); DataInfo dataInfo22 = JAXBConfigs.readConfig(input2, DataInfo.class); BytesDataOutput output = new BytesDataOutput(); JAXBConfigs.writeRawConfig(output, dataInfo, DataInfo.class); byte[] arr2 = output.array(); for(int i =0;i<arr.length; i++){ assertTrue(arr[i] == arr2[i]); } System.out.println("arr2.len = "+output.position()); BytesStreamInput input = new BytesStreamInput(arr2, 0, (int) output.position(), true); DataInfo dataInfo2 = JAXBConfigs.readConfig(input, DataInfo.class); } @Test public void testSegmentInfoWrite() throws JAXBException { SegmentInfo segmentInfo = new SegmentInfo("5", 200); ByteArrayOutputStream os = new ByteArrayOutputStream(); JAXBConfigs.writeRawConfig(os, segmentInfo, SegmentInfo.class); System.out.println(os.toString()); } }