/*
* Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
*
* This file is part of PowerFolder.
*
* PowerFolder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* PowerFolder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PowerFolder. If not, see <http://www.gnu.org/licenses/>.
*
* $Id$
*/
package de.dal33t.powerfolder.test;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.logging.Logger;
import de.dal33t.powerfolder.Constants;
import de.dal33t.powerfolder.disk.DiskItemFilter;
import de.dal33t.powerfolder.light.FileInfo;
import de.dal33t.powerfolder.light.FileInfoFactory;
import de.dal33t.powerfolder.light.FolderInfo;
import de.dal33t.powerfolder.light.MemberInfo;
import de.dal33t.powerfolder.message.FileChunk;
import de.dal33t.powerfolder.message.FileList;
import de.dal33t.powerfolder.message.Message;
import de.dal33t.powerfolder.util.ByteSerializer;
import de.dal33t.powerfolder.util.IdGenerator;
/**
* Tests the serializing perfomance
*
* @author <a href="mailto:totmacher@powerfolder.com">Christian Sprajc</a>
* @version $Revision: 1.2 $
*/
public class TestSerialize {
private static final Logger log = Logger.getLogger(TestSerialize.class
.getName());
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
byte[] raw;
Message[] testMsgs = generateTestMessages();
for (int i = 0; i < testMsgs.length; i++) {
long start = System.currentTimeMillis();
raw = ByteSerializer.serializeStatic(testMsgs[i], true);
long took = System.currentTimeMillis() - start;
log.info("Serialize took " + took + "ms (" + raw.length
+ " bytes) of " + testMsgs[i]);
}
}
private static Message[] generateTestMessages() {
return new Message[]{generateFileChunk(), generateFileChunk(),
generateFileChunk(), generateFileList(), generateFileList(),
generateFileList()};
}
private static FileChunk generateFileChunk() {
byte[] data = new byte[10240];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) (Math.random() * 255);
}
return new FileChunk(generateFileInfo(), 10, data);
}
private static FileList generateFileList() {
FileInfo[] files = new FileInfo[Constants.FILE_LIST_MAX_FILES_PER_MESSAGE - 1];
for (int i = 0; i < files.length; i++) {
files[i] = generateFileInfo();
}
FileList list = (FileList) FileList.create4Test(
generateFolderInfo(), Arrays.asList(files), new DiskItemFilter())[0];
return list;
}
private static FileInfo generateFileInfo() {
String fn = "subdir/" + Math.random()
+ "/and another/test filename.gif";
return FileInfoFactory.unmarshallExistingFile(generateFolderInfo(), fn,
(long) (Math.random() * 100000), generateMemberInfo(), new Date(),
0, false);
}
private static MemberInfo generateMemberInfo() {
return new MemberInfo("noob", IdGenerator.makeId(), null);
}
private static FolderInfo generateFolderInfo() {
return new FolderInfo("TestFolder" + Math.random(), IdGenerator
.makeId());
}
}