/* * $Id$ * * Copyright 2011 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.server.utests.sharing; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import junit.framework.TestCase; import ome.services.sharing.BlobShareStore; import ome.services.sharing.data.Obj; import ome.services.sharing.data.ShareData; import org.springframework.util.ResourceUtils; import org.testng.annotations.Test; /** * @author Josh Moore, josh at glencoesoftware.com * @since 4.4.0 */ @Test(groups = "sharing") public class BlobShareStoreTest extends TestCase { BlobShareStore store = new BlobShareStore(); /** * Test whether different versions of blobs (i.e. created under older/newer * Ice versions) are still readable by the current Ice version. */ public void testReadBlobs() throws Exception { ShareData[] data = loadData(); assertEquals(3, data.length); ShareData d = data[0]; for (int i = 1; i < data.length; i++) { ShareData t = data[i]; assertEquals(d.enabled, t.enabled); assertEquals(d.id, t.id); assertEquals(d.optlock, t.optlock); assertEquals(d.owner, t.owner); assertEquals(d.guests.toString(), t.guests.toString()); assertEquals(d.members.toString(), t.members.toString()); assertEquals(toString(d.objectList), toString(t.objectList)); assertEquals(toString(d.objectMap), toString(d.objectMap)); } } String toString(List<Obj> objs) { StringBuilder sb = new StringBuilder(); sb.append("["); for (Obj obj : objs) { sb.append("Obj("); sb.append(obj.type); sb.append(":"); sb.append(obj.id); sb.append(")"); } sb.append("]"); return sb.toString(); } String toString(Map<String, List<Long>> map) { List<String> keys = new ArrayList<String>(map.keySet()); Collections.sort(keys); StringBuilder sb = new StringBuilder(); sb.append("["); for (String key : keys) { sb.append(key); sb.append("="); sb.append(map.get(key).toString()); sb.append(" "); } sb.append("]"); return sb.toString(); } ShareData[] loadData() throws Exception { File[] blobs = loadBlobs(); ShareData[] datas = new ShareData[blobs.length]; for (int i = 0; i < blobs.length; i++) { File blob = blobs[i]; byte[] buf = loadFile(blob); datas[i] = store.parse(1, buf); } return datas; } byte[] loadFile(File file) throws Exception{ int size = (int) file.length(); FileInputStream fis = new FileInputStream(file); byte[] buf = new byte[size]; fis.read(buf); fis.close(); return buf; } File[] loadBlobs() throws Exception { File f33 = ResourceUtils .getFile("classpath:ome/server/utests/sharing/33.blob"); File f34 = ResourceUtils .getFile("classpath:ome/server/utests/sharing/34.blob"); File f35 = ResourceUtils .getFile("classpath:ome/server/utests/sharing/35.blob"); return new File[] { f35, f34, f33 }; } }