summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchertier2008-04-04 08:57:36 +0000
committerchertier2008-04-04 08:57:36 +0000
commit3655239e7ff93a1892c36c465add62f6bc256866 (patch)
tree5f69cf819b57f8197b9de75fc0364fce0747b283
parent10d2c84f8ec0c519f88fc044d01137d342cc094e (diff)
creating test script simulating 3 stations in the same AVLN
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@1749 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--test_general/integration/station-cp-dp/src/Maximus_3_stations.py441
1 files changed, 441 insertions, 0 deletions
diff --git a/test_general/integration/station-cp-dp/src/Maximus_3_stations.py b/test_general/integration/station-cp-dp/src/Maximus_3_stations.py
new file mode 100644
index 0000000000..1247914f35
--- /dev/null
+++ b/test_general/integration/station-cp-dp/src/Maximus_3_stations.py
@@ -0,0 +1,441 @@
+#!/usr/bin/env python
+
+import sys
+
+######################################################
+#
+# (chemins d'import a adapter en fonction de l'emplacement du script...)
+#
+######################################################
+sys.path.append('../../../../maximus/python/obj');
+sys.path.append('../../../../maximus/python/');
+sys.path.append('../../../../maximus/python/lib/cesar');
+
+from maximus import *
+from interface import *
+from sta_cesar import STACesar
+
+#def my_eth_filter(eth):
+# try:
+# eth.get_type()
+# return True
+# except:
+# return False
+def my_eth_filter(eth):
+ if eth.get_type() is 'ETHERNET_TYPE_SNIFFER':
+ # Consider received object that are packets sniffed
+ # by the INTERFACE/SNIFFER module (note that, depending on
+ # the SNIFFER setup, sniffed packets can be beacons and/or MMEs
+ # in Tx and/or Rx)
+ return True
+ else:
+ return False
+
+######################################################
+#
+# "Debut" script Python (impose, c'est l'init Maximus...)
+#
+# On considere que le script sera execute a partir du dossier
+# cesar/test_general/integration/station-cp-dp/src
+# de la maniere suivante:
+#
+# python Maximus.py -l1
+#
+# avec l'executable a tester se trouvant dans ../obj
+# (c-a-d, cesar/test_general/integration/station-cp-dp/obj)
+#
+######################################################
+
+maximus = Maximus()
+#maximus.init (sys.argv)
+maximus.init (sys.argv+['-e','../obj/station_cp_dp.elf'])
+
+######################################################
+#
+# Declaration et parametrage de station(s)...
+#
+######################################################
+#
+# Parametres principaux :
+#
+# mac_address (adresse MAC station, chaine de caracteres specifiant 6 octets en hexa, "XX:XX:XX:XX:XX:XX",
+# ou liste classique Python de 6 octets hexa, (0xXX,0xXX,0xXX,0xXX,0xXX,0xXX),
+# ou entier long Python, 0xXXXXXXXXXXXX)
+#
+# cco_preference (choix preference CCo, booleen true ou false)
+#
+# was_cco (indicateur role CCo actif lors du dernier Power-off, booleen true ou false)
+#
+# npw (Network PassWord, 8 a 64 caracteres ASCII dans l'intervalle standard 0x20 - 0x7F.
+# NMK, NID offset et NID sont calcules automatiquement par le CP de la station
+# a partir du NPW ou peuvent etre "forces", cf parametres optionnels suivants)
+#
+# dpw (Device PassWord, 0 a 64 caracteres ASCII dans l'intervalle standard 0x20 - 0x7F)
+#
+# m_sta_hfid (Manufacturer STA HFID, 0 a 64 caracteres ASCII dans l'intervalle standard 0x20 - 0x7F)
+#
+# u_sta_hfid (User STA HFID, 0 a 64 caracteres ASCII dans l'intervalle standard 0x20 - 0x7F)
+#
+# avln_hfid (AVLN HFID, 0 a 64 caracteres ASCII dans l'intervalle standard 0x20 - 0x7F)
+#
+# sl (Security Level, entier, 2 bits utiles, 0, 1 ou 2)
+#
+# tonemask (Tone mask, liste d'entiers specifiant les bornes d'activation/desactivation
+# de porteuses ou plages de porteuses a utiliser parmi les 1536 porteuses possibles,
+# sachant que les 74 premieres porteuses doivent etre "OFF" et que 1155 porteuses
+# sont utilisables a partir de la porteuse 75. La premiere valeur indique la 1ere porteuse
+# ou debut de plage de porteuses "ON").
+# La definition de la plage de porteuses standard HP AV pour les USA pourrait etre definie ainsi (TBC) :
+# (85,139,167,214,225,282,302,409,419,569,591,736,748,856,882,1015,1027,1143,1535)
+# cette liste definit les porteuses 0 a 84 "OFF", 85 a 138 "ON", 139 a 166 "OFF", ... et 1143 a 1535 "OFF" (TBC)
+#
+# Parametres additionnels (optionnels) :
+#
+# nid (Network IDentifier, entier, 54 bits utiles)
+#
+# snid (Short Network IDentifier, entier nul par defaut, 4 bits utiles => valeurs possibles = 0 a 15
+#
+#####################################################
+
+#####################################################
+# Declaration et parametrage d'une station "STA1_CCO" dans un AVLN "AVLN1"
+# que l'on verrait de preference comme CCo (et etait CCo lors du dernier Power-off),
+# et de 2 stations "STA2_STA" et "STA3_STA" dans le meme AVLN...
+# On force le SNID a 1 pour STA1_CCO, 2 pour STA2_STA et 3 pour STA3_STA...
+# (mais quand tout sera operationnel, on ne devrait plus avoir a forcer de SNID,
+# puisque le SNID est attribue a une STA par "sa" CCo...)
+#####################################################
+
+conf_sta1 = Config ()
+conf_sta1.mac_address = "11:21:31:41:51:61"
+#ou conf_sta1.mac_address = (0x11,0x21,0x31,0x41,0x51,0x61)
+#ou conf_sta1.mac_address = 0x112131415161
+conf_sta1.cco_preference = True
+conf_sta1.was_cco = True
+#conf_sta1.npw = "AVLN1_NPW"
+conf_sta1.npw = "HomePlugAV0123"
+conf_sta1.dpw = "STA1_DPW"
+conf_sta1.m_sta_hfid = "HPAV_STATION"
+conf_sta1.u_sta_hfid = "STA1_CCO"
+conf_sta1.avln_hfid = "AVLN1"
+conf_sta1.tonemask = (85,139,167,214,225,282,302,409,419,569,591,736,748,856,882,1015,1027,1143,1535)
+conf_sta1.sl = 1
+conf_sta1.snid = 1
+
+conf_sta2 = Config ()
+conf_sta2.mac_address = "12:22:32:42:52:62"
+#ou conf_sta2.mac_address = (0x12,0x22,0x32,0x42,0x52,0x62)
+#ou conf_sta2.mac_address = 0x122232425262
+conf_sta2.cco_preference = False
+conf_sta2.was_cco = False
+#conf_sta2.npw = "AVLN1_NPW"
+conf_sta2.npw = "HomePlugAV0123"
+conf_sta2.dpw = "STA2_DPW"
+conf_sta2.m_sta_hfid = "HPAV_STATION"
+conf_sta2.u_sta_hfid = "STA2_STA"
+conf_sta2.avln_hfid = "AVLN1"
+conf_sta2.tonemask = (85,139,167,214,225,282,302,409,419,569,591,736,748,856,882,1015,1027,1143,1535)
+conf_sta2.sl = 1
+conf_sta2.snid = 2
+
+conf_sta3 = Config ()
+conf_sta3.mac_address = "13:23:33:43:53:63"
+#ou conf_sta3.mac_address = (0x13,0x23,0x33,0x43,0x53,0x63)
+#ou conf_sta3.mac_address = 0x132333435363
+conf_sta3.cco_preference = False
+conf_sta3.was_cco = False
+#conf_sta3.npw = "AVLN1_NPW"
+conf_sta3.npw = "HomePlugAV0123"
+conf_sta3.dpw = "STA3_DPW"
+conf_sta3.m_sta_hfid = "HPAV_STATION"
+conf_sta3.u_sta_hfid = "STA3_STA"
+conf_sta3.avln_hfid = "AVLN1"
+conf_sta3.tonemask = (85,139,167,214,225,282,302,409,419,569,591,736,748,856,882,1015,1027,1143,1535)
+conf_sta3.sl = 1
+conf_sta3.snid = 3
+
+#####################################################
+#
+# Instanciation de station(s) CESAR : staN = STACesar ( ... )
+#
+# Dans le cas d'une station CESAR, le nombre de buffers specifie
+# au moyen de l'argument mme_buffer_nb est le nombre de buffers
+# reserves pour la couche logicielle "Control-Plane". D'autres
+# buffers sont alloues pour d'autres couches ou modules suivant
+# leurs propres besoins.
+#
+# Remarque : pour instancier une station non specifiquement CESAR,
+# utiliser : staN = STA ( ... ) en specifiant
+# le nombre de buffers adequat (argument mme_buffer_nb)
+# suivant l'utilisation de modules CESAR ou non ayant
+# besoin de buffers particuliers...
+#
+#####################################################
+#
+# Les arguments d'instanciation STA ( ... ) ou STACesar ( ... ) sont :
+#
+# - la variable resultat d'init Maximus (ex: la variable "maximus" utilisee
+# dans la ligne d'init "maximus = Maximus()")
+#
+# - l'argument "config" specifiant la variable declarant les parametres
+# de la station a instancier (simulation des parametres station en memoire Flash),
+# c'est-a-dire, indication de la variable "conf_staN" utilisee dans la la ligne de
+# declaration "conf_staN = Config()"
+#
+# - "mme_buffer_nb", nombre de buffers MME "d'avance" pour emission vers CL/HLE
+# (1 buffer d'avance par defaut si l'argument mme_buffer_nb n'est pas
+# specifie explicitement)
+# Remarque:
+# -Dans le cas d'une station CESAR, le nombre de buffers specifie
+# au moyen de l'argument mme_buffer_nb est le nombre de buffers
+# reserves pour la couche logicielle "Control-Plane". D'autres
+# buffers sont alloues pour d'autres couches ou modules suivant
+# leurs propres besoins.
+# -Pour instancier une station non specifiquement CESAR,
+# utiliser : staN = STA ( ... ) en specifiant
+# le nombre de buffers adequat (argument mme_buffer_nb)
+# suivant l'utilisation de modules CESAR ou non ayant
+# besoin de buffers particuliers...
+#
+# - "config_mode", chaine specifiant le mode de passage des parametres station
+# a la couche Control-Plane (appel direct de fonctions callback du Control-Plane
+# ou envoi de messages "Driver-MMEs" au Control-Plane via la couche Convergence-Layer).
+# Valeurs "config_mode" possibles :
+#
+# . "MME" (valeur par defaut)
+# . "fcall_process_drv"
+# . "fcall_cp_station"
+#
+# Exemple :
+#
+# sta1 = STA (maximus, config=conf_sta1, mme_buffer_nb=2, config_mode="MME")
+#
+# instancie une station dont les parametres sont definis par l'ensemble de
+# parametres "conf_sta1", 2 buffers MME d'avance (1 est la valeur par defaut
+# si "mme_buffer_nb" n'est pas specifie), et transmission des parametres au
+# Control-plane via des MMEs (plus exactement des DRV-MMEs, c'est-a-dire par
+# simulation du driver Power-Line Linux qui lit les parametres station en Flash
+# et les transmet a la couche Control-Plane via la couche Convergence-Layer
+# sous forme de messages "Driver-MMEs")
+#
+#####################################################
+
+#sta1 = STA (maximus, config=conf_sta1, mme_buffer_nb=3, debug=False, config_mode="MME")
+sta1 = STACesar (maximus, config=conf_sta1, mme_buffer_nb=1, debug=True, config_mode="MME")
+#sta1 = STA (maximus, config=conf_sta1, mme_buffer_nb=5, config_mode="fcall_process_drv")
+#sta1 = STA (maximus, config=conf_sta1, mme_buffer_nb=5, config_mode="fcall_cp_station")
+#sta1.debug()
+
+#maximus.wait (500)
+#sta1.deactivate()
+
+#sta2 = STA (maximus, config=conf_sta2, mme_buffer_nb=3, debug=True, config_mode="MME")
+sta2 = STACesar (maximus, config=conf_sta2, mme_buffer_nb=1, debug=True, config_mode="MME")
+#sta2 = STA (maximus, config=conf_sta2, mme_buffer_nb=5, config_mode="fcall_process_drv")
+#sta2 = STA (maximus, config=conf_sta2, mme_buffer_nb=5, config_mode="fcall_cp_station")
+#sta2.debug()
+
+#sta3 = STA (maximus, config=conf_sta3, mme_buffer_nb=3, debug=True, config_mode="MME")
+sta3 = STACesar (maximus, config=conf_sta3, mme_buffer_nb=1, debug=True, config_mode="MME")
+#sta3 = STA (maximus, config=conf_sta3, mme_buffer_nb=5, config_mode="fcall_process_drv")
+#sta3 = STA (maximus, config=conf_sta3, mme_buffer_nb=5, config_mode="fcall_cp_station")
+#sta3.debug()
+
+
+#####################################################
+
+
+
+#maximus.wait (5000000)
+
+
+#fc1 = maximus.create_fcall ("fc_station_init_config")
+#fc1.set_sta (station1)
+#fc1.add_param_ushort ("snid", 1)
+#fc1.add_param_ushort ("tei", 1)
+#fc1.add_param_ushort ("auto", 1)
+#fc1.send()
+
+#fc2 = maximus.create_fcall ("fc_station_init_config")
+#fc2.set_sta (station2)
+#fc2.add_param_ushort ("snid", 1)
+#fc2.add_param_ushort ("tei", 2)
+#fc2.add_param_ushort ("auto", 1)
+#fc2.send()
+
+##neighbour discovery
+#fc1 = maximus.create_fcall ("fc_station_discover")
+#fc1.set_sta (station1)
+#fc1.add_param_ushort ("qte", 1)
+#fc1.add_param_ushort ("tei0", 2)
+#param = pack ('Q', 0x123456789abc)[0:6]
+#fc1.add_param ("mac0", param)
+#fc1.send()
+
+#fc2 = maximus.create_fcall ("fc_station_discover")
+#fc2.set_sta (station2)
+#fc2.add_param_ushort ("qte", 1)
+#fc2.add_param_ushort ("tei0", 1)
+#param = pack ('Q', 0x23456789abcd)[0:6]
+#fc2.add_param ("mac0", param)
+#fc2.send()
+
+#fc1 = maximus.create_fcall ("fc_station_link_add")
+#fc1.set_sta (station1)
+#fc1.add_param_ushort ("type", 1)
+#fc1.add_param_ushort ("bcast", 0)
+#fc1.add_param_ushort ("mme", 0)
+#fc1.add_param_ushort ("lid", 1)
+#fc1.add_param_ushort ("tei", 2)
+#fc1.send()
+
+#fc1 = maximus.create_fcall ("fc_station_link_add")
+#fc1.set_sta (station1)
+#fc1.add_param_ushort ("type", 1)
+#fc1.add_param_ushort ("bcast", 0)
+#fc1.add_param_ushort ("mme", 1)
+#fc1.add_param_ushort ("lid", 248)
+#fc1.add_param_ushort ("tei", 2)
+#fc1.send()
+
+#fc2 = maximus.create_fcall ("fc_station_link_add")
+#fc2.set_sta (station2)
+#fc2.add_param_ushort ("type", 0)
+#fc2.add_param_ushort ("bcast", 0)
+#fc2.add_param_ushort ("mme", 0)
+#fc2.add_param_ushort ("lid", 1)
+#fc2.add_param_ushort ("tei", 1)
+#fc2.send()
+
+#fc2 = maximus.create_fcall ("fc_station_link_add") pld_maxlen = 0; /* TO DO : what length ? */
+
+#fc2.set_sta (station2)
+#fc2.add_param_ushort ("type", 0)
+#fc2.add_param_ushort ("bcast", 0)
+#fc2.add_param_ushort ("mme", 1)
+#fc2.add_param_ushort ("lid", 248)
+#fc2.add_param_ushort ("tei", 1)
+#fc2.send()
+
+## Add a buffer to the SAR
+#alloc_data_buffer (maximus, station2)
+
+##sends three buffers to the station 2
+#alloc_data_buffer (maximus, station2)
+#alloc_data_buffer (maximus, station2)
+#alloc_data_buffer (maximus, station2)
+
+##create three Ethernet Packets
+
+
+## read the ethernet full packet
+#packet_file = open ('../packet_max','r')
+#packet = packet_file.read()
+
+##first ethernet pack of 1500 bytes.
+#pack1 = packet
+
+##second one 424 bytes of length
+#pack2 = packet[0:423]
+
+##third one 1240 bytes
+#pack3 = packet[0:1239]
+
+##First one
+#frame0 = Eth()
+#frame0.src = '23:45:67:89:ab:cd'
+#frame0.dst = '12:34:56:78:9a:bc'
+#frame0.vlantag = 0x4D4E4F50
+#frame0.type = 0x5152
+#frame0.payload = pack1
+#frame0.send (maximus, station1)
+
+##Second frame
+#frame1 = Eth()
+#frame1.src = '23:45:67:89:ab:cd'
+#frame1.dst = '12:34:56:78:9a:bc'
+#frame1.vlantag = 0x4D4E4F50
+#frame1.type = 0x5152
+#frame1.payload = pack2;
+#frame1.send (maximus, station1)
+
+##third frame
+#frame2 = Eth()
+#frame2.src = '23:45:67:89:ab:cd'
+#frame2.dst = '12:34:56:78:9a:bc'
+#frame2.vlantag = 0x4D4E4F50
+#frame2.type = 0x5152
+#frame2.payload = pack3;
+#frame2.send (maximus, station1)
+
+##Catch the ethernet packets
+#rsp = recv(maximus, count=3, filter=my_eth_filter)
+
+#if (rsp[0].dst != frame0.dst) and (rsp[0].src != frame0.src) and (rsp[0].vlantag != frame0.vlantag) and (rsp[0].type != frame0.type):
+ #print "Frame0 dst dont correspond with the dst mac address of the frame"
+#else:
+ #if frame0.payload != rsp[0].payload:
+ #print "Error the frame 0 payload is deferent from the received one"
+
+#Catch packets sniffed by the INTERFACE/SNIFFER module
+#(note that, depending on # the SNIFFER setup, sniffed packets
+#can be beacons and/or MMEs in Tx and/or Rx)
+rsp = recv(maximus, count=1, filter=my_eth_filter)
+#Display (dump) sniffed packet...
+rsp[0].display()
+
+maximus.wait (1000000000)
+##while not sta1.is_idle() and not sta2.is_idle():
+ ##maximus.wait (10000)
+#while True:
+# maximus.process()
+
+
+##print the traces of the HLE
+#print "\n\n ************** Station 1 Traces *******************\n"
+#fc1 = maximus.create_fcall ("fc_hle_print_trace")
+#fc1.set_sta (sta1)
+#fc1.send()
+#
+#print ""
+#fc1 = maximus.create_fcall ("fc_cl_print_trace")
+#fc1.set_sta (sta1)
+#fc1.send()
+#
+#print ""
+#fc1 = maximus.create_fcall ("fc_sar_print_trace")
+#fc1.set_sta (sta1)
+#fc1.send()
+#
+#print "\n\n ************ Station 1 Traces END ******************\n"
+#
+sta1.remove()
+
+##print the traces of the HLE
+#print "\n\n ************** Station 2 Traces *******************\n"
+#fc1 = maximus.create_fcall ("fc_hle_print_trace")
+#fc1.set_sta (sta2)
+#fc1.send()
+#
+#print ""
+#fc1 = maximus.create_fcall ("fc_cl_print_trace")
+#fc1.set_sta (sta2)
+#fc1.send()
+#
+#print ""
+#fc1 = maximus.create_fcall ("fc_sar_print_trace")
+#fc1.set_sta (sta2)
+#fc1.send()
+#
+#print "\n\n ************ Station 2 Traces END ******************\n"
+#
+sta2.remove()
+
+sta3.remove()
+
+#####################################################
+#
+# Fin du script de test
+#
+#####################################################
+