blob: 0c09bfef76f9c29427226077c33958630a55c915 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 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
*******************************************************************************/
package org.eclipse.tracecompass.jsontrace.core.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.jsontrace.core.tests.stub.JsonStubTrace;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.junit.Test;
/**
* Test generic Json trace
*
* @author Simon Delisle
*/
public class JsonTraceTest {
/**
* Test the unsorted json trace
*
* @throws TmfTraceException
* If there is a problem while initializing the trace
*/
@Test
public void testSortedTrace() throws TmfTraceException {
String path = "traces/sortedTrace.json"; //$NON-NLS-1$
long nbEvents = 5;
ITmfTimestamp startTime = TmfTimestamp.fromNanos(1);
ITmfTimestamp endTime = TmfTimestamp.fromNanos(5);
testJsonTrace(path, nbEvents, startTime, endTime);
}
/**
* Test the unsorted json trace
*
* @throws TmfTraceException
* If there is a problem while initializing the trace
*/
@Test
public void testUnsortedTrace() throws TmfTraceException {
String path = "traces/unsortedTrace.json"; //$NON-NLS-1$
long nbEvents = 5;
ITmfTimestamp startTime = TmfTimestamp.fromNanos(1);
ITmfTimestamp endTime = TmfTimestamp.fromNanos(5);
testJsonTrace(path, nbEvents, startTime, endTime);
}
private void testJsonTrace(String path, long expectedNbEvents, ITmfTimestamp startTime, ITmfTimestamp endTime)
throws TmfTraceException {
ITmfTrace trace = new JsonStubTrace();
try {
IStatus validate = trace.validate(null, path);
assertTrue(validate.getMessage(), validate.isOK());
trace.initTrace(null, path, ITmfEvent.class);
ITmfContext context = trace.seekEvent(0.0);
ITmfEvent event = trace.getNext(context);
long count = 0;
long prevTs = -1;
while (event != null) {
count++;
@NonNull
ITmfTimestamp currentTime = event.getTimestamp();
assertNotNull(currentTime);
// Make sure that the event are ordered
assertTrue(currentTime.toNanos() >= prevTs);
prevTs = currentTime.toNanos();
event = trace.getNext(context);
}
assertEquals(expectedNbEvents, count);
assertEquals(expectedNbEvents, trace.getNbEvents());
assertEquals(startTime.toNanos(), trace.getStartTime().toNanos());
assertEquals(endTime.toNanos(), trace.getEndTime().toNanos());
} finally {
trace.dispose();
}
}
}