blob: 7d1cbb27f3354309fe62339caf347637652d9e2a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2019 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:
* Bernd Hufmann - Initial API and implementation
* Alexandre Montplaisir - Port to JUnit4
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.loader;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.GraphNode;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.Lifeline;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs.Criteria;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers.provider.ISDGraphNodeSupporter;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.loader.TmfSyncMessage;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Search Test Cases.
*
* @author Bernd Hufmann
*/
public class TmfUml2SDSyncLoaderFindTest {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
// Test case 002 expected values
final static private Uml2SDTestTimestamp TC_002_TIME_VALUE = new Uml2SDTestTimestamp(9788642104149L);
final static private String TC_002_MESSAGE_NAME = "GAME_REQUEST";
final static private int TC_002_PAGE_VALUE = 0;
final static private int TC_002_START_OCCURRANCE = 3;
final static private int TC_002_END_OCCURRANCE = TC_002_START_OCCURRANCE;
final static private String TC_002_START_LIFELINE = IUml2SDTestConstants.FIRST_PLAYER_NAME;
final static private String TC_002_END_LIFELINE = IUml2SDTestConstants.MASTER_PLAYER_NAME;
// Test case 003 expected values
final static private Uml2SDTestTimestamp TC_003_TIME_VALUE = new Uml2SDTestTimestamp(9788642113228L);
final static private String TC_003_MESSAGE_NAME = "GAME_REPLY";
final static private int TC_003_PAGE_VALUE = 0;
final static private int TC_003_START_OCCURRANCE = 4;
final static private int TC_003_END_OCCURRANCE = TC_003_START_OCCURRANCE;
final static private String TC_003_START_LIFELINE = IUml2SDTestConstants.MASTER_PLAYER_NAME;
final static private String TC_003_END_LIFELINE = IUml2SDTestConstants.FIRST_PLAYER_NAME;
// Test case 004 expected values
final static private Uml2SDTestTimestamp TC_004_TIME_VALUE = new Uml2SDTestTimestamp(9791893030834L);
final static private String TC_004_MESSAGE_NAME = "GAME_REQUEST";
final static private int TC_004_PAGE_VALUE = 4;
final static private int TC_004_START_OCCURRANCE = 19;
final static private int TC_004_END_OCCURRANCE = TC_004_START_OCCURRANCE;
final static private String TC_004_START_LIFELINE = IUml2SDTestConstants.SECOND_PLAYER_NAME;
final static private String TC_004_END_LIFELINE = IUml2SDTestConstants.MASTER_PLAYER_NAME;
// Test case 005 expected values
final static private int TC_005_PAGE_VALUE = 0;
final static private String TC_005_LIFELINE_NAME = IUml2SDTestConstants.FIRST_PLAYER_NAME;
// Test case 006 expected values
final static private int TC_006_PAGE_VALUE = 4;
final static private String TC_006_LIFELINE_NAME = IUml2SDTestConstants.SECOND_PLAYER_NAME;
// Fields used in tests
private static Uml2SDTestFacility fFacility;
private static Uml2SDSignalValidator fTmfComponent;
private static Criteria criteria;
private static List<GraphNode> selection;
private static TmfSyncMessage msg;
private static Lifeline lifeline;
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
/**
* Initialization
*/
@BeforeClass
public static void setUpClass() {
fFacility = Uml2SDTestFacility.getInstance();
fFacility.init();
fFacility.selectExperiment();
fTmfComponent = new Uml2SDSignalValidator();
}
/**
* Cleanup
*/
@AfterClass
public static void tearDownClass() {
fTmfComponent.dispose();
fFacility.disposeExperiment();
fFacility.dispose();
fFacility = null;
}
/**
* Verify the ISDGraphNodeSupporter implementation.
*
* Verified Methods: loader.isNodeSupported(), loader.getNodeName()
* Expected result: Correct values are returned, i.e. only lifelines and
* sync. messages are supported.
*/
@Test
public void verifyISDGraphNodeSupporter() {
fFacility.firstPage();
assertTrue("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.LIFELINE));
assertTrue("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.SYNCMESSAGE));
assertFalse("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.SYNCMESSAGERETURN));
assertFalse("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.ASYNCMESSAGE));
assertFalse("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.ASYNCMESSAGERETURN));
assertFalse("isNodeSupported", fFacility.getLoader().isNodeSupported(ISDGraphNodeSupporter.STOP));
assertEquals("getNodeName", "Lifeline", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.LIFELINE, null));
assertEquals("getNodeName", "Interaction", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.SYNCMESSAGE, null));
assertEquals("getNodeName", "", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.SYNCMESSAGERETURN, null));
assertEquals("getNodeName", "", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.ASYNCMESSAGE, null));
assertEquals("getNodeName", "", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.ASYNCMESSAGERETURN, null));
assertEquals("getNodeName", "", fFacility.getLoader().getNodeName(ISDGraphNodeSupporter.STOP, null));
fFacility.getLoader().cancel();
}
/**
* Verify 1st message find within page.
*
* Verified Methods: loader.find(), loader.moveToMessage()
* Expected result: Correct message is selected
*/
@Test
public void verifyFirstMessage() {
fTmfComponent.setWindowRangeSignalReceived(false);
fFacility.firstPage();
WaitUtils.waitUntil(validator -> validator.isWindowRangeSignalReceived(), fTmfComponent, "Window range signal not received");
criteria = new Criteria();
criteria.setSyncMessageSelected(true);
criteria.setExpression("GAME_.*");
fTmfComponent.setSignalError(false);
fTmfComponent.setSourceError(false);
fTmfComponent.setCurrentTimeError(false);
fTmfComponent.setSelectionRangeSignalReceived(false);
// set expected values
fTmfComponent.setSource(fFacility.getLoader());
fTmfComponent.setCurrentTime(TC_002_TIME_VALUE);
fFacility.getLoader().find(criteria);
WaitUtils.waitUntil(validator -> validator.isSelectionRangeSignalReceived(), fTmfComponent, "Selection range signal not received");
assertFalse("find", fTmfComponent.isSignalError());
assertFalse("find", fTmfComponent.isSourceError());
assertFalse("find", fTmfComponent.isCurrentTimeError());
assertEquals("find", TC_002_PAGE_VALUE, fFacility.getLoader().currentPage());
selection = fFacility.getSdView().getSDWidget().getSelection();
assertNotNull(selection);
assertEquals("find", 1, selection.size());
assertTrue(selection.get(0) instanceof TmfSyncMessage);
msg = (TmfSyncMessage) selection.get(0);
assertEquals("find", TC_002_MESSAGE_NAME, msg.getName());
assertEquals("find", 0, TC_002_TIME_VALUE.compareTo(msg.getStartTime()));
assertEquals("find", TC_002_START_OCCURRANCE, msg.getStartOccurrence());
assertEquals("find", TC_002_END_OCCURRANCE, msg.getEndOccurrence());
assertEquals("find", TC_002_START_LIFELINE, msg.getStartLifeline().getName());
assertEquals("find", TC_002_END_LIFELINE, msg.getEndLifeline().getName());
/**
* Verify 2nd message find within page.
*
* Verified Methods: loader.find(), loader.moveToMessage()
* Expected result: Correct message is selected
*/
fTmfComponent.setSignalError(false);
fTmfComponent.setSourceError(false);
fTmfComponent.setCurrentTimeError(false);
fTmfComponent.setSelectionRangeSignalReceived(false);
// set expected values
fTmfComponent.setSource(fFacility.getLoader());
fTmfComponent.setCurrentTime(TC_003_TIME_VALUE);
fFacility.getLoader().find(criteria);
WaitUtils.waitUntil(validator -> validator.isSelectionRangeSignalReceived(), fTmfComponent, "Selection range signal not received");
assertFalse("find", fTmfComponent.isSignalError());
assertFalse("find", fTmfComponent.isSourceError());
assertFalse("find", fTmfComponent.isCurrentTimeError());
assertEquals("find", TC_003_PAGE_VALUE, fFacility.getLoader().currentPage());
selection = fFacility.getSdView().getSDWidget().getSelection();
assertNotNull(selection);
assertEquals("find", 1, selection.size());
assertTrue(selection.get(0) instanceof TmfSyncMessage);
msg = (TmfSyncMessage) selection.get(0);
assertEquals("find", TC_003_MESSAGE_NAME, msg.getName());
assertEquals("find", 0, TC_003_TIME_VALUE.compareTo(msg.getStartTime()));
assertEquals("find", TC_003_START_OCCURRANCE, msg.getStartOccurrence());
assertEquals("find", TC_003_END_OCCURRANCE, msg.getEndOccurrence());
assertEquals("find", TC_003_START_LIFELINE, msg.getStartLifeline().getName());
assertEquals("find", TC_003_END_LIFELINE, msg.getEndLifeline().getName());
/**
* Verify 1st message across page.
*
* Verified Methods: loader.find(), loader.moveToPage(), loader.moveToMessage()
* Expected result: Correct message is selected
*/
fTmfComponent.setSignalError(false);
fTmfComponent.setSourceError(false);
fTmfComponent.setCurrentTimeError(false);
fTmfComponent.setSelectionRangeSignalReceived(false);
// set expected values
fTmfComponent.setSource(fFacility.getLoader());
fTmfComponent.setCurrentTime(TC_004_TIME_VALUE);
fFacility.getLoader().find(criteria);
fFacility.waitForJobs(); // find across pages uses a job
// to make sure pageRequest has been started before calling waitforCompletion()
fFacility.delay(IUml2SDTestConstants.GUI_REFESH_DELAY);
fFacility.getLoader().waitForCompletion();
WaitUtils.waitUntil(validator -> validator.isSelectionRangeSignalReceived(), fTmfComponent, "Selection range signal not received");
assertFalse("find", fTmfComponent.isSignalError());
assertFalse("find", fTmfComponent.isSourceError());
assertFalse("find", fTmfComponent.isCurrentTimeError());
assertEquals("find", TC_004_PAGE_VALUE, fFacility.getLoader().currentPage());
selection = fFacility.getSdView().getSDWidget().getSelection();
assertNotNull(selection);
assertEquals("find", 1, selection.size());
assertTrue(selection.get(0) instanceof TmfSyncMessage);
msg = (TmfSyncMessage) selection.get(0);
assertEquals("find", TC_004_MESSAGE_NAME, msg.getName());
assertEquals("find", 0, TC_004_TIME_VALUE.compareTo(msg.getStartTime()));
assertEquals("find", TC_004_START_OCCURRANCE, msg.getStartOccurrence());
assertEquals("find", TC_004_END_OCCURRANCE, msg.getEndOccurrence());
assertEquals("find", TC_004_START_LIFELINE, msg.getStartLifeline().getName());
assertEquals("find", TC_004_END_LIFELINE, msg.getEndLifeline().getName());
// cancel find and go back to first page
fFacility.getLoader().cancel();
}
/**
* Verify find of lifeline within page.
*
* Verified Methods: loader.find(), loader.moveToPage(), loader.moveToMessage()
* Expected result: Correct message is selected
*/
@Test
public void verifyFind() {
fFacility.firstPage();
criteria = new Criteria();
criteria.setLifeLineSelected(true);
criteria.setExpression(IUml2SDTestConstants.FIRST_PLAYER_NAME);
fFacility.getLoader().find(criteria);
// Wait for the selection to finish - needed due to new platform behavior in Juno
fFacility.delay(IUml2SDTestConstants.GUI_REFESH_DELAY);
assertEquals("find", TC_005_PAGE_VALUE, fFacility.getLoader().currentPage());
selection = fFacility.getSdView().getSDWidget().getSelection();
assertNotNull(selection);
assertEquals("find", 1, selection.size());
assertTrue(selection.get(0) instanceof Lifeline);
lifeline = (Lifeline) selection.get(0);
assertEquals("find", TC_005_LIFELINE_NAME, lifeline.getName());
/**
* Verify lifeline across page.
*
* Verified Methods: loader.find(), loader.moveToPage(), loader.moveToMessage()
* Expected result: Correct message is selected
*/
criteria = new Criteria();
criteria.setLifeLineSelected(true);
criteria.setExpression(IUml2SDTestConstants.SECOND_PLAYER_NAME);
fFacility.getLoader().find(criteria);
fFacility.waitForJobs(); // find across pages uses a job
// to make sure pageRequest has been started before calling waitforCompletion()
fFacility.delay(IUml2SDTestConstants.GUI_REFESH_DELAY);
fFacility.getLoader().waitForCompletion();
fFacility.delay(IUml2SDTestConstants.GUI_REFESH_DELAY);
assertEquals("find", TC_006_PAGE_VALUE, fFacility.getLoader().currentPage());
selection = fFacility.getSdView().getSDWidget().getSelection();
assertNotNull(selection);
assertEquals("find", 1, selection.size());
assertTrue(selection.get(0) instanceof Lifeline);
lifeline = (Lifeline) selection.get(0);
assertEquals("find", TC_006_LIFELINE_NAME, lifeline.getName());
// cancel find and go back to first page
fFacility.getLoader().cancel();
}
/**
* Verify cancel ongoing search job.
*
* Verified Methods: loader.find(), loader.find()
* Expected result: Cancelled find
*/
@Test
public void verifyCancelSearch() {
fFacility.firstPage();
criteria = new Criteria();
criteria.setLifeLineSelected(true);
criteria.setExpression(IUml2SDTestConstants.SECOND_PLAYER_NAME);
fFacility.getLoader().find(criteria);
fFacility.delay(200); // to make sure job was started
fFacility.getLoader().cancel();
assertEquals("find", 0, fFacility.getLoader().currentPage()); // we are still at the first page
// cancel find and go back to first page
fFacility.getLoader().cancel();
fFacility.firstPage();
}
}