/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.db.tests.api.support.clusterControl; import java.util.Arrays; import org.junit.Test; import org.simantics.databoard.Bindings; import org.simantics.db.Resource; import org.simantics.db.WriteGraph; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.event.ChangeEvent; import org.simantics.db.event.ChangeListener; import org.simantics.db.exception.DatabaseException; import org.simantics.db.service.ClusterControl; import org.simantics.db.service.GraphChangeListenerSupport; import org.simantics.db.testing.cases.FreshDatabaseTest; public class CreateAndCollectBigClusterInUpdateTest extends FreshDatabaseTest { Resource resource1; Resource resource2; Resource resource3; @Test public void test() throws Exception{ GraphChangeListenerSupport changeListenerSupport = getSession().getService(GraphChangeListenerSupport.class); changeListenerSupport.addMetadataListener( new ChangeListener() { @Override public void graphChanged(ChangeEvent e) throws DatabaseException { // Collect ClusterControl cc = e.getGraph().getService(ClusterControl.class); cc.collectClusters(Integer.MAX_VALUE); Arrays.equals(testArray(10), (byte[])e.getGraph().getValue(resource1, Bindings.BYTE_ARRAY)); Arrays.equals(testArray(100000), (byte[])e.getGraph().getValue(resource2, Bindings.BYTE_ARRAY)); Arrays.equals(testArray(10), (byte[])e.getGraph().getValue(resource3, Bindings.BYTE_ARRAY)); } } ); getSession().sync(new WriteRequest() { @Override public void perform(WriteGraph g) throws DatabaseException { g.flushCluster(); for(int i=0;i<1000;i++) g.newResource(); resource1 = g.newResource(); g.claimValue(resource1, testArray(10), Bindings.BYTE_ARRAY); for(int i=0;i<1000;i++) g.newResource(); resource2 = g.newResource(); g.claimValue(resource2, testArray(100000), Bindings.BYTE_ARRAY); for(int i=0;i<1000;i++) g.newResource(); resource3 = g.newResource(); g.claimValue(resource3, testArray(10), Bindings.BYTE_ARRAY); } }); } byte[] testArray(int size) { byte[] result = new byte[size]; for(int i=0;i