diff --git a/swtbot_test/src/common/Constants.java b/swtbot_test/src/common/Constants.java index 97bdf85..5431ffb 100644 --- a/swtbot_test/src/common/Constants.java +++ b/swtbot_test/src/common/Constants.java @@ -10,4 +10,5 @@ public class Constants { // XML path public static final String PLATFORM_XML_FILE = "xml/platformdata.xml"; public static final String RTOS_PG_XML_FILE = "xml/rtospg.xml"; + public static final String TC_XML_FILE = "xml/testcase.xml"; } diff --git a/swtbot_test/src/model/Action.java b/swtbot_test/src/model/Action.java new file mode 100644 index 0000000..291b63b --- /dev/null +++ b/swtbot_test/src/model/Action.java @@ -0,0 +1,32 @@ +package model; + +import org.w3c.dom.Element; + +import common.LogUtil; + +public class Action { + private String id; + private int order; + + public Action(Element element) { + setAttributes(element); + } + + private void setAttributes(Element element) { + id = element.getAttribute("id"); + try { + order = Integer.parseInt(element.getAttribute("order")); + } catch (Exception e) { + LogUtil.logException(e); + order = 0; + } + } + + public String getActionId() { + return id; + } + + public int getActionOrder() { + return order; + } +} diff --git a/swtbot_test/src/model/Application.java b/swtbot_test/src/model/Application.java index 756b3b8..9860db4 100644 --- a/swtbot_test/src/model/Application.java +++ b/swtbot_test/src/model/Application.java @@ -12,9 +12,11 @@ public class Application { private String appId; private int appOrder; + private boolean skipApp = false; private Collection languages = new ArrayList<>(); private Collection configuration = new ArrayList<>(); private Collection targets = new ArrayList<>(); + private Collection linkerFiles = new ArrayList<>(); public Application(Element element) { parseAttribute(element); @@ -30,6 +32,8 @@ public Application(Element element) { addTarget(new Target(childElement)); } else if ("language".equalsIgnoreCase(name)) { addLanguage(new Language(childElement)); + } else if ("rxclinkerfile".equalsIgnoreCase(name)) { + addLinkerFile(new RXCLinkerFile(childElement)); } } } @@ -43,8 +47,13 @@ public int getApplicationOrder() { return appOrder; } + public boolean isSkipApp() { + return skipApp; + } + private void parseAttribute(Element element) { appId = element.getAttribute("id"); + skipApp = Boolean.parseBoolean(element.getAttribute("skipapp")); try { appOrder = Integer.parseInt(element.getAttribute("order")); } catch (Exception e) { @@ -77,4 +86,11 @@ private void addLanguage(Language item) { languages.add(item); } + private void addLinkerFile(RXCLinkerFile file) { + linkerFiles.add(file); + } + + public Collection getLinkerFiles() { + return linkerFiles; + } } diff --git a/swtbot_test/src/model/GroupSetting.java b/swtbot_test/src/model/GroupSetting.java new file mode 100644 index 0000000..c452a74 --- /dev/null +++ b/swtbot_test/src/model/GroupSetting.java @@ -0,0 +1,108 @@ +package model; + +import java.util.ArrayList; +import java.util.Collection; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class GroupSetting { + private String id; + private Language language; + private Collection toolchains = new ArrayList<>(); + private String rtosType; + private String rtosVersion; + private Collection boards = new ArrayList<>(); + private Collection configs = new ArrayList<>(); + + public GroupSetting(Element element) { + parseAttribute(element); + NodeList children = element.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node childNode = children.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + Element childElement = (Element) childNode; + String name = childElement.getTagName(); + switch (name) { + case "language": + setLanguage(new Language(childElement)); + break; + case "toolchain": + addToolchain(new Toolchain(childElement)); + break; + case "RTOSType": + setRTOSType(childElement.getTextContent()); + break; + case "RTOSVersion": + setRTOSVersion(childElement.getTextContent()); + break; + case "board": + addBoard(new Board(childElement)); + break; + case "config": + addConfig(new Config(childElement)); + break; + default: + break; + } + } + } + } + + private void parseAttribute(Element element) { + id = element.getAttribute("id"); + } + + public String getSettingId() { + return id; + } + + private void setLanguage(Language language) { + this.language = language; + } + + public Language getLanguage() { + return language; + } + + private void addToolchain(Toolchain toolchain) { + toolchains.add(toolchain); + } + + public Collection getToolchains() { + return toolchains; + } + + private void setRTOSType(String rtosType) { + this.rtosType = rtosType; + } + + public String getRTOSType() { + return rtosType; + } + + private void setRTOSVersion(String version) { + rtosVersion = version; + } + + public String getRTOSVersion() { + return rtosVersion; + } + + private void addBoard(Board board) { + boards.add(board); + } + + public Collection getBoards() { + return boards; + } + + private void addConfig(Config config) { + configs.add(config); + } + + public Collection getConfigs() { + return configs; + } +} diff --git a/swtbot_test/src/model/Project.java b/swtbot_test/src/model/Project.java new file mode 100644 index 0000000..7d65a48 --- /dev/null +++ b/swtbot_test/src/model/Project.java @@ -0,0 +1,71 @@ +package model; + +import java.util.ArrayList; +import java.util.Collection; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class Project { + private String id; + private String projectName; + private Collection groupSettings = new ArrayList<>(); + private Collection apps = new ArrayList<>(); + + public Project(Element element) { + parseAttribute(element); + NodeList children = element.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node childNode = children.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + Element childElement = (Element) childNode; + String name = childElement.getTagName(); + if ("projectname".equalsIgnoreCase(name)) { + setProjectName(childElement.getTextContent()); + } else if ("group".equalsIgnoreCase(name)) { + addGroupSetting(new GroupSetting(childElement)); + } else if ("application".equalsIgnoreCase(name)) { + addApplication(new Application(childElement)); + } + } + } + } + + private void parseAttribute(Element element) { + id = element.getAttribute("id"); + } + + public String getProjectId() { + return id; + } + + private void setProjectName(String name) { + projectName = name; + } + + public String getProjectName() { + return projectName; + } + + private void addGroupSetting(GroupSetting setting) { + groupSettings.add(setting); + } + + public GroupSetting getGroupSettingById(String id) { + for (GroupSetting setting : groupSettings) { + if (setting.getSettingId().equalsIgnoreCase(id)) { + return setting; + } + } + return null; + } + + private void addApplication(Application app) { + apps.add(app); + } + + public Collection getApps() { + return apps; + } +} diff --git a/swtbot_test/src/model/ProjectModel.java b/swtbot_test/src/model/ProjectModel.java index db7ce61..0803d98 100644 --- a/swtbot_test/src/model/ProjectModel.java +++ b/swtbot_test/src/model/ProjectModel.java @@ -7,7 +7,7 @@ import parameters.ProjectParameters.BuildType; public class ProjectModel { - private String language; + private String language = "C"; // default C project private String familyName; private String projectName; private String toolchain; @@ -19,6 +19,7 @@ public class ProjectModel { private int applicationOrder; private boolean skipApplication = true; private Map buildType = new HashMap<>(); + private String rxcLinkerFile; public ProjectModel() { // do nothing @@ -168,4 +169,11 @@ public void setLanguage(String language) { this.language = language; } + public void setRXCLinkerFile(String file) { + rxcLinkerFile = file; + } + + public String getRXCLinkerFile() { + return rxcLinkerFile; + } } diff --git a/swtbot_test/src/model/RXCLinkerFile.java b/swtbot_test/src/model/RXCLinkerFile.java new file mode 100644 index 0000000..333c0d5 --- /dev/null +++ b/swtbot_test/src/model/RXCLinkerFile.java @@ -0,0 +1,33 @@ +package model; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class RXCLinkerFile extends AbstractNode { + private String path; + + public RXCLinkerFile(Element element) { + NodeList children = element.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node childNode = children.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + Element childElement = (Element) childNode; + String name = childElement.getTagName(); + if ("path".equalsIgnoreCase(name)) { + setLinkerPath(childElement.getTextContent()); + } else { + parseFilter(name, childElement); + } + } + } + } + + private void setLinkerPath(String path) { + this.path = path; + } + + public String getLinkerPath() { + return path; + } +} diff --git a/swtbot_test/src/model/TC.java b/swtbot_test/src/model/TC.java new file mode 100644 index 0000000..e9ba81a --- /dev/null +++ b/swtbot_test/src/model/TC.java @@ -0,0 +1,55 @@ +package model; + +import java.util.ArrayList; +import java.util.Collection; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +public class TC { + private String id; + private Collection projects = new ArrayList<>(); + private Collection actions = new ArrayList<>(); + + public TC(Element element) { + parseAttribute(element); + NodeList children = element.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node childNode = children.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + Element childElement = (Element) childNode; + String name = childElement.getTagName(); + if ("project".equalsIgnoreCase(name)) { + addProject(new Project(childElement)); + } else if ("action".equalsIgnoreCase(name)) { + addAction(new Action(childElement)); + } + } + } + } + + private void parseAttribute(Element element) { + id = element.getAttribute("id"); + } + + public String getTCId() { + return id; + } + + private void addProject(Project project) { + projects.add(project); + } + + public Collection getProjects() { + return projects; + } + + private void addAction(Action action) { + actions.add(action); + } + + public Collection getActions() { + return actions; + } +} diff --git a/swtbot_test/src/model/TCManager.java b/swtbot_test/src/model/TCManager.java new file mode 100644 index 0000000..b4f83ef --- /dev/null +++ b/swtbot_test/src/model/TCManager.java @@ -0,0 +1,78 @@ +package model; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +import common.LogUtil; + +public class TCManager { + private static Collection tces = new ArrayList<>(); + + private TCManager() { + // do nothing + } + + public static void loadRTOSModel(File xmlFile) { + if (xmlFile == null || !xmlFile.exists()) { + return; + } + try (Reader reader = new InputStreamReader(new FileInputStream(xmlFile), StandardCharsets.UTF_8)) { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); + DocumentBuilder builder = factory.newDocumentBuilder(); + InputSource inputSource = new InputSource(reader); + Document doc = builder.parse(inputSource); + Element rootElement = doc.getDocumentElement(); + parseXML(rootElement); + } catch (Exception e) { + LogUtil.logException(e); + } + } + + private static void parseXML(Element rootElement) { + if (!"testdata".equals(rootElement.getTagName())) { + return; + } + tces.clear(); + NodeList children = rootElement.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node childNode = children.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + Element childElement = (Element) childNode; + String name = childElement.getTagName(); + if ("TC".equalsIgnoreCase(name)) { + tces.add(new TC(childElement)); + } + } + } + } + + public static Collection getAllTCes() { + return tces; + } + + public static TC getTCById(String id) { + for (TC tc : tces) { + if (id.equalsIgnoreCase(tc.getTCId())) { + return tc; + } + } + return null; + } +} diff --git a/swtbot_test/src/model/Toolchain.java b/swtbot_test/src/model/Toolchain.java index 784f3e2..a3e80fb 100644 --- a/swtbot_test/src/model/Toolchain.java +++ b/swtbot_test/src/model/Toolchain.java @@ -3,7 +3,7 @@ import org.w3c.dom.Element; public class Toolchain { - private String version; + private String version = ""; private String name; public Toolchain(Element element) { diff --git a/swtbot_test/src/platform/BoardInfo.java b/swtbot_test/src/platform/BoardInfo.java index 23c78f5..20fbd29 100644 --- a/swtbot_test/src/platform/BoardInfo.java +++ b/swtbot_test/src/platform/BoardInfo.java @@ -8,6 +8,7 @@ import org.w3c.dom.NodeList; public class BoardInfo { + private String groupId = ""; private static final String CUSTOM_ATT = "custom"; private boolean isCustom = false; private String boardName; @@ -30,6 +31,7 @@ public BoardInfo(Element element) { } private void parseAttribute(Element element) { + setGroupId(element.getAttribute("group")); setCustomBoard(Boolean.parseBoolean(element.getAttribute(CUSTOM_ATT))); } @@ -45,6 +47,17 @@ public Collection getGroupInfoList() { return groupInfo; } + public GroupInfo getGroupInfoById(String board) { + if (!groupInfo.isEmpty()) { + for (GroupInfo info : groupInfo) { + if (info.getDeviceInfoList().contains(board)) { + return info; + } + } + } + return null; + } + public Collection getDeviceList() { Collection result = new ArrayList<>(); if (!groupInfo.isEmpty()) { @@ -62,4 +75,12 @@ private void setCustomBoard(boolean isCustom) { public boolean isCustomBoard() { return isCustom; } + + private void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getGroupId() { + return groupId; + } } diff --git a/swtbot_test/src/platform/FamilyInfo.java b/swtbot_test/src/platform/FamilyInfo.java index 0ba5032..7af5b7d 100644 --- a/swtbot_test/src/platform/FamilyInfo.java +++ b/swtbot_test/src/platform/FamilyInfo.java @@ -72,4 +72,17 @@ private boolean isDeviceContained(String boardId) { } return false; } + + public String getGroupIdByTargetBoard(String board) { + for (BoardInfo info : boardList) { + if (info.getBoardName().equalsIgnoreCase(board) || info.getDeviceList().contains(board)) { + if (info.isCustomBoard()) { + return info.getGroupInfoById(board) != null ? info.getGroupInfoById(board).getGroupId() : ""; + } else { + info.getGroupId(); + } + } + } + return ""; + } } diff --git a/swtbot_test/src/platform/PlatformModel.java b/swtbot_test/src/platform/PlatformModel.java index 87087b4..a8a2633 100644 --- a/swtbot_test/src/platform/PlatformModel.java +++ b/swtbot_test/src/platform/PlatformModel.java @@ -89,4 +89,13 @@ public static boolean isCustomBoard(String id) { } return false; } + + public static String getGroupNameById(String board) { + for (FamilyInfo info : familyInfo) { + if (!getFamilyName(board).isEmpty()) { + return info.getGroupIdByTargetBoard(board); + } + } + return ""; + } } diff --git a/swtbot_test/src/swtbot_test/SampleTest.java b/swtbot_test/src/testcase/CreateAllAzureProjectBuildAllTest.java similarity index 81% rename from swtbot_test/src/swtbot_test/SampleTest.java rename to swtbot_test/src/testcase/CreateAllAzureProjectBuildAllTest.java index cdd497c..f4fcb58 100644 --- a/swtbot_test/src/swtbot_test/SampleTest.java +++ b/swtbot_test/src/testcase/CreateAllAzureProjectBuildAllTest.java @@ -1,8 +1,12 @@ -package swtbot_test; +package testcase; import java.io.File; +import org.eclipse.swt.widgets.Display; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; +import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; +import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; @@ -20,8 +24,9 @@ import utilities.Utility; @FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class SampleTest { +public class CreateAllAzureProjectBuildAllTest { private static SWTWorkbenchBot bot; + private static SWTBotShell workbenchShell; @BeforeClass @@ -29,11 +34,28 @@ public static void beforeClass() throws Exception { bot = new SWTWorkbenchBot(); PlatformModel.loadPlatformModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.PLATFORM_XML_FILE))); RTOSManager.loadRTOSModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.RTOS_PG_XML_FILE))); + + // initialize the SWTBot + bot = new SWTWorkbenchBot(); + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + bot.getDisplay().getActiveShell().setMaximized(true); + } + }); + SWTBotPreferences.TIMEOUT = 20000; + SWTBotPreferences.PLAYBACK_DELAY = 30; + closeWelcomePage(); + workbenchShell = bot.activeShell(); } - @Test - public void TC_011_closeWelcome() throws Exception { - bot.viewByTitle("Welcome").close(); + private static void closeWelcomePage() { + for (SWTBotView view : bot.views()) { + if (view.getTitle().equals("Welcome")) { + view.close(); + } + } } @Test @@ -123,7 +145,7 @@ public void TC_181_PG_Bootloader() throws Exception { @Test public void TC_191_BuildAll() throws Exception { - BuildUtility.buildAll(); + BuildUtility.buildAll(workbenchShell); } } \ No newline at end of file diff --git a/swtbot_test/src/testcase/TCExecute.java b/swtbot_test/src/testcase/TCExecute.java new file mode 100644 index 0000000..b6e3a9b --- /dev/null +++ b/swtbot_test/src/testcase/TCExecute.java @@ -0,0 +1,71 @@ +package testcase; + +import java.io.File; +import java.util.Collection; + +import org.eclipse.jface.bindings.keys.ParseException; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; +import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; +import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import common.Constants; +import common.LogUtil; +import model.RTOSManager; +import model.TC; +import model.TCManager; +import platform.PlatformModel; +import utilities.Utility; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class TCExecute { + private static SWTWorkbenchBot bot; + private static SWTBotShell workbenchShell; + private static Collection tces; + + @BeforeClass + public static void beforeClass() throws Exception { + // process the model xml + PlatformModel + .loadPlatformModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.PLATFORM_XML_FILE))); + RTOSManager.loadRTOSModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.RTOS_PG_XML_FILE))); + TCManager.loadRTOSModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.TC_XML_FILE))); + tces = TCManager.getAllTCes(); + + // initialize the SWTBot + bot = new SWTWorkbenchBot(); + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + bot.getDisplay().getActiveShell().setMaximized(true); + } + }); + SWTBotPreferences.TIMEOUT = 20000; + SWTBotPreferences.PLAYBACK_DELAY = 30; + closeWelcomePage(); + workbenchShell = bot.activeShell(); + } + + private static void closeWelcomePage() { + for (SWTBotView view : bot.views()) { + if (view.getTitle().equals("Welcome")) { + view.close(); + } + } + } + + @Test + public void TC_00_execute () throws ParseException { + workbenchShell.setFocus(); + Utility.changeRTOSLocation(); + for (TC tc : tces) { + Utility.executeTCStep(tc, workbenchShell); + } + } +} diff --git a/swtbot_test/src/swtbot_test/TrialTest.java b/swtbot_test/src/testcase/TrialTest.java similarity index 54% rename from swtbot_test/src/swtbot_test/TrialTest.java rename to swtbot_test/src/testcase/TrialTest.java index a6a819a..413ba47 100644 --- a/swtbot_test/src/swtbot_test/TrialTest.java +++ b/swtbot_test/src/testcase/TrialTest.java @@ -1,9 +1,11 @@ -package swtbot_test; +package testcase; import java.io.File; - +import org.eclipse.swt.widgets.Display; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; +import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; @@ -23,16 +25,31 @@ @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TrialTest { private static SWTWorkbenchBot bot; + private static SWTBotShell workbenchShell; @BeforeClass public static void beforeClass() throws Exception { - bot = new SWTWorkbenchBot(); - PlatformModel.loadPlatformModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.PLATFORM_XML_FILE))); + // process the model xml + PlatformModel + .loadPlatformModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.PLATFORM_XML_FILE))); RTOSManager.loadRTOSModel(new File(Utility.getBundlePath(LogUtil.PLUGIN_ID, Constants.RTOS_PG_XML_FILE))); + + // initialize the SWTBot + bot = new SWTWorkbenchBot(); + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + bot.getDisplay().getActiveShell().setMaximized(true); + } + }); + SWTBotPreferences.TIMEOUT = 20000; + SWTBotPreferences.PLAYBACK_DELAY = 30; + closeWelcomePage(); + workbenchShell = bot.activeShell(); } - @Test - public void TC_01_closeWelcomeView() { + private static void closeWelcomePage() { for (SWTBotView view : bot.views()) { if (view.getTitle().equals("Welcome")) { view.close(); @@ -42,6 +59,12 @@ public void TC_01_closeWelcomeView() { @Test public void TC_02_createProject() { - PGUtility.createProject(RTOSType.AZURE, RTOSVersion.Azure_6_2_1, RTOSApplication.AZURE_RAM, Constants.GCC_TOOLCHAIN, TargetBoard.BOARD_CK_RX65N); + workbenchShell.setFocus(); + Utility.changeRTOSLocation(); + PGUtility.createProject(RTOSType.AZURE, RTOSVersion.Azure_6_2_1, RTOSApplication.AZURE_BARE, + Constants.GCC_TOOLCHAIN, TargetBoard.BOARD_CK_RX65N); + workbenchShell.setFocus(); + //build All + bot.menu(workbenchShell).menu("Project").menu("Build All").click(); } } diff --git a/swtbot_test/src/utilities/BuildUtility.java b/swtbot_test/src/utilities/BuildUtility.java index d9ae1e1..9bb32bb 100644 --- a/swtbot_test/src/utilities/BuildUtility.java +++ b/swtbot_test/src/utilities/BuildUtility.java @@ -3,10 +3,8 @@ import java.util.ArrayList; import java.util.List; -import org.eclipse.jface.bindings.keys.KeyStroke; -import org.eclipse.jface.bindings.keys.ParseException; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; -import org.eclipse.swtbot.swt.finder.keyboard.Keystrokes; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import common.Constants; @@ -112,9 +110,7 @@ public static void deleteProject(ProjectModel model) { } - public static void buildAll() throws ParseException { - bot.sleep(3000); - bot.shell().pressShortcut(Keystrokes.CTRL, Keystrokes.ALT, KeyStroke.getInstance("B")); - bot.sleep(3000); + public static void buildAll(SWTBotShell shell){ + bot.menu(shell).menu("Project").menu("Build All").click(); } } diff --git a/swtbot_test/src/utilities/PGUtility.java b/swtbot_test/src/utilities/PGUtility.java index af4a697..afa8032 100644 --- a/swtbot_test/src/utilities/PGUtility.java +++ b/swtbot_test/src/utilities/PGUtility.java @@ -3,17 +3,26 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + import org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory; import org.eclipse.swtbot.eclipse.finder.waits.Conditions; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; +import common.Constants; import model.Application; import model.Board; import model.Config; +import model.GroupSetting; import model.Language; +import model.Project; import model.ProjectConfiguration; import model.ProjectModel; import model.RTOSManager; import model.RTOSVersion; +import model.RXCLinkerFile; +import model.TC; import model.Target; import model.Toolchain; import parameters.ProjectParameters; @@ -21,21 +30,26 @@ import parameters.ProjectParameters.ButtonAction; import parameters.ProjectParameters.LabelName; import parameters.ProjectParameters.MenuName; -import common.Constants; +import parameters.ProjectParameters.RTOSApplication; +import parameters.ProjectParameters.ToolchainType; import platform.PlatformModel; public class PGUtility extends Utility { + public static Map projNames = new HashMap<>(); + static { + projNames.put("RSKRX65N-2MB", "rsk65n"); + projNames.put("RSKRX65N-2MB(TSIP)", "rsk65ntsip"); + projNames.put("CK-RX65N", "ckrx65n"); + projNames.put("CloudKitRX65N", "ckitrx65n"); + projNames.put("RSKRX671", "rsk671"); + projNames.put("EnvisionKitRX72N", "ekrx72n"); + } public static void createProject(String rtosType, String version, String appId) { Collection list = prepareProjectModel(rtosType, version, appId); // create project for (ProjectModel model : list) { - if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RX)) { - createRXProject(model); - BuildUtility.setBuildConfiguration(model); - } else if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RZ)) { - createRZProject(model); - } + internalCreateProject(model); } } @@ -44,12 +58,24 @@ public static void createProject(String rtosType, String version, String appId, if (model == null) { return; } + internalCreateProject(model); + } + + public static Collection createProjectByTC(TC tc) { + Collection list = prepareProjectModel(tc); // create project - if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RX)) { - createRXProject(model); - BuildUtility.setBuildConfiguration(model); - } else if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RZ)) { - createRZProject(model); + for (ProjectModel model : list) { + internalCreateProject(model); + } + return list; + } + + public static void createProjectByAllTC(Collection tces) { + for (TC tc : tces) { + Collection list = prepareProjectModel(tc); + for (ProjectModel model : list) { + internalCreateProject(model); + } } } @@ -77,7 +103,8 @@ public static Collection prepareProjectModel(String rtosType, Stri model.setApplication(appId); model.setApplicationOrder(app.getApplicationOrder()); model.setToolchain(toolchain.getName()); - model.setProjectName(appId + toolchain.getName() + i); + model.setProjectName( + appId + "_" + toolchain.getName() + "_" + getProjectNameByBoard(board.getBoard())); model.setSkipApplication(version.isSkipAppSelection()); ProjectConfiguration filtered = getProjectConfiguration(app.getProjectConfiguration(), toolchain.getName(), board.getBoard()); if (filtered == null) { @@ -87,6 +114,7 @@ public static Collection prepareProjectModel(String rtosType, Stri model.setBuildType(config.getId(), config.isActive()); } } + model.setRXCLinkerFile(getRXCLinkerFile(app.getLinkerFiles(), toolchain.getName(), board.getBoard())); list.add(model); } } @@ -114,7 +142,8 @@ public static ProjectModel prepareProjectModel(String rtosType, String versionId model.setApplication(appId); model.setApplicationOrder(app.getApplicationOrder()); model.setToolchain(toolchain); - model.setProjectName(appId + toolchain); + model.setProjectName( + appId + "_" + toolchain + "_" + getProjectNameByBoard(board)); model.setSkipApplication(version.isSkipAppSelection()); ProjectConfiguration filtered = getProjectConfiguration(app.getProjectConfiguration(), toolchain, board); if (filtered == null) { @@ -124,13 +153,84 @@ public static ProjectModel prepareProjectModel(String rtosType, String versionId model.setBuildType(config.getId(), config.isActive()); } } + model.setRXCLinkerFile(getRXCLinkerFile(app.getLinkerFiles(), toolchain, board)); return model; } + + public static Collection prepareProjectModel(TC tc) { + Collection results = new ArrayList<>(); + for (Project project : tc.getProjects()) { + GroupSetting toolSetting = project.getGroupSettingById("toolchain"); + GroupSetting deviceSetting = project.getGroupSettingById("device"); + GroupSetting configSetting = project.getGroupSettingById("configuration"); + if (toolSetting == null) { + return results; + } + for (Toolchain toolchain : toolSetting.getToolchains()) { + if (deviceSetting == null) { + continue; + } + for (Board board : deviceSetting.getBoards()) { + for (Application app : project.getApps()) { + ProjectModel model = new ProjectModel(); + if (toolSetting.getLanguage() != null) { + model.setLanguage(toolSetting.getLanguage().getId()); + } + model.setFamilyName(PlatformModel.getFamilyName(board.getBoard())); + model.setToolchain(toolchain.getName()); + model.setToolchainVersion(toolchain.getVersion()); + model.setRtosType(Utility.convertRTOSTypeToDisplay(toolSetting.getRTOSType())); + model.setRtosVersion(toolSetting.getRTOSVersion()); + model.setBoard(board.getBoard()); + if (configSetting != null && !configSetting.getConfigs().isEmpty()) { + for (Config config : configSetting.getConfigs()) { + model.setBuildType(config.getId(), config.isActive()); + } + } else { + model.setBuildType(BuildType.HARDWARE, true); + } + model.setProjectName(app.getApplicationId() + "_" + toolchain.getName() + "_" + + getProjectNameByBoard(board.getBoard())); + model.setApplication(app.getApplicationId()); + model.setApplicationOrder(app.getApplicationOrder()); + model.setSkipApplication(app.isSkipApp()); + model.setRXCLinkerFile( + getRXCLinkerFile(app.getLinkerFiles(), toolchain.getName(), board.getBoard())); + results.add(model); + } + } + } + } + return results; + } + private static void createRZProject(ProjectModel model) { // not yet implemented } + private static void internalCreateProject(ProjectModel model) { + // create project + if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RX)) { + createRXProject(model); + BuildUtility.setBuildConfiguration(model); + if (model.getApplication().equals(RTOSApplication.AZURE_IOT_ADU) + || model.getApplication().equals(RTOSApplication.AZURE_BOOTLOADER)) { + Utility.changeBoard(model, "", "", true, false); + if (model.getToolchain().equals(ToolchainType.GCC_TOOLCHAIN)) { + Utility.updateGCCLinkerScriptFile(model); + } else if (model.getToolchain().equals(ToolchainType.CCRX_TOOLCHAIN) + && !model.getRXCLinkerFile().isEmpty()) { + Utility.updateRXCLinkerSection(model, model.getRXCLinkerFile()); + } + } + Utility.getProjectTreeItem(model).collapse(); + bot.closeAllEditors(); + } else if (model.getFamilyName().equalsIgnoreCase(Constants.FAMILY_DEVICE_RZ)) { + createRZProject(model); + } + } + private static void createRXProject(ProjectModel model) { bot.sleep(3000); bot.menu(MenuName.MENU_FILE).menu(MenuName.MENU_NEW) @@ -187,40 +287,35 @@ private static void createRXProject(ProjectModel model) { bot.radio(model.getApplicationOrder()).click(); } bot.button(ButtonAction.BUTTON_FINISH).click(); - bot.sleep(20000); + bot.sleep(3000); + + boolean breakLoop = false; while (true) { - if (bot.activeShell().getText().contains(ProjectParameters.WINDOW_INSTALL)) { - bot.button(ButtonAction.BUTTON_CANCEL).click(); - } - if (bot.activeShell().getText().contains(ProjectParameters.WINDOW_OPEN_ASSOCIATED_PERSPECTIVE)) { - bot.button(ButtonAction.BUTTON_OPEN_PERSPECTIVE).click(); - } - if (bot.activeShell().getText().contains(ProjectParameters.WINDOW_FIT)) { - bot.button(ButtonAction.BUTTON_YES).click(); - bot.comboBox(0).setSelection("Singapore/South &Southeast Asia/Oceania"); - bot.button(ButtonAction.BUTTON_OK).click(); - bot.sleep(5000); - bot.button(ButtonAction.BUTTON_SELECT_ALL).click(); - bot.button(ButtonAction.BUTTON_DOWNLOAD).click(); - bot.button(ButtonAction.BUTTON_ACCEPT).click(); - bot.shell(ProjectParameters.WINDOW_OPEN_ASSOCIATED_PERSPECTIVE).activate(); - } - if (bot.activeShell().getText().contains(ProjectParameters.CODE_GENERATING)) { - bot.button(ButtonAction.BUTTON_PROCEED).click(); + SWTBotShell[] shells = bot.shells(); + for (SWTBotShell shell : shells) { + if (shell.isActive()) { + if (shell.getText().equals(ProjectParameters.WINDOW_OPEN_ASSOCIATED_PERSPECTIVE)) { + shell.bot().button(ButtonAction.BUTTON_OPEN_PERSPECTIVE).click(); + } + if (shell.getText().equals(ProjectParameters.WINDOW_MARKETPLACE)) { + shell.bot().button(ButtonAction.BUTTON_CANCEL).click(); + breakLoop = true; + break; + } + } } - if (bot.activeShell().getText().contains(ProjectParameters.WINDOW_MARKETPLACE)) { - bot.button(ButtonAction.BUTTON_CANCEL).click(); + bot.sleep(3000); + if (breakLoop) { + // close all Editors + bot.closeAllEditors(); + if (bot.activeShell().getText().contains("Save Resource")) { + bot.button("Don't Save").click(); + } + bot.sleep(3000); break; } - bot.sleep(3000); } - bot.closeAllEditors(); - if (bot.activeShell().getText().contains("Save Resource")) { - bot.button("Don't Save").click(); - } - bot.sleep(10000); - } private static String getLanguage(Collection model, String selectedToolchain, String selectedBoard) { @@ -239,4 +334,22 @@ private static ProjectConfiguration getProjectConfiguration(Collection + return PlatformModel.getGroupNameById(board) + board.substring(7); + } + } + + private static String getRXCLinkerFile(Collection model, + String selectedToolchain, String selectedBoard) { + Collection filtered = Utility.filterXMLData(model, selectedToolchain, selectedBoard); + if (filtered.isEmpty()) { + return ""; + } + return filtered.stream().findFirst().get().getLinkerPath(); + } } diff --git a/swtbot_test/src/utilities/Utility.java b/swtbot_test/src/utilities/Utility.java index d203a9c..6f8eb83 100644 --- a/swtbot_test/src/utilities/Utility.java +++ b/swtbot_test/src/utilities/Utility.java @@ -1,24 +1,31 @@ package utilities; -import static org.junit.Assert.assertFalse; - import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.bindings.keys.ParseException; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; +import org.eclipse.swtbot.eclipse.finder.waits.Conditions; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; +import org.eclipse.swtbot.swt.finder.SWTBot; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.osgi.framework.Bundle; import model.AbstractNode; +import model.Action; +import model.Project; import model.ProjectModel; +import model.TC; import parameters.ProjectParameters; import parameters.ProjectParameters.ButtonAction; import parameters.ProjectParameters.MenuName; @@ -65,6 +72,15 @@ public static SWTBotTreeItem getProjectItemOnProjectExplorer(String projectName) return bot.tree().getTreeItem(projectItem); } + public static SWTBotTreeItem getProjectTreeItem(ProjectModel projectModel) { + SWTBotView projectExplorerBot = bot.viewByTitle("Project Explorer"); + projectExplorerBot.show(); + projectExplorerBot.bot().waitUntil(Conditions.widgetIsEnabled(projectExplorerBot.bot().tree())); + String buildType = projectModel.getActiveBuildConfiguration(); + bot.tree().getTreeItem(projectModel.getProjectName() + " [" + buildType + "]").select(); + return bot.tree().getTreeItem(projectModel.getProjectName() + " [" + buildType + "]"); + } + public static void projectExplorerSelectProject(ProjectModel model) { // open project explorer openProjectExplorer(); @@ -129,7 +145,6 @@ public static void openSCFGEditor(ProjectModel projectModel) { bot.tree().getTreeItem(projectModel.getProjectName() + " ["+ projectModel.getActiveBuildConfiguration() +"]").getNode(projectModel.getProjectName()+".scfg").doubleClick(); SWTBotEditor scfgEditor = bot.editorByTitle(projectModel.getProjectName()+".scfg"); scfgEditor.setFocus(); - bot.cTabItem(ProjectParameters.SCFG_COMPONENT_TAB).activate(); } public static void addComponent(String componentName) { @@ -207,4 +222,215 @@ private static boolean isSupport(Collection toolchains, Collection new board --> put new board to parameter 2, otherwise, put empty string + * + * case 2: change current board/device --> new device --> put new device to parameter 3, otherwise, put empty string + * + * case 3: change current board from linear mode --> dual mode --> put boolean true to parameter 4, otherwise, put false + * + * case 4, change current board from dual model --> linear model --> put boolean true to parameter 5, otherwise, put false + * + * @param model + * @param board + * @param device + * @param isLinearDualConverted + * @param isDualLinearConverted + */ + public static void changeBoard(ProjectModel model, String board, String device, boolean isLinearDualConverted, boolean isDualLinearConverted) { + openSCFGEditor(model); + SWTBotEditor scfgEditor = bot.editorByTitle(model.getProjectName() + ".scfg"); + SWTBot editorBot = scfgEditor.bot(); + editorBot.cTabItem("Board").activate(); + editorBot.button("...").click(); + + // handle change board dialog + editorBot.waitUntil(Conditions.shellIsActive("Refactoring")); + SWTBotShell refactorShell = editorBot.shell("Refactoring"); + SWTBot refactorBot = refactorShell.bot(); + // handle Linear -- Dual device + if (isLinearDualConverted) { + String dualDevice = refactorBot.styledText().getText() + "_DUAL"; + refactorBot.styledText().setText(dualDevice); + } else if (isDualLinearConverted) { + String linearDevice = refactorBot.styledText().getText().replace("_DUAL", ""); + refactorBot.styledText().setText(linearDevice); + } + // handle not Linear -- Dual device + if (!board.isEmpty()) { + refactorBot.comboBox().setText(board); + } else if (!device.isEmpty()) { + refactorBot.styledText().setText(device); + } + + refactorBot.styledText().setText(board); + refactorBot.button(ButtonAction.BUTTON_NEXT).click(); + refactorBot.waitUntil(Conditions.widgetIsEnabled(refactorBot.button(ButtonAction.BUTTON_NEXT))); + refactorBot.button(ButtonAction.BUTTON_NEXT).click(); + refactorBot.waitUntil(Conditions.widgetIsEnabled(refactorBot.button(ButtonAction.BUTTON_FINISH))); + refactorBot.button(ButtonAction.BUTTON_FINISH).click(); + if (isLinearDualConverted) { + // handle confirm dialog + refactorBot.waitUntil(Conditions.shellIsActive("Question")); + SWTBotShell confirmShell = refactorBot.shell("Question"); + SWTBot confirmBot = confirmShell.bot(); + confirmBot.button(ButtonAction.BUTTON_YES).click(); + refactorBot.waitUntil(Conditions.shellCloses(refactorShell)); + } + } + + public static void updateGCCLinkerScriptFile(ProjectModel model) { + bot.sleep(2000); + SWTBotTreeItem projectItem = getProjectTreeItem(model); + projectItem.select(); + projectItem.expand(); + projectItem.getNode("src").select(); + projectItem.getNode("src").expand(); + SWTBotTreeItem linkerItem = projectItem.getNode("src").getNode("linker_script.ld").select(); + linkerItem.contextMenu().menu("Rename...").click(); + + // handle rename resource dialog + bot.waitUntil(Conditions.shellIsActive("Rename Resource")); + SWTBotShell renameShell = bot.shell("Rename Resource"); + SWTBot renameBot = renameShell.bot(); + renameBot.text().setText("linker_script_1.ld"); + renameBot.waitUntil(Conditions.widgetIsEnabled(renameBot.button(ButtonAction.BUTTON_OK))); + renameBot.button(ButtonAction.BUTTON_OK).click(); + renameBot.waitUntil(Conditions.shellCloses(renameShell)); + + // handle rename for linker_script_sample.ld + projectItem.select(); + SWTBotTreeItem linkerSampleItem = projectItem.getNode("src").getNode("linker_script_sample.ld").select(); + linkerSampleItem.contextMenu().menu("Rename...").click(); + + bot.waitUntil(Conditions.shellIsActive("Rename Resource")); + SWTBotShell reShell = bot.shell("Rename Resource"); + SWTBot reBot = reShell.bot(); + reBot.text().setText("linker_script.ld"); + reBot.waitUntil(Conditions.widgetIsEnabled(reBot.button(ButtonAction.BUTTON_OK))); + reBot.button(ButtonAction.BUTTON_OK).click(); + reBot.waitUntil(Conditions.shellCloses(reShell)); + } + + public static void updateRXCLinkerSection(ProjectModel model, String rxcLinkerFile) { + SWTBotTreeItem projectItem = Utility.getProjectTreeItem(model); + projectItem.select(); + + // open project setting dialog + projectItem.contextMenu("C/C++ Project Settings").click(); + String settingDiaTitle = "Properties for " + model.getProjectName(); + bot.waitUntil(Conditions.shellIsActive(settingDiaTitle)); + SWTBotShell dialog = bot.shell(settingDiaTitle); + dialog.setFocus(); + SWTBot dialogBot = dialog.bot(); + dialogBot.cTabItem("Tool Settings").activate(); + + // check Linker/Section/Symbol file option + dialogBot.treeWithLabel("Settings").getTreeItem("Linker").getNode("Section").getNode("Symbol file").click(); + dialogBot.toolbarButtonWithTooltip("Add...", 2).click(); + // TODO: handle dialog + dialogBot.waitUntil(Conditions.shellIsActive("Enter Value")); + SWTBotShell mapDialog = dialogBot.shell("Enter Value"); + SWTBot mapBot = mapDialog.bot(); + mapBot.text().setText("PFRAM2=RPFRAM2"); + mapBot.button(ButtonAction.BUTTON_OK).click(); + dialogBot.waitUntil(Conditions.shellCloses(mapDialog)); + dialogBot.toolbarButtonWithTooltip("Move Down", 2).click(); + dialogBot.toolbarButtonWithTooltip("Move Down", 2).click(); + + // handle Rebuild index dialog + dialogBot.button("Apply").click(); + dialogBot.waitUntil(Conditions.shellIsActive("Settings")); + SWTBotShell rebuildDialog = dialogBot.shell("Settings"); + SWTBot rebuildBot = rebuildDialog.bot(); + rebuildBot.button("Rebuild Index").click(); + dialogBot.waitUntil(Conditions.shellCloses(rebuildDialog)); + + // handle Section viewer dialog + dialogBot.treeWithLabel("Settings").getTreeItem("Linker").getNode("Section").click(); + dialogBot.button("...").click(); + dialogBot.sleep(2000);// wait for dialog section edition + SWTBotShell sectionShell = dialogBot.activeShell(); + sectionShell.setFocus(); + SWTBot sectionBot = sectionShell.bot(); + + // checkbox + Path linkerPath = new Path(rxcLinkerFile); + sectionBot.checkBox("Override Linker Script").click(); + sectionBot.text().setText(linkerPath.toOSString()); + sectionBot.button("Re-Apply").click(); + // Re-Apply dialog + sectionBot.waitUntil(Conditions.shellIsActive("Re-Apply")); + SWTBotShell reApplyShell = sectionBot.shell("Re-Apply"); + SWTBot reApplyBot = reApplyShell.bot(); + reApplyBot.button("OK").click(); + sectionBot.waitUntil(Conditions.shellCloses(reApplyShell)); + + sectionBot.button("OK").click(); + dialogBot.sleep(2000); + + // handle Rebuild index dialog + dialogBot.button("Apply and Close").click(); + dialogBot.waitUntil(Conditions.shellIsActive("Settings")); + SWTBotShell reDialog = dialogBot.shell("Settings"); + SWTBot reBot = reDialog.bot(); + reBot.button("Rebuild Index").click(); + dialogBot.waitUntil(Conditions.shellCloses(reDialog)); + } + + public static void executeTCStep(TC tc, SWTBotShell shell) throws ParseException { + // create project or import project or using current project + Collection result = null; + for (Project project : tc.getProjects()) { + if (project.getProjectId().equalsIgnoreCase("pg")) { + result = PGUtility.createProjectByTC(tc); + } else if (project.getProjectId().equalsIgnoreCase("import")) { + + } else { + // using current project + } + } + // do action + Collection rawActions = tc.getActions(); + Collections.sort((List ) rawActions, new Comparator() { + + @Override + public int compare(Action o1, Action o2) { + return o2.getActionOrder() - o1.getActionOrder(); + } + + }); + for (Action action : rawActions) { + if (action.getActionId().equalsIgnoreCase("changeboard")) { + if (result != null) { + for (ProjectModel model : result) { + Utility.changeBoard(model, null, null, true, false); + } + } + } else if (action.getActionId().equalsIgnoreCase("buildAll")) { + BuildUtility.buildAll(shell); + } + } + } } diff --git a/swtbot_test/xml/platformdata.xml b/swtbot_test/xml/platformdata.xml index 22245a9..17e5d25 100644 --- a/swtbot_test/xml/platformdata.xml +++ b/swtbot_test/xml/platformdata.xml @@ -2,16 +2,16 @@ - TargetBoardRX130 - RSKRX140 - RSKRX65N-2MB - RSKRX65N-2MB(TSIP) - CloudKitRX65N - CK-RX65N - RSKRX66T - RSKRX660 - RSKRX671 - EnvisionKitRX72N + TargetBoardRX130 + RSKRX140 + RSKRX65N-2MB + RSKRX65N-2MB(TSIP) + CloudKitRX65N + CK-RX65N + RSKRX66T + RSKRX660 + RSKRX671 + EnvisionKitRX72N R5F565NEHxFC diff --git a/swtbot_test/xml/rtospg.xml b/swtbot_test/xml/rtospg.xml index 859ec5b..862e008 100644 --- a/swtbot_test/xml/rtospg.xml +++ b/swtbot_test/xml/rtospg.xml @@ -279,8 +279,30 @@ RSKRX671 EnvisionKitRX72N + + CCRX + RSKRX65N-2MB + RSKRX65N-2MB(TSIP) + CK-RX65N + D:/RegressionTest/SwtBot/rxcLinkerfiles/iot_adu/R5F565NE_ether.xmi.fragment + + + CCRX + CloudKitRX65N + D:/RegressionTest/SwtBot/rxcLinkerfiles/iot_adu/R5F565NE_wifi.xmi.fragment + + + CCRX + RSKRX671 + D:/RegressionTest/SwtBot/rxcLinkerfiles/iot_adu/R5F5671E.xmi.fragment + + + CCRX + EnvisionKitRX72N + D:/RegressionTest/SwtBot/rxcLinkerfiles/iot_adu/R5F572NN.xmi.fragment + - + @@ -296,6 +318,24 @@ RSKRX671 EnvisionKitRX72N + + CCRX + RSKRX65N-2MB + RSKRX65N-2MB(TSIP) + CloudKitRX65N + CK-RX65N + D:/RegressionTest/SwtBot/rxcLinkerfiles/bootloader/R5F565NE.xmi.fragment + + + CCRX + RSKRX671 + D:/RegressionTest/SwtBot/rxcLinkerfiles/bootloader/R5F5671E.xmi.fragment + + + CCRX + EnvisionKitRX72N + D:/RegressionTest/SwtBot/rxcLinkerfiles/bootloader/R5F572NN.xmi.fragment + diff --git a/swtbot_test/xml/testcase.xml b/swtbot_test/xml/testcase.xml new file mode 100644 index 0000000..cab55bc --- /dev/null +++ b/swtbot_test/xml/testcase.xml @@ -0,0 +1,39 @@ + + + + + + GCC + + AzureRTOS + 6.2.1_rel-rx-1.0.0 + + + CK-RX65N + + CloudKitRX65N + + + + + + + + + + GCC + + AzureRTOS + 6.2.1_rel-rx-1.0.0 + + + CK-RX65N + + + + + + + + \ No newline at end of file