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());
+ }
+ }
+}