feature: Updated environment to run methods as test cases Change-Id: Iea4017aad631ea2d0515b9ba5e4ce3f4473f4df0
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/environment/TestEnvironment.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/environment/TestEnvironment.java index 024531a..b78ef39 100644 --- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/environment/TestEnvironment.java +++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/environment/TestEnvironment.java
@@ -109,7 +109,7 @@ this.associatedObjectListeners = new HashMap<>(); this.associatedObjects = new HashMap<>(100); this.batchMode = OteProperties.isOseeOteInBatchModeEnabled(); - + } public void init(IServiceConnector connector) { @@ -592,25 +592,25 @@ public void prompt() { getRunManager().getCurrentScript().prompt(); } - + public void prompt(String message) { getRunManager().getCurrentScript().prompt(new TestPrompt(message, PromptResponseType.NONE)); } - + public void promptPassFail(String message) { getRunManager().getCurrentScript().promptPassFail(message); } - + public void promptPause(String message) { getRunManager().getCurrentScript().promptPause(message); } - + public void promptStep(String message) { getRunManager().getCurrentScript().prompt(new TestPrompt(message, PromptResponseType.SCRIPT_STEP)); } - + public String promptInput(String message) { return getRunManager().getCurrentScript().prompt(new TestPrompt(message, PromptResponseType.USER_INPUT)); } - + }
diff --git a/org.eclipse.ote.simple.test.environment/src/org/eclipse/ote/simple/test/environment/SimpleOteApi.java b/org.eclipse.ote.simple.test.environment/src/org/eclipse/ote/simple/test/environment/SimpleOteApi.java new file mode 100644 index 0000000..f6d501b --- /dev/null +++ b/org.eclipse.ote.simple.test.environment/src/org/eclipse/ote/simple/test/environment/SimpleOteApi.java
@@ -0,0 +1,35 @@ +/********************************************************************* + * Copyright (c) 2022 Boeing + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Boeing - initial API and implementation + **********************************************************************/ +package org.eclipse.ote.simple.test.environment; + +import org.eclipse.osee.framework.jdk.core.type.NamedId; +import org.eclipse.osee.ote.core.environment.OteApi; +import org.eclipse.osee.ote.core.environment.TestEnvironment; + +/** + * @author Nydia Delgado + */ +public class SimpleOteApi implements OteApi { + + private TestEnvironment testEnv; + + @Override + public void logTestPoint(boolean isPassed, String testPointName, String expected, String actual) { + testEnv.getTestScript().logTestPoint(isPassed, testPointName, expected, actual); + } + + @Override + public void logTestPoint(boolean isPassed, String testPointName, NamedId expected, NamedId actual) { + logTestPoint(isPassed, testPointName, expected.getName(), actual.getName()); + } +}
diff --git a/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF b/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF index c39723f..da000a1 100644 --- a/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF +++ b/org.eclipse.ote.simple.test.script/META-INF/MANIFEST.MF
@@ -3,13 +3,16 @@ Bundle-Name: OTE Simple Test Script Bundle-SymbolicName: org.eclipse.ote.simple.test.script Bundle-Version: 0.26.3.qualifier -Require-Bundle: org.eclipse.core.runtime +Require-Bundle: org.eclipse.core.runtime, + org.junit Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.ote.simple.test.script Import-Package: org.eclipse.osee.framework.jdk.core.persistence, + org.eclipse.osee.framework.jdk.core.type, org.eclipse.osee.framework.logging, org.eclipse.osee.ote.core, + org.eclipse.osee.ote.core.annotations, org.eclipse.osee.ote.core.enums, org.eclipse.osee.ote.core.environment, org.eclipse.osee.ote.core.environment.interfaces,
diff --git a/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java index 7e3a0ff..3e37902 100644 --- a/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java +++ b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScript.java
@@ -19,13 +19,11 @@ import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; import java.util.logging.Level; + import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.ote.core.TestCase; import org.eclipse.osee.ote.core.TestException; -import org.eclipse.osee.ote.core.TestScript; +import org.eclipse.osee.ote.core.annotations.Order; import org.eclipse.osee.ote.core.environment.EnvironmentTask; -import org.eclipse.osee.ote.core.environment.interfaces.ITestEnvironmentAccessor; -import org.eclipse.osee.ote.core.environment.interfaces.ITestLogger; import org.eclipse.osee.ote.core.environment.jini.ITestEnvironmentCommandCallback; import org.eclipse.osee.ote.message.MessageSystemTestEnvironment; import org.eclipse.ote.io.mux.MuxHeader; @@ -34,6 +32,8 @@ import org.eclipse.ote.simple.io.message.HELLO_WORLD; import org.eclipse.ote.simple.io.message.SIMPLE_MUX_R_MSG; import org.eclipse.ote.simple.io.message.lookup.SimpleMuxReceiverHeader; +import org.eclipse.ote.simple.test.environment.SimpleOteApi; +import org.junit.Test; /** * @author Andy Jury @@ -46,91 +46,52 @@ super(testEnvironment, callback); this.writer = getMessageWriter(HELLO_WORLD.class); - - new TestCase1(this); - new TestCase2(this); - new TestCaseSend(this); + setupTestScript((SimpleOteApi) testEnvironment.getOteApi()); } - private class LocalSetupTestCase extends TestCase { - - protected LocalSetupTestCase(TestScript parent) { - - super(parent, false, false); - } - - @Override - public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) { - // Intentionally empty block - } + protected void setupTestScript(SimpleOteApi oteApi) { + // Intentionally empty block } - @Override - protected TestCase getSetupTestCase() { - - return new LocalSetupTestCase(this); + @Test + @Order(1) + public void testCase1(SimpleOteApi oteApi) { + prompt("In TestCase1"); + promptPause("In TestCase1"); + promptPassFail("Pass/Fail?"); } - public class TestCase1 extends TestCase { - - public TestCase1(TestScript parent) { - - super(parent); - } - - @Override - public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) { - prompt("In TestCase1"); - promptPause("In TestCase1"); - promptPassFail("Pass/Fail?"); - } + @Test + @Order(2) + public void testCase2(SimpleOteApi oteApi) { + // This test case will fail when running in an environment with Mux + // unless you uncomment the following line to force the message mem type + writer.setMemSource(SimpleDataType.SIMPLE); + prompt("In the LocalSetupTestCase"); + writer.PRINT_ME.setNoLog("TEST1"); + testWait(1000); + writer.PRINT_ME.setNoLog("TEST2"); + testWait(1000); + writer.PRINT_ME.setNoLog("TEST3"); + testWait(1000); + writer.PRINT_ME.setNoLog("TEST4"); + writer.ONLY_IN_SIMPLE.setNoLog(64); + writer.send(); + testWait(1000); + writer.unschedule(); } - public class TestCase2 extends TestCase { + @Test + @Order(3) + public void testCaseSend(SimpleOteApi oteApi) { + try { + MuxChannelSender sender = new MuxChannelSender(); + environment.addTask(sender); - public TestCase2(TestScript parent) { - - super(parent); - } - - @Override - public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) { - // This test case will fail when running in an environment with Mux - // unless you uncomment the following line to force the message mem type - writer.setMemSource(SimpleDataType.SIMPLE); - prompt("In the LocalSetupTestCase"); - writer.PRINT_ME.set(this, "TEST1"); - testWait(1000); - writer.PRINT_ME.setNoLog("TEST2"); - testWait(1000); - writer.PRINT_ME.setNoLog("TEST3"); - testWait(1000); - writer.PRINT_ME.setNoLog("TEST4"); - writer.ONLY_IN_SIMPLE.set(this, 64); - writer.send(); - testWait(1000); - writer.unschedule(); - } - } - - public class TestCaseSend extends TestCase { - - public TestCaseSend(TestScript parent) { - - super(parent); - } - - @Override - public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) { - try { - MuxChannelSender sender = new MuxChannelSender(); - environment.addTask(sender); - - testWait(10000); - sender.disable(); - } catch (IOException ex) { - logTestPoint(false, "Error starting packet sender", "N/A", ex.getMessage()); - } + testWait(10000); + sender.disable(); + } catch (IOException ex) { + logTestPoint(false, "Error starting packet sender", "N/A", ex.getMessage()); } }
diff --git a/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScriptType.java b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScriptType.java index 8afc2cd..b861d0e 100644 --- a/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScriptType.java +++ b/org.eclipse.ote.simple.test.script/src/org/eclipse/ote/simple/test/script/SimpleTestScriptType.java
@@ -13,31 +13,44 @@ package org.eclipse.ote.simple.test.script; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.ote.core.TestCase; import org.eclipse.osee.ote.core.TestScript; import org.eclipse.osee.ote.core.enums.ScriptTypeEnum; +import org.eclipse.osee.ote.core.environment.OteApi; +import org.eclipse.osee.ote.core.environment.interfaces.ITestEnvironmentAccessor; +import org.eclipse.osee.ote.core.environment.interfaces.ITestLogger; import org.eclipse.osee.ote.core.environment.jini.ITestEnvironmentCommandCallback; import org.eclipse.osee.ote.message.Message; import org.eclipse.osee.ote.message.MessageSystemTestEnvironment; import org.eclipse.osee.ote.message.interfaces.IMessageRequestor; +import org.eclipse.ote.simple.test.environment.SimpleOteApi; /** * @author Michael P. Masterson */ public class SimpleTestScriptType extends TestScript { - + protected IMessageRequestor<Message> messageRequestor; + protected OteApi oteApi; @SuppressWarnings("unchecked") public SimpleTestScriptType(MessageSystemTestEnvironment testEnvironment, ITestEnvironmentCommandCallback callback) { super(testEnvironment, null, ScriptTypeEnum.FUNCTIONAL_TEST, true); messageRequestor = testEnvironment.getMsgManager().createMessageRequestor(getClass().getName()); + this.oteApi = new SimpleOteApi(); + testEnvironment.setOteApi(oteApi); } - + protected <CLASSTYPE extends Message> CLASSTYPE getMessageWriter(Class<CLASSTYPE> type) { return messageRequestor.getMessageWriter(type); } - + /** * Any time a requestor is created, it should be disposed of when done */ @@ -46,5 +59,33 @@ messageRequestor.dispose(); super.dispose(); } - -} \ No newline at end of file + + @Override + protected void addMethodAsTestCase(Method method) { + Class<?>[] parameterTypes = method.getParameterTypes(); + if (parameterTypes.length != 1) { + throw new OseeArgumentException("Wrong method signature for test case method %s", method.getName()); + } + if (parameterTypes[0].isAssignableFrom(this.oteApi.getClass()) || parameterTypes[0].equals(OteApi.class)) { + addTestCase(new TestCase(this, false, false) { + + @Override + public void doTestCase(ITestEnvironmentAccessor environment, ITestLogger logger) + throws InterruptedException { + try { + method.invoke(getTestScript(), oteApi); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { + Throwable realThrowable = ex; + while (realThrowable.getCause() != null) { + realThrowable = realThrowable.getCause(); + } + ex.printStackTrace(System.err); + OseeCoreException.wrapAndThrow(realThrowable); + } + } + }); + } else { + System.out.println("NOT RUNNING TEST CASE BASED ON CONFIGURATION NOT MATCHING - " + method.getName()); + } + } +}