INET Framework for OMNeT++/OMNEST
cesnet.py
Go to the documentation of this file.
00001 import sys
00002 
00003 subor=file('scenario3.xml','r')
00004 
00005 i = 0
00006 
00007 ev_starts = []
00008 ev_endlimit = []
00009 convergence_time = []
00010 
00011 for riadok in subor:
00012     stlpce= riadok.split()
00013     if (len(stlpce) > 1) and (stlpce[0] == "<at"):
00014         ev_starts.append(int(stlpce[1][3:stlpce[1].rfind('"')]))
00015 subor.close()
00016 
00017     
00018 subor=file('out.txt','r')
00019 
00020 packet_send = 0
00021 packet_received = 0
00022 
00023 sent_time = {}
00024 receive_list = {}
00025 receive_delay = {}
00026 
00027 index = 0;
00028 event = ev_starts[index]
00029 started = 0
00030 
00031 for riadok in subor:
00032     stlpce= riadok.split()
00033     if (len(stlpce) > 1):
00034         if (len(stlpce) == 6) and (stlpce[1][0:8] == "appData-"):
00035             if (stlpce[0] == "Send:"):
00036                 packet_send = packet_send + 1
00037                 sent_time[stlpce[1]] = float(stlpce[5])
00038                 receive_list[stlpce[1]] = 0
00039                 if (float(event) <=  float(stlpce[5])):
00040                     started = 1;
00041                 if (started == 1) and (index + 1 < len(ev_starts)) and (float(ev_starts[index + 1]) <=  float(stlpce[5])):
00042                     ev_endlimit.append(float(event))
00043                     index = index + 1
00044                     if (index < len(ev_starts)):
00045                         event = ev_starts[index]
00046                     else:
00047                         event = 99999999
00048             if (stlpce[0] == "Arrive:"):
00049                 packet_received = packet_received + 1
00050                 receive_list[stlpce[1]] = 1
00051                 receive_delay[stlpce[1]] = float(stlpce[5]) - sent_time[stlpce[1]]
00052                 if (started == 1):
00053                     ev_endlimit.append(float(stlpce[5]))
00054                     started = 0
00055                     index = index + 1
00056                     if (index < len(ev_starts)):
00057                         event = ev_starts[index]
00058                     else:
00059                         event = 99999999
00060 if (started == 1):
00061     ev_endlimit.append(float(750.0))
00062 subor.close()
00063 
00064 subor=file('omnetpp.out','r')
00065 
00066 cas=0.0
00067 aktualny=0.0
00068 
00069 index = 0;
00070 event_st = ev_starts[index]
00071 event_lim = ev_endlimit[index]
00072 
00073 for riadok in subor:
00074     stlpce= riadok.split()
00075     if (len(stlpce) > 3) and (stlpce[0] == "**"):
00076         aktualny=float(stlpce[3][2:])
00077         if (aktualny > event_lim):
00078             if (cas > 0.0):
00079                 convergence_time.append(cas - event_st)
00080             else:
00081                 convergence_time.append(-1.0)
00082             index = index + 1
00083             cas = -1.0
00084             if (index < len(ev_endlimit)):
00085                 event_st = ev_starts[index]
00086                 event_lim = ev_endlimit[index]
00087             else:
00088                 event_st = 999999999.9
00089                 event_lim = 999999999.9
00090     if (riadok == 'Routing table was rebuilt.\n') and (aktualny > event_st):
00091         cas=aktualny
00092 subor.close()
00093 
00094 print "============================================"
00095 print "Convergence time"
00096 print "============================================"
00097 index = 1;
00098 for cislo in convergence_time:
00099     if(cislo > 0.0):
00100         print "%d->%d:" % (index,index + 1),"%.6f"%(cislo)
00101     else:
00102         print "%d->%d:" % (index,index + 1),"infinite"
00103     index = index + 1;
00104 
00105 print
00106 print "============================================"
00107 print "Sent packets: ",packet_send
00108 print "Dropped packets: ",packet_send - packet_received
00109 print "============================================"
00110 
00111 stage_delay = []
00112 if (len(sys.argv)>1) and (sys.argv[1] == "delay"):
00113     index = 0;
00114     inserted = 0;
00115     event = 100
00116     rangelist = range(len(receive_list))
00117     for number in rangelist:
00118         if (sent_time["appData-" + str(number)] > float(event) + 20.0):
00119             if (sent_time["appData-" + str(number)] < float(event) + 21.0):
00120                 if (receive_list["appData-" + str(number)] == 1) and (inserted == 0):
00121                     stage_delay.append(float(receive_delay["appData-" + str(number)]))
00122                     inserted = 1;
00123             else:
00124                 if (index < len(ev_starts)):
00125                     event = ev_starts[index]
00126                 else:
00127                     event = 99999999
00128                 index = index + 1
00129                 inserted = 0
00130                 
00131     index = 1;
00132     for cislo in stage_delay:
00133         print "Stage %d:" % (index),"%.6f"%(cislo)
00134         index = index + 1;
00135 
00136 
00137 conv_droped = []
00138 
00139 if (len(sys.argv)>1) and (sys.argv[1] == "dropped"):
00140     index = 0;
00141     droped = 0;
00142     event_st = float(ev_starts[index])
00143     event_end = float(ev_starts[index]) + convergence_time[index]
00144 
00145     rangelist = range(len(receive_list))
00146 
00147     for number in rangelist:
00148         if (sent_time["appData-" + str(number)] >= event_st):
00149             if (sent_time["appData-" + str(number)] <= event_end):
00150                 if (receive_list["appData-" + str(number)] == 0):
00151                     droped = droped + 1
00152             else:
00153                 conv_droped.append(droped)
00154                 droped = 0
00155                 index = index + 1
00156                 if (index < len(convergence_time)):
00157                     event_st = float(ev_starts[index])
00158                     event_end = float(ev_starts[index]) + convergence_time[index]
00159                 else:
00160                     event_st = 999999999.9
00161                     event_end = 999999999.9
00162 
00163 
00164     print
00165     print "============================================"
00166     print "Dropped packets"
00167     print "============================================"
00168     index = 1;
00169     for cislo in conv_droped:
00170         if(convergence_time[index-1] > 0.0):
00171             print "%d->%d:" % (index,index + 1),"%d"%(cislo)
00172         else:
00173             print "%d->%d:" % (index,index + 1),"all"
00174         index = index + 1;
00175 
00176 print