blob: ac81e2e6ba96dd21f007fe42f8862cd6bc71046d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2016 Xored Software Inc and others.
* 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:
* Xored Software Inc - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.rcptt.ecl.core.tests;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.rcptt.ecl.core.Command;
import org.eclipse.rcptt.ecl.core.util.Statuses;
import org.eclipse.rcptt.ecl.parser.EclCoreParser;
import org.eclipse.rcptt.ecl.runtime.EclRuntime;
import org.eclipse.rcptt.ecl.runtime.IProcess;
import org.eclipse.rcptt.ecl.runtime.ISession;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class StatusesTest {
private static final NullProgressMonitor MONITOR = new NullProgressMonitor();
private ISession session = null;
@Before
public void init() {
Assert.assertNull(session);
session = EclRuntime.createSession();
}
@After
public void close() throws CoreException {
session.close();
session = null;
}
private static IStatus status(int severity, int code) {
return new Status(severity, "plugin", code, "", null);
}
private static MultiStatus multiStatus(int code) {
return new MultiStatus("plugin", code, "OK", null);
}
@Test
public void testHasCode() {
MultiStatus status = multiStatus(0);
status.add(status(0, 0));
Assert.assertFalse(Statuses.hasCode(status, 1));
status = multiStatus(0);
status.add(status(0, 1));
Assert.assertTrue(Statuses.hasCode(status, 1));
status = multiStatus(1);
Assert.assertTrue(Statuses.hasCode(status, 1));
}
private Command parse(String input) throws CoreException {
return EclCoreParser.newCommand(input);
}
Command sleepCommand(long milliseconds) throws CoreException {
return parse("invoke-static -pluginId \"org.eclipse.core.runtime\" -className java.lang.Thread -methodName sleep -args "
+ milliseconds);
}
@Test
public void testNoTimeout() throws InterruptedException, CoreException {
IProcess process = session.execute(sleepCommand(100));
IStatus result = process.waitFor(200, MONITOR);
Assert.assertTrue(result.getMessage(), result.isOK());
Assert.assertFalse(Statuses.hasCode(result, IProcess.TIMEOUT_CODE));
}
@Test
public void testTimeout() throws InterruptedException, CoreException {
IProcess process = session.execute(sleepCommand(100));
IStatus result = process.waitFor(50, MONITOR);
Assert.assertFalse(result.isOK());
Assert.assertTrue(result.getMessage(), Statuses.hasCode(result, IProcess.TIMEOUT_CODE));
}
}