|
INET Framework for OMNeT++/OMNEST
|
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