// FeatureCollectionSha1Sync.TRACE_RESPONSE = GeoserverClientSynchronizer.TRACE_POST;
final Feature[] serverFeatures = new Feature[] {
f("F1", 0), f("F2", 1), f("F3", 2), f("F4", 3), f("F5", 4), f("F6", 5)
};
FeatureCollectionType client = make(f("F1", 0), f("F2", 1), f("F3", 2), f("F4", 3), f("F5", 4), f("F6", 5));
Map<Identifier, FeatureAccessor> clientMap = asMap(client);
final List<Map<Identifier, FeatureAccessor>> changes = new ArrayList<Map<Identifier,FeatureAccessor>>();
GeoserverClientSynchronizer synchronizer = new GeoserverClientSynchronizer(makeConfiguration(), "url", SimulatedRequestBuilder.POST_TEMPLATE);
RecordingFeatureChangeListener listener = new RecordingFeatureChangeListener(synchronizer.getListener());
synchronizer.setListener(listener);
long lastOutput = 0;
for (int i = 0; i < 10000; i++) {
Map<Identifier, FeatureAccessor> oldClientMap = new HashMap<Identifier, FeatureAccessor>(clientMap);
UpdateRecords changed = randomlyChangeFeatures(serverFeatures);
listener.reset();
FeatureCollectionType server = make(serverFeatures);
changes.clear();
changes.add(asMap(server));
final SimulatedRequestBuilder builder = new SimulatedRequestBuilder(server);
synchronizer.setRoundListener(new RoundListener() {
@Override
public void beforeRound(int r) { }
@Override
public void afterRound(int r) {
// 50/50 chance of change for each round
if (random.nextBoolean()) { return; }
try {
randomlyChangeFeatures(serverFeatures);
FeatureCollectionType changedFeatures = make(serverFeatures);
changes.add(asMap(changedFeatures));
builder.setServer(changedFeatures);
} catch (Exception e) {
throw new RuntimeException(e);
}