blob: d3978f34dd8132aa87386c30c8e6333d75816ef2 [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
package com.gemstone.gemfire.internal.cache.functions;
import java.util.Map;
import java.util.Set;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.execute.Function;
import com.gemstone.gemfire.cache.execute.FunctionAdapter;
import com.gemstone.gemfire.cache.execute.FunctionContext;
import com.gemstone.gemfire.cache.execute.RegionFunctionContext;
import com.gemstone.gemfire.cache.partition.PartitionRegionHelper;
import com.gemstone.gemfire.internal.Assert;
import com.gemstone.gemfire.internal.cache.LocalDataSet;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
public class LocalDataSetFunction extends FunctionAdapter {
private volatile boolean optimizeForWrite;
public LocalDataSetFunction(boolean optimizeForWrite) {
this.optimizeForWrite = optimizeForWrite;
}
public void execute(FunctionContext context) {
RegionFunctionContext rContext = (RegionFunctionContext)context;
Region cust = rContext.getDataSet();
LocalDataSet localCust = (LocalDataSet)PartitionRegionHelper.getLocalDataForContext(rContext);
Map <String, Region<?,?>> colocatedRegions = PartitionRegionHelper.getColocatedRegions(cust);
Map <String, Region<?,?>> localColocatedRegions = PartitionRegionHelper.getLocalColocatedRegions(rContext);
Assert.assertTrue(colocatedRegions.size()==2);
Set custKeySet = cust.keySet();
Set localCustKeySet = localCust.keySet();
Region ord = colocatedRegions.get("/OrderPR") ;
LocalDataSet localOrd = (LocalDataSet)localColocatedRegions.get("/OrderPR");
Set ordKeySet = ord.keySet();
Set localOrdKeySet = localOrd.keySet();
Region ship = colocatedRegions.get("/ShipmentPR");
LocalDataSet localShip = (LocalDataSet)localColocatedRegions.get("/ShipmentPR");
Set shipKeySet = ship.keySet();
Set localShipKeySet = localShip.keySet();
Assert.assertTrue(localCust.getBucketSet().size() == localOrd.getBucketSet().size());
Assert.assertTrue(localCust.getBucketSet().size() == localShip.getBucketSet().size());
Assert.assertTrue(custKeySet.size() == 120);
Assert.assertTrue(ordKeySet.size() == 120);
Assert.assertTrue(shipKeySet.size() == 120);
Assert.assertTrue(localCustKeySet.size() == localOrdKeySet.size());
Assert.assertTrue(localCustKeySet.size() == localShipKeySet.size());
context.getResultSender().lastResult(null);
}
public String getId() {
return "LocalDataSetFunction" + optimizeForWrite;
}
public boolean hasResult() {
return true;
}
public boolean optimizeForWrite() {
return optimizeForWrite;
}
public boolean isHA() {
return false;
}
}