blob: 1e34a44987292c2a41fb35b80c28c6b0749d661a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Marc-Andre Laperle - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.tests.trace.indexer;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import org.eclipse.tracecompass.internal.tmf.core.trace.indexer.FlatArray;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.indexer.ITmfPersistentlyIndexable;
import org.eclipse.tracecompass.tmf.core.trace.indexer.checkpoint.ITmfCheckpoint;
import org.eclipse.tracecompass.tmf.core.trace.indexer.checkpoint.TmfCheckpoint;
import org.eclipse.tracecompass.tmf.core.trace.location.TmfLongLocation;
import org.junit.Test;
/**
* Tests for the FlatArray class
*
* @author Marc-Andre Laperle
*/
public class FlatArrayTest extends AbstractCheckpointCollectionTest {
private FlatArray fFlatArray;
@Override
protected FlatArray createCollection() {
fCheckpointCollection = fFlatArray = new FlatArray(getFile(), (ITmfPersistentlyIndexable) getTrace());
return fFlatArray;
}
@Override
public boolean isPersistableCollection() {
return true;
}
/**
* Tests that binarySearch find the correct checkpoint and ends with a
* perfect match
*/
@Test
public void testBinarySearch() {
for (long i = 0; i < CHECKPOINTS_INSERT_NUM; i++) {
TmfCheckpoint checkpoint = new TmfCheckpoint(TmfTimestamp.fromSeconds(i), new TmfLongLocation(i), 0);
fFlatArray.insert(checkpoint);
}
TmfCheckpoint expectedCheckpoint = new TmfCheckpoint(TmfTimestamp.fromSeconds(122), new TmfLongLocation(122L), 0);
int expectedRank = 122;
long rank = fFlatArray.binarySearch(expectedCheckpoint);
ITmfCheckpoint found = fFlatArray.get(rank);
assertEquals(expectedRank, rank);
assertEquals(found, expectedCheckpoint);
}
/**
* Test many checkpoint insertions. Make sure they can be found after
* re-opening the file
*/
@Test
public void testInsertAlotCheckEquals() {
ArrayList<Integer> list = insertAlot();
fFlatArray = createCollection();
for (int i = 0; i < CHECKPOINTS_INSERT_NUM; i++) {
int checkpointIndex = list.get(i);
TmfCheckpoint checkpoint = new TmfCheckpoint(TmfTimestamp.fromSeconds(12345 + checkpointIndex),
new TmfLongLocation(123456L + checkpointIndex), checkpointIndex);
ITmfCheckpoint found = fFlatArray.get(checkpointIndex);
assertEquals(checkpoint, found);
}
}
}