createPartitions(channels, partitions);
print(channels);
checkViews(channels, "A", "A", "B");
checkViews(channels, "B", "A", "B");
checkViews(channels, "C", "C", "D");
<BUG>checkViews(channels, "D", "C", "D");
System.out.println("\n==== injecting merge event into A and C concurrently ====");
</BUG>
injectMergeEvent(channels, "C", "A", "C");
<BUG>injectMergeEvent(channels, "A", "A", "C");
for(int i=0; i < 20; i++) {
System.out.print(".");</BUG>
if(allChannelsHaveViewOf(channels, 4))

createPartitions(channels, partitions);
print(channels);
checkViews(channels, "A", "A", "B");
checkViews(channels, "B", "A", "B");
checkViews(channels, "C", "C", "D");
checkViews(channels, "D", "C", "D");
long end_time=System.currentTimeMillis() + 30000;
do {
System.out.println("\n==== injecting merge events into A and C concurrently ====");
injectMergeEvent(channels, "C", "A", "C");
injectMergeEvent(channels, "A", "A", "C");
Util.sleep(1000);
if(allChannelsHaveViewOf(channels, 4))
