Scénario de test & Cas d'usage
Analyse de réseaux et algorithmes de graphes.
Découvrir toutes les actions de optNetworkCréation d'une table de nœuds et de liens contenant des cas particuliers : un serveur isolé ('SRV_NEW'), une boucle sur un routeur ('RTR_A'), et des liens doubles entre deux switchs ('SW_1', 'SW_2').
| 1 | DATA mycas.Nodes_IT; |
| 2 | INPUT node $; |
| 3 | DATALINES; |
| 4 | RTR_A |
| 5 | SW_1 |
| 6 | SW_2 |
| 7 | SRV_1 |
| 8 | SRV_2 |
| 9 | SRV_NEW |
| 10 | ; |
| 11 | RUN; |
| 12 | DATA mycas.Links_IT; |
| 13 | INPUT from $ to $; |
| 14 | DATALINES; |
| 15 | RTR_A SW_1 |
| 16 | SW_1 SW_2 /* Lien 1 */ |
| 17 | SW_1 SW_2 /* Lien 2 (redondant) */ |
| 18 | SW_2 SRV_1 |
| 19 | SW_2 SRV_2 |
| 20 | RTR_A RTR_A /* Boucle */ |
| 21 | ; |
| 22 | RUN; |
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | nodes={name='Nodes_IT'}, |
| 4 | links={name='Links_IT'}, |
| 5 | outNodes={name='Nodes_Result_Default', replace=true}, |
| 6 | outLinks={name='Links_Result_Default', replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
| 1 | PROC CAS; |
| 2 | ACTION optNetwork.biconnectedComponents / |
| 3 | nodes={name='Nodes_IT'}, |
| 4 | links={name='Links_IT'}, |
| 5 | selfLinks=TRUE, |
| 6 | multiLinks=TRUE, |
| 7 | outNodes={name='Nodes_Result_Full', replace=true}, |
| 8 | outLinks={name='Links_Result_Full', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |
Dans la première exécution, la boucle 'RTR_A -> RTR_A' et le second lien 'SW_1 -> SW_2' doivent être ignorés. 'SW_2' sera probablement un point d'articulation. Dans la seconde exécution, tous les liens doivent être pris en compte. Le fait d'avoir un lien multiple entre SW_1 et SW_2 devrait les placer dans la même composante biconnexée, et 'SW_2' ne devrait plus être un point d'articulation. Dans les deux cas, le nœud isolé 'SRV_NEW' doit apparaître dans la table de sortie des nœuds mais avec des valeurs manquantes pour 'component' et 'artpoint', car il n'appartient à aucun chemin.