/******************************************************************************* * Copyright (c) 2013, 2015 Ericsson * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alexandre Montplaisir - Initial API and implementation * Bernd Hufmann - Use state system analysis module instead of factory ******************************************************************************/ package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel.statesystem; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.tracecompass.analysis.os.linux.core.kernel.KernelAnalysisModule; import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException; import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager; import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils; import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; /** * State system tests using a partial history. * * @author Alexandre Montplaisir */ @Ignore public class PartialStateSystemTest extends StateSystemTest { private static final @NonNull String TEST_FILE_NAME = "test-partial"; private static CtfTmfTrace trace; private static File stateFile; private static TestLttngKernelAnalysisModule module; /** * Test class setup */ @BeforeClass public static void initialize() { trace = CtfTmfTestTraceUtils.getTrace(testTrace); stateFile = new File(TmfTraceManager.getSupplementaryFileDir(trace) + TEST_FILE_NAME); if (stateFile.exists()) { stateFile.delete(); } module = new TestLttngKernelAnalysisModule(TEST_FILE_NAME); try { assertTrue(module.setTrace(trace)); } catch (TmfAnalysisException e) { fail(); } module.schedule(); assertTrue(module.waitForCompletion()); fixture = module.getStateSystem(); } /** * Class clean-up */ @AfterClass public static void cleanup() { if (module != null) { module.dispose(); } if (stateFile != null) { stateFile.delete(); } if (fixture != null) { fixture.dispose(); } if (trace != null) { trace.dispose(); } module = null; fixture = null; trace = null; } /** * Partial histories cannot get the intervals' end times. The fake value that * is returned is equal to the query's timestamp. So override this here * so that {@link #testFullQueryThorough} keeps working. */ @Override protected long getEndTimes(int idx) { return interestingTimestamp1; } // ------------------------------------------------------------------------ // Skip tests using single-queries (unsupported in partial history) // ------------------------------------------------------------------------ @Override @Test(expected = UnsupportedOperationException.class) public void testSingleQuery1() { super.testSingleQuery1(); } @Override @Test(expected = UnsupportedOperationException.class) public void testRangeQuery1() { super.testRangeQuery1(); } @Override @Test(expected = UnsupportedOperationException.class) public void testRangeQuery2() { super.testRangeQuery2(); } @Override @Test(expected = UnsupportedOperationException.class) public void testRangeQuery3() { super.testRangeQuery3(); } @Override @Test(expected = UnsupportedOperationException.class) public void testSingleQueryInvalidTime1() throws TimeRangeException { super.testSingleQueryInvalidTime1(); } @Override @Test(expected = UnsupportedOperationException.class) public void testSingleQueryInvalidTime2() throws TimeRangeException { super.testSingleQueryInvalidTime2(); } @Override @Test(expected = UnsupportedOperationException.class) public void testRangeQueryInvalidTime1() throws TimeRangeException { super.testRangeQueryInvalidTime1(); } @Override @Test(expected = UnsupportedOperationException.class) public void testRangeQueryInvalidTime2() throws TimeRangeException { super.testRangeQueryInvalidTime2(); } @NonNullByDefault private static class TestLttngKernelAnalysisModule extends KernelAnalysisModule { private final String htFileName; /** * Constructor adding the views to the analysis * @param htFileName * The History File Name */ public TestLttngKernelAnalysisModule(String htFileName) { super(); this.htFileName = htFileName; } @Override public boolean setTrace(@Nullable ITmfTrace trace) throws TmfAnalysisException { if (!(trace instanceof CtfTmfTrace)) { return false; } return super.setTrace(trace); } @Override protected StateSystemBackendType getBackendType() { return StateSystemBackendType.PARTIAL; } @Override protected String getSsFileName() { return htFileName; } } }