Scénarios de tests d'intégration/fonctionnels Partenaire : Espresso Nom de l'outil : Editeur Polychrony Date test : 2008-12-09 Version de l'outil : Rhea 0.5.0 Plateforme de test (OS + processeur) : Win32 x86 Organisme testeur : Cellule d'intégration Nom du testeur : Christian Brunette <[email protected]> Récapitulatif des tests Commentaires du testeur......................................................................................................................1 Scénario A : perspective Topcased.......................................................................................................4 Scénario B : création d'un modèle........................................................................................................5 Scénario C: installation des exemples..................................................................................................6 Scénario D: appel des fonctions du compilateur..................................................................................7 Scénario E : aide en ligne.....................................................................................................................9 Commentaires du testeur Voilà l'exception générée quand on clique sur le bouton Dataflow ou Clock pour passer d'un diagramme à l'autre: java.lang.NullPointerException at org.eclipse.gef.editparts.AbstractEditPart.getRoot(AbstractEditPart.java:551) at org.eclipse.gef.editparts.AbstractEditPart.getViewer(AbstractEditPart.java:601) at fr.irisa.espresso.sme.common.policies.CustomEditPolicy.understandsRequest(CustomEditPolicy.java:84) at org.eclipse.gef.editparts.AbstractEditPart.understandsRequest(AbstractEditPart.java:1029) at org.topcased.modeler.internal.actions.ChangeRouterAction.calculateEnabled(ChangeRouterAction.java:119) at org.eclipse.gef.ui.actions.WorkbenchPartAction.refresh(WorkbenchPartAction.java:119) at org.eclipse.gef.ui.actions.WorkbenchPartAction.update(WorkbenchPartAction.java:155) at org.eclipse.gef.ui.parts.GraphicalEditor.updateActions(GraphicalEditor.java:414) at org.eclipse.gef.ui.parts.GraphicalEditor.selectionChanged(GraphicalEditor.java:366) at org.eclipse.ui.internal.AbstractSelectionService.fireSelection(AbstractSelectionService.java:156) at org.eclipse.ui.internal.AbstractSelectionService.setActivePart(AbstractSelectionService.java:282) at org.eclipse.ui.internal.WWinPartService.updateActivePart(WWinPartService.java:125) at org.eclipse.ui.internal.WWinPartService.access$0(WWinPartService.java:115) at org.eclipse.ui.internal.WWinPartService$1.partDeactivated(WWinPartService.java:48) at org.eclipse.ui.internal.PartListenerList2$4.run(PartListenerList2.java:113) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.runtime.Platform.run(Platform.java:880) at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:53) at org.eclipse.ui.internal.PartListenerList2.firePartDeactivated(PartListenerList2.java:111) Copyright © 2007 OpenEmbeDD project (openembedd.org) at org.eclipse.ui.internal.PartService.firePartDeactivated(PartService.java:241) at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:299) at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:56) at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:126) at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3491) at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:610) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1086) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1057) at org.eclipse.ui.internal.WorkbenchPage$19.run(WorkbenchPage.java:3773) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3770) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3746) at fr.inria.base.MyManager.getShowView(MyManager.java:206) at fr.inria.base.MyManager.getPackageExplorer(MyManager.java:238) at fr.inria.ctrte.time.parser.packageexplorer.MyWindowListener.windowActivated(MyWindowListener.java:25) at org.eclipse.ui.internal.Workbench$12.run(Workbench.java:805) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.ui.internal.Workbench.fireWindowActivated(Workbench.java:803) at org.eclipse.ui.internal.WorkbenchWindow$26.shellActivated(WorkbenchWindow.java:2991) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:82) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1008) at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1613) at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2013) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3784) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337) at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576) at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528) at org.eclipse.swt.internal.win32.OS.DestroyWindow(Native Method) at org.eclipse.swt.widgets.Control.destroyWidget(Control.java:663) at org.eclipse.swt.widgets.Shell.destroyWidget(Shell.java:657) at org.eclipse.swt.widgets.Widget.release(Widget.java:814) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441) at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:446) at org.eclipse.swt.widgets.Shell.dispose(Shell.java:674) at org.eclipse.jface.window.Window.close(Window.java:335) at org.eclipse.jface.dialogs.Dialog.close(Dialog.java:979) at org.eclipse.jface.dialogs.ProgressMonitorDialog.close(ProgressMonitorDialog.java:360) at org.eclipse.jface.dialogs.ProgressMonitorDialog.finishedRun(ProgressMonitorDialog.java:594) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:510) Copyright © 2007 OpenEmbeDD project (openembedd.org) at org.topcased.modeler.commands.CreateDiagramCommand.importObjects(CreateDiagramCommand.java:164) at org.topcased.modeler.commands.CreateDiagramCommand.redo(CreateDiagramCommand.java:144) at org.topcased.modeler.commands.CreateDiagramCommand.execute(CreateDiagramCommand.java:105) at org.topcased.modeler.commands.CommandStack.execute(CommandStack.java:165) at fr.irisa.espresso.sme.common.commands.ChangeAspectCommand.redo(ChangeAspectCommand.java:135) at fr.irisa.espresso.sme.common.commands.ChangeAspectCommand.execute(ChangeAspectCommand.java:86) at org.topcased.modeler.commands.CommandStack.execute(CommandStack.java:165) at fr.irisa.espresso.sme.modeler.actions.GoToDataflowAspectAction.run(GoToDataflowAspectAction.java:59) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:230) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1236) Copyright © 2007 OpenEmbeDD project (openembedd.org) Scénario A : perspective Topcased Remarques : R.A.S. Action Résultat attendu OK Aller dans Windows >> Open Perspective >> Other Une perspective Topcased doit apparaître Oui Choisir la perspective Topcased Elle doit s'activer (apparaît en haut à droite) Oui Commentaires Copyright © 2007 OpenEmbeDD project (openembedd.org) Scénario B : création d'un modèle Action Résultat attendu OK Commentaires Choisir la perspective Topcased Elle doit apparaître en haut à droite. Oui Créer un projet Topcased Projet créé Oui Dans ce projet, clic droit puis New >> Sme diagrams Modèle par défaut ouvert dans l'éditeur graphique Oui Ajouter des éléments à ce modèle Modèle non vide Oui Cliquer sur le choix DataFlow au dessus du schéma L'éditeur passe en mode DataFlow Oui Il passe bien dans le bon diagramme, mais il génère une exception (cf commentaires du testeur). Ajouter des éléments aux schéma DataFlow non vide Oui Cliquer sur le choix Clocks L'éditeur passe en mode Clocks au dessus du schéma Oui Il passe bien dans le bon diagramme, mais il génère une exception (cf commentaires du testeur). Ajouter des éléments aux schéma Oui Clocks non vide Copyright © 2007 OpenEmbeDD project (openembedd.org) Scénario C: installation des exemples Remarques : à partir de la version 0.4.0 d'OpenEmbeDD Action Résultat attendu OK Dans le Package Explorer : Les projets - clic droit puis « New » fr.irisa.espresso.sme.examples - « Example... » doit être créé. - choisir le dossier «Polychrony Examples » puis « Polychrony Examples » - clic sur « Finish » Oui Dans le Package Explorer, Ils doivent tous s'ouvrir sans erreur. développer le projet fr.irisa.espresso.sme.exam ples et double cliquer sur les fichiers *.sme pour afficher les modèles. Oui Commentaires Double cliquer sur les fichiers *.smedi pour afficher les diagrammes. Ils doivent tous s'ouvrir sans erreur. Oui Petits problèmes, les connections ne sont pas rectinlinear Sur chacun d'entre eux, cliquer sur le bouton « Validate the model ». Tous les modèles doivent être valides. Oui Copyright © 2007 OpenEmbeDD project (openembedd.org) Scénario D: appel des fonctions du compilateur Remarques : à partir de la version 0.4.0 d'OpenEmbeDD. Se base sur les exemples de modèle installés lors du scénario précédent. Action Résultat attendu Cliquer avec le bouton Il doit y avoir un menu droit sur Polychrony. SimpleHierarchicAutomat on.sme Sélectionner dans le menu Polychrony, «Generate SIG File ». Un répertoire SimpleHierarchicAutomaton contenant un fichier SimpleHierarchicAutomaton_ LIS.SIG a été créé. Dans la console, un message indiquant: ===> Reduction to the kernel language ===> Graph generation (Process SimpleHierarchicAutomaton) # Annotated source program generation: SimpleHierarchicAutomaton_ LIS.SIG Le fichier contient un SimpleHierarchicAutoma programme Signal en version textuel. ton_LIS.SIG Ouvrir le fichier OK Commentaires Oui Oui Mais pas sur l'action «Generate SIG File », mais sur «Generate SIG (LIS) File » Oui Cliquer avec le bouton droit sur Counter.sme et sélectionner dans le menu Polychrony, « Generate C files ». Une boite de dialogue s'ouvre demandant si on veut forcer la génération de code C. Dans la console, des messages apparaissent annonçant plusieurs fois ===> Clock calculus (Process: Counter) Oui Répondre « Yes » Un répertoire Counter a été ajouté dans le répertoire model. Il doit contenir: - Counter_body.c - Counter_body.h - Counter_externals.h - Counter_externalsProc.h - Counter_io.c - Counter_main.c - Counter_types.h Dans la console, un message s'est affiché pour annoncer la génération de ces fichiers Oui Cliquer avec le bouton droit sur Watchdog.sme et sélectionner dans le menu Polychrony, « Generate Un répertoire Watchdog a été ajouté dans le répertoire model. Il doit contenir: - Watchdog_io.java Oui Copyright © 2007 OpenEmbeDD project (openembedd.org) Java files ». - Watchdog_main.java - Watchdog.java Copyright © 2007 OpenEmbeDD project (openembedd.org) Scénario E : aide en ligne Remarques : -Action Résultat attendu OK Dans la barre de menu Eclispe, cliquer sur « Help » puis « Help Contents » Un item « Polychrony » doit apparaître Sélectionner l'item « Polychrony » et le déplier Des rubriques et/ou une Oui première page de documentation doivent apparaître Passer en revue chaque rubrique et page de documentation Les pages ne doivent pas comporter d'images absentes (marquées par un cadre vide) et les liens doivent être fonctionnels Commentaires Oui Il s'appelle Polychrony Plugin Suites Guide Oui Copyright © 2007 OpenEmbeDD project (openembedd.org)