blob: d1222e3b3e339513ea043778006dce9c2b0b7572 [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:
* Matthew Khouzam - Initial API and implementation
* Marc-Andre Laperle - Test in traces directory recursively
* Simon Delisle - Add test for getCallsite(eventName, ip)
*******************************************************************************/
package org.eclipse.tracecompass.ctf.core.tests.trace;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
import java.nio.ByteOrder;
import java.util.UUID;
import org.eclipse.tracecompass.ctf.core.CTFException;
import org.eclipse.tracecompass.ctf.core.event.CTFClock;
import org.eclipse.tracecompass.ctf.core.event.types.IDefinition;
import org.eclipse.tracecompass.ctf.core.event.types.StructDeclaration;
import org.eclipse.tracecompass.ctf.core.tests.shared.CtfTestTraceUtils;
import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
import org.eclipse.tracecompass.ctf.core.trace.ICTFStream;
import org.eclipse.tracecompass.internal.ctf.core.event.metadata.ParseException;
import org.eclipse.tracecompass.internal.ctf.core.trace.CTFStream;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
/**
* The class <code>CTFTraceTest</code> contains tests for the class
* <code>{@link CTFTrace}</code>.
*
* @author ematkho
*/
public class CTFTraceTest {
private static final CtfTestTrace testTrace = CtfTestTrace.KERNEL;
private CTFTrace fixture;
/**
* Perform pre-test initialization.
*/
@Before
public void setUp() {
try {
fixture = CtfTestTraceUtils.getTrace(testTrace);
} catch (CTFException e) {
/* If the assumeTrue() call passed, this should not happen. */
fail();
}
fixture.setMinor(1L);
fixture.setUUID(UUID.randomUUID());
fixture.setPacketHeader(new StructDeclaration(1L));
fixture.setMajor(1L);
fixture.setByteOrder(ByteOrder.BIG_ENDIAN);
}
/**
* Run the CTFTrace(File) constructor test with a known existing trace.
*/
@Test
public void testOpen_existing() {
try {
CTFTrace result = CtfTestTraceUtils.getTrace(testTrace);
assertNotNull(result.getUUID());
} catch (CTFException e) {
fail();
}
}
/**
* Run the CTFTrace(File) constructor test with an invalid path.
*
* @throws CTFException
* is expected
*/
@Test(expected = org.eclipse.tracecompass.ctf.core.CTFException.class)
public void testOpen_invalid() throws CTFException {
File path = new File("");
CTFTrace result = new CTFTrace(path);
assertNotNull(result);
}
/**
* Run the boolean UUIDIsSet() method test.
*/
@Test
public void testUUIDIsSet() {
boolean result = fixture.uuidIsSet();
assertTrue(result);
}
/**
* Run the void addStream(Stream) method test.
*/
@Test
public void testAddStream() {
// test number of streams
int nbStreams = fixture.nbStreams();
assertEquals(1, nbStreams);
// Add a stream
try {
CTFStream stream = new CTFStream(CtfTestTraceUtils.getTrace(testTrace));
stream.setId(1234);
fixture.addStream(stream);
} catch (CTFException e) {
fail();
} catch (ParseException e) {
fail();
}
// test number of streams
nbStreams = fixture.nbStreams();
assertEquals(2, nbStreams);
}
/**
* Run the boolean byteOrderIsSet() method test.
*/
@Test
public void testByteOrderIsSet() {
boolean result = fixture.byteOrderIsSet();
assertTrue(result);
}
/**
* Run the ByteOrder getByteOrder() method test.
*/
@Test
public void testGetByteOrder_1() {
ByteOrder result = fixture.getByteOrder();
assertNotNull(result);
}
/**
* Run the long getMajor() method test.
*/
@Test
public void testGetMajor() {
long result = fixture.getMajor();
assertEquals(1L, result);
}
/**
* Run the long getMinor() method test.
*/
@Test
public void testGetMinor() {
long result = fixture.getMinor();
assertEquals(1L, result);
}
/**
* Run the StructDeclaration getPacketHeader() method test.
*/
@Test
public void testGetPacketHeader() {
StructDeclaration result = fixture.getPacketHeader();
assertNotNull(result);
}
/**
* Run the String getPath() method test.
*/
@Test
public void testGetPath() {
String result = fixture.getPath();
assertNotNull(result);
}
/**
* Run the Stream getStream(Long) method test.
*/
@Test
public void testGetStream() {
Long id = 0L;
ICTFStream result = fixture.getStream(id);
assertNotNull(result);
}
/**
* Run the File getTraceDirectory() method test.
*/
@Test
public void testGetTraceDirectory() {
File result = fixture.getTraceDirectory();
assertNotNull(result);
}
/**
* Run the UUID getUUID() method test.
*/
@Test
public void testGetUUID() {
UUID result = fixture.getUUID();
assertNotNull(result);
}
/**
* Run the Definition lookupDefinition(String) method test.
*/
@Test
public void testLookupDefinition() {
String lookupPath = "trace.packet.header";
IDefinition result = fixture.lookupDefinition(lookupPath);
assertNotNull(result);
}
/**
* Run the boolean majorIsSet() method test.
*/
@Test
public void testMajorIsSet() {
boolean result = fixture.majorIsSet();
assertTrue(result);
}
/**
* Run the boolean minorIsSet() method test.
*/
@Test
public void testMinorIsSet() {
boolean result = fixture.minorIsSet();
assertTrue(result);
}
/**
* Run the boolean packetHeaderIsSet() method test with a valid header set.
*/
@Test
public void testPacketHeaderIsSet_valid() {
boolean result = fixture.packetHeaderIsSet();
assertTrue(result);
}
/**
* Run the boolean packetHeaderIsSet() method test, without having a valid
* header set.
*/
@Test
public void testPacketHeaderIsSet_invalid() {
try {
CTFTrace fixture2 = CtfTestTraceUtils.getTrace(testTrace);
fixture2.setMinor(1L);
fixture2.setUUID(UUID.randomUUID());
/*
* it's null here!
*/
fixture2.setPacketHeader((StructDeclaration) null);
fixture2.setMajor(1L);
fixture2.setByteOrder(ByteOrder.BIG_ENDIAN);
boolean result = fixture2.packetHeaderIsSet();
assertFalse(result);
} catch (CTFException e) {
fail();
}
}
/**
* Run the void setByteOrder(ByteOrder) method test.
*/
@Test
public void testSetByteOrder() {
ByteOrder byteOrder = ByteOrder.BIG_ENDIAN;
fixture.setByteOrder(byteOrder);
}
/**
* Run the void setMajor(long) method test.
*/
@Test
public void testSetMajor() {
long major = 1L;
fixture.setMajor(major);
}
/**
* Run the void setMinor(long) method test.
*/
@Test
public void testSetMinor() {
long minor = 1L;
fixture.setMinor(minor);
}
/**
* Run the void setPacketHeader(StructDeclaration) method test.
*/
@Test
public void testSetPacketHeader() {
StructDeclaration packetHeader = new StructDeclaration(1L);
fixture.setPacketHeader(packetHeader);
}
/**
* Run the void setUUID(UUID) method test.
*/
@Test
public void testSetUUID() {
UUID uuid = UUID.randomUUID();
fixture.setUUID(uuid);
}
/**
* Run the CTFClock getClock/setClock method test.
*/
@Test
public void testGetSetClock_1() {
String name = "clockyClock";
fixture.addClock(name, new CTFClock());
CTFClock result = fixture.getClock(name);
assertNotNull(result);
}
/**
* Run the CTFClock getClock/setClock method test.
*/
@Test
public void testGetSetClock_2() {
String name = "";
CTFClock ctfClock = new CTFClock();
ctfClock.addAttribute("name", "Bob");
ctfClock.addAttribute("pi", Double.valueOf(java.lang.Math.PI));
fixture.addClock(name, ctfClock);
CTFClock result = fixture.getClock(name);
assertNotNull(result);
assertTrue((Double) ctfClock.getProperty("pi") > 3.0);
assertTrue(ctfClock.getName().equals("Bob"));
}
/**
* Run the String lookupEnvironment(String) method test.
*/
@Test
public void testLookupEnvironment_1() {
String key = "";
String result = fixture.getEnvironment().get(key);
assertNull(result);
}
/**
* Run the String lookupEnvironment(String) method test.
*/
@Test
public void testLookupEnvironment_2() {
String key = "otherTest";
String result = fixture.getEnvironment().get(key);
assertNull(result);
}
/**
* Run the String lookupEnvironment(String) method test.
*/
@Test
public void testLookupEnvironment_3() {
String key = "test";
fixture.setEnvironment(ImmutableMap.<String, String> of(key, key));
String result = fixture.getEnvironment().get(key);
assertNotNull(result);
assertEquals(key, result);
}
/**
* Run the String lookupEnvironment(String) method test.
*/
@Test
public void testLookupEnvironment_4() {
String key = "test";
fixture.setEnvironment(ImmutableMap.<String, String> of(key, "bozo"));
String result = fixture.getEnvironment().get(key);
assertNotNull(result);
}
}