3 from werkzeug import secure_filename
4 from flask import Flask, render_template, request
9 from flask import Flask
23 def sumList(ctrArray):
25 for i in range(len(ctrArray)):
30 def sumListLength(ctrArray):
32 for i in range(len(ctrArray)):
33 tmp=tmp+len(ctrArray[i]);
37 #Test function to check server running
43 #Returns the list of configured groups
47 global configuredGroups
48 return configuredGroups
50 #Returns the list of configured changeids
51 @app.route('/changeids',
54 global configuredChangeIds
55 return configuredChangeIds
57 #Returns the list of configured fileprefixes
58 @app.route('/fileprefixes',
61 global configuredPrefixes
62 return configuredPrefixes
65 #Returns number of polls
66 @app.route('/ctr_requests',
68 def counter_requests():
70 return sumList(ctr_requests)
72 #Returns number of polls for all groups
73 @app.route('/groups/ctr_requests',
75 def group_counter_requests():
79 for i in range(len(groupNames)):
82 tmp=tmp+str(ctr_requests[i])
85 #Returns the total number of polls for a group
86 @app.route('/ctr_requests/<groupId>',
88 def counter_requests_group(groupId):
90 global groupNameIndexes
91 return str(ctr_requests[groupNameIndexes[groupId]])
93 #Returns number of poll replies
94 @app.route('/ctr_responses',
96 def counter_responses():
98 return sumList(ctr_responses)
100 #Returns number of poll replies for all groups
101 @app.route('/groups/ctr_responses',
103 def group_counter_responses():
107 for i in range(len(groupNames)):
110 tmp=tmp+str(ctr_responses[i])
113 #Returns the total number of poll replies for a group
114 @app.route('/ctr_responses/<groupId>',
116 def counter_responses_group(groupId):
118 global groupNameIndexes
119 return str(ctr_responses[groupNameIndexes[groupId]])
121 #Returns the total number of files
122 @app.route('/ctr_files',
126 return sumList(ctr_files)
128 #Returns the total number of file for all groups
129 @app.route('/groups/ctr_files',
131 def group_counter_files():
135 for i in range(len(groupNames)):
138 tmp=tmp+str(ctr_files[i])
141 #Returns the total number of files for a group
142 @app.route('/ctr_files/<groupId>',
144 def counter_files_group(groupId):
146 global groupNameIndexes
147 return str(ctr_files[groupNameIndexes[groupId]])
150 #Returns number of unique files
151 @app.route('/ctr_unique_files',
153 def counter_uniquefiles():
155 return sumListLength(fileMap)
157 #Returns number of unique files for all groups
158 @app.route('/groups/ctr_unique_files',
160 def group_counter_uniquefiles():
164 for i in range(len(groupNames)):
167 tmp=tmp+str(len(fileMap[i]))
170 #Returns the total number of unique files for a group
171 @app.route('/ctr_unique_files/<groupId>',
173 def counter_uniquefiles_group(groupId):
175 global groupNameIndexes
176 return str(len(fileMap[groupNameIndexes[groupId]]))
179 @app.route('/tc_info',
185 #Returns number of events
186 @app.route('/ctr_events',
188 def counter_events():
190 return sumList(ctr_events)
192 #Returns number of events for all groups
193 @app.route('/groups/ctr_events',
195 def group_counter_events():
199 for i in range(len(groupNames)):
202 tmp=tmp+str(ctr_events[i])
205 #Returns the total number of events for a group
206 @app.route('/ctr_events/<groupId>',
208 def counter_events_group(groupId):
210 global groupNameIndexes
211 return str(ctr_events[groupNameIndexes[groupId]])
213 #Returns execution time in mm:ss
214 @app.route('/execution_time',
219 stopTime = time.time()
220 minutes, seconds = divmod(stopTime-startTime, 60)
221 return "{:0>2}:{:0>2}".format(int(minutes),int(seconds))
223 #Returns the timestamp for first poll
224 @app.route('/exe_time_first_poll',
226 def exe_time_first_poll():
230 for i in range(len(groupNames)):
231 if (firstPollTime[i] > tmp):
232 tmp = firstPollTime[i]
236 minutes, seconds = divmod(time.time()-tmp, 60)
237 return "{:0>2}:{:0>2}".format(int(minutes),int(seconds))
239 #Returns the timestamp for first poll for all groups
240 @app.route('/groups/exe_time_first_poll',
242 def group_exe_time_first_poll():
247 for i in range(len(groupNames)):
250 if (firstPollTime[i] == 0):
253 minutes, seconds = divmod(time.time()-firstPollTime[i], 60)
254 tmp=tmp+"{:0>2}:{:0>2}".format(int(minutes),int(seconds))
257 #Returns the timestamp for first poll for a group
258 @app.route('/exe_time_first_poll/<groupId>',
260 def exe_time_first_poll_group(groupId):
262 global groupNameIndexes
264 if (firstPollTime[groupNameIndexes[groupId]] == 0):
266 minutes, seconds = divmod(time.time()-firstPollTime[groupNameIndexes[groupId]], 60)
267 return "{:0>2}:{:0>2}".format(int(minutes),int(seconds))
269 #Starts event delivery
274 runningState="Started"
277 #Stops event delivery
282 runningState="Stopped"
285 #Returns the running state
286 @app.route('/status',
292 #Returns number of unique PNFs
293 @app.route('/ctr_unique_PNFs',
295 def counter_uniquePNFs():
297 return sumListLength(pnfMap)
299 #Returns number of unique PNFs for all groups
300 @app.route('/groups/ctr_unique_PNFs',
302 def group_counter_uniquePNFs():
306 for i in range(len(groupNames)):
309 tmp=tmp+str(len(pnfMap[i]))
312 #Returns the unique PNFs for a group
313 @app.route('/ctr_unique_PNFs/<groupId>',
315 def counter_uniquePNFs_group(groupId):
317 global groupNameIndexes
318 return str(len(pnfMap[groupNameIndexes[groupId]]))
321 #Messages polling function
323 "/events/unauthenticated.VES_NOTIFICATION_OUTPUT/<consumerGroup>/<consumerId>",
325 def MR_reply(consumerGroup, consumerId):
331 global groupNameIndexes
335 groupIndex = groupNameIndexes[consumerGroup]
336 print("Setting groupIndex: " + str(groupIndex))
338 reqCtr = ctr_requests[groupIndex]
339 changeId = changeIds[groupIndex][reqCtr%len(changeIds[groupIndex])]
340 print("Setting changeid: " + changeId)
341 filePrefix = filePrefixes[changeId]
342 print("Setting file name prefix: " + filePrefix)
344 if (firstPollTime[groupIndex] == 0):
345 firstPollTime[groupIndex] = time.time()
347 ctr_requests[groupIndex] = ctr_requests[groupIndex] + 1
348 print("MR: poll request#: " + str(ctr_requests[groupIndex]))
350 if (runningState == "Stopped"):
351 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
352 return buildOkResponse("[]")
357 return tc100(groupIndex, changeId, filePrefix, "sftp", "1MB")
359 return tc100(groupIndex, changeId, filePrefix, "sftp", "5MB")
361 return tc100(groupIndex, changeId, filePrefix, "sftp", "50MB")
364 return tc110(groupIndex, changeId, filePrefix, "sftp")
366 return tc111(groupIndex, changeId, filePrefix, "sftp")
368 return tc112(groupIndex, changeId, filePrefix, "sftp")
370 return tc113(groupIndex, changeId, filePrefix, "sftp")
373 return tc120(groupIndex, changeId, filePrefix, "sftp")
375 return tc121(groupIndex, changeId, filePrefix, "sftp")
377 return tc122(groupIndex, changeId, filePrefix, "sftp")
380 return tc1000(groupIndex, changeId, filePrefix, "sftp")
382 return tc1001(groupIndex, changeId, filePrefix, "sftp")
385 return tc1100(groupIndex, changeId, filePrefix, "sftp","1MB")
387 return tc1100(groupIndex, changeId, filePrefix, "sftp","50MB")
389 return tc1100(groupIndex, changeId, filePrefix, "sftp","50MB")
391 return tc1200(groupIndex, changeId, filePrefix, "sftp","1MB")
393 return tc1200(groupIndex, changeId, filePrefix, "sftp","5MB")
395 return tc1200(groupIndex, changeId, filePrefix, "sftp","50MB")
397 return tc1300(groupIndex, changeId, filePrefix, "sftp","1MB")
399 return tc1300(groupIndex, changeId, filePrefix, "sftp","5MB")
401 return tc1300(groupIndex, changeId, filePrefix, "sftp","50MB")
404 return tc1500(groupIndex, changeId, filePrefix, "sftp","1MB")
407 return tc500(groupIndex, changeId, filePrefix, "sftp","1MB")
409 return tc500(groupIndex, changeId, filePrefix, "sftp","5MB")
411 return tc500(groupIndex, changeId, filePrefix, "sftp","50MB")
413 return tc510(groupIndex, changeId, filePrefix, "sftp", "1MB")
415 return tc511(groupIndex, changeId, filePrefix, "sftp", "1KB")
418 return tc510(groupIndex, changeId, filePrefix, "sftp", "50MB")
421 return tc710(groupIndex, changeId, filePrefix, "sftp")
425 return tc100(groupIndex, changeId, filePrefix, "ftps", "1MB")
427 return tc100(groupIndex, changeId, filePrefix, "ftps", "5MB")
429 return tc100(groupIndex, changeId, filePrefix, "ftps", "50MB")
432 return tc110(groupIndex, changeId, filePrefix, "ftps")
434 return tc111(groupIndex, changeId, filePrefix, "ftps")
436 return tc112(groupIndex, changeId, filePrefix, "ftps")
438 return tc113(groupIndex, changeId, filePrefix, "ftps")
441 return tc120(groupIndex, changeId, filePrefix, "ftps")
443 return tc121(groupIndex, changeId, filePrefix, "ftps")
445 return tc122(groupIndex, changeId, filePrefix, "ftps")
448 return tc1000(groupIndex, changeId, filePrefix, "ftps")
450 return tc1001(groupIndex, changeId, filePrefix, "ftps")
453 return tc1100(groupIndex, changeId, filePrefix, "ftps","1MB")
455 return tc1100(groupIndex, changeId, filePrefix, "ftps","50MB")
457 return tc1100(groupIndex, changeId, filePrefix, "ftps","50MB")
459 return tc1200(groupIndex, changeId, filePrefix, "ftps","1MB")
461 return tc1200(groupIndex, changeId, filePrefix, "ftps","5MB")
463 return tc1200(groupIndex, changeId, filePrefix, "ftps","50MB")
465 return tc1300(groupIndex, changeId, filePrefix, "ftps","1MB")
467 return tc1300(groupIndex, changeId, filePrefix, "ftps","5MB")
469 return tc1300(groupIndex, changeId, filePrefix, "ftps","50MB")
472 return tc1500(groupIndex, changeId, filePrefix, "ftps","1MB")
475 return tc500(groupIndex, changeId, filePrefix, "ftps","1MB")
477 return tc500(groupIndex, changeId, filePrefix, "ftps","5MB")
479 return tc500(groupIndex, changeId, filePrefix, "ftps","50MB")
481 return tc510(groupIndex, changeId, filePrefix, "ftps", "1MB")
483 return tc511(groupIndex, changeId, filePrefix, "ftps", "1KB")
485 return tc510(groupIndex, changeId, filePrefix, "ftps", "50MB")
487 return tc710(groupIndex, changeId, filePrefix, "ftps")
490 #### Test case functions
493 def tc100(groupIndex, changeId, filePrefix, ftpType, fileSize):
498 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
500 if (ctr_responses[groupIndex] > 1):
501 return buildOkResponse("[]")
503 seqNr = (ctr_responses[groupIndex]-1)
505 nodeName = createNodeName(nodeIndex)
506 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
507 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName,ftpType,"onap","pano",nodeIndex) + getEventEnd()
508 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
509 ctr_events[groupIndex] = ctr_events[groupIndex]+1
510 return buildOkResponse("["+msg+"]")
512 #def tc101(groupIndex, ftpType):
513 # global ctr_responses
516 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
518 # if (ctr_responses[groupIndex] > 1):
519 # return buildOkResponse("[]")
521 # seqNr = (ctr_responses[groupIndex]-1)
522 # nodeName = createNodeName(0)
523 # fileName = createFileName(groupIndex, nodeName, seqNr, "5MB")
524 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
525 # fileMap[groupIndex][seqNr] = seqNr
526 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
527 # return buildOkResponse("["+msg+"]")
529 #def tc102(groupIndex, ftpType):
530 # global ctr_responses
533 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
535 # if (ctr_responses[groupIndex] > 1):
536 # return buildOkResponse("[]")
538 # seqNr = (ctr_responses[groupIndex]-1)
539 # nodeName = createNodeName(0)
540 # fileName = createFileName(groupIndex, nodeName, seqNr, "50MB")
541 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
542 # fileMap[groupIndex][seqNr] = seqNr
543 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
544 # return buildOkResponse("["+msg+"]")
546 def tc110(groupIndex, changeId, filePrefix, ftpType):
551 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
553 if (ctr_responses[groupIndex] > 100):
554 return buildOkResponse("[]")
556 seqNr = (ctr_responses[groupIndex]-1)
558 nodeName = createNodeName(nodeIndex)
559 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
560 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName,ftpType,"onap","pano",nodeIndex) + getEventEnd()
561 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
562 ctr_events[groupIndex] = ctr_events[groupIndex]+1
563 return buildOkResponse("["+msg+"]")
565 def tc111(groupIndex, changeId, filePrefix, ftpType):
570 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
572 if (ctr_responses[groupIndex] > 100):
573 return buildOkResponse("[]")
576 nodeName = createNodeName(nodeIndex)
577 msg = getEventHead(groupIndex, changeId, nodeName)
580 seqNr = i+(ctr_responses[groupIndex]-1)
581 if i != 0: msg = msg + ","
582 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
583 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
584 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
586 msg = msg + getEventEnd()
587 ctr_events[groupIndex] = ctr_events[groupIndex]+1
589 return buildOkResponse("["+msg+"]")
591 def tc112(groupIndex, changeId, filePrefix, ftpType):
596 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
598 if (ctr_responses[groupIndex] > 100):
599 return buildOkResponse("[]")
602 nodeName = createNodeName(nodeIndex)
603 msg = getEventHead(groupIndex, changeId, nodeName)
606 seqNr = i+(ctr_responses[groupIndex]-1)
607 if i != 0: msg = msg + ","
608 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
609 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
610 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
612 msg = msg + getEventEnd()
613 ctr_events[groupIndex] = ctr_events[groupIndex]+1
615 return buildOkResponse("["+msg+"]")
617 def tc113(groupIndex, changeId, filePrefix, ftpType):
622 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
624 if (ctr_responses[groupIndex] > 1):
625 return buildOkResponse("[]")
628 nodeName = createNodeName(nodeIndex)
631 for evts in range(100): # build 100 evts
634 msg = msg + getEventHead(groupIndex, changeId, nodeName)
635 for i in range(100): # build 100 files
636 seqNr = i+evts+100*(ctr_responses[groupIndex]-1)
637 if i != 0: msg = msg + ","
638 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
639 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
640 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
642 msg = msg + getEventEnd()
643 ctr_events[groupIndex] = ctr_events[groupIndex]+1
645 return buildOkResponse("["+msg+"]")
648 def tc120(groupIndex, changeId, filePrefix, ftpType):
653 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
656 nodeName = createNodeName(nodeIndex)
658 if (ctr_responses[groupIndex] > 100):
659 return buildOkResponse("[]")
661 if (ctr_responses[groupIndex] % 10 == 2):
662 return # Return nothing
664 if (ctr_responses[groupIndex] % 10 == 3):
665 return buildOkResponse("") # Return empty message
667 if (ctr_responses[groupIndex] % 10 == 4):
668 return buildOkResponse(getEventHead(groupIndex, changeId, nodeName)) # Return part of a json event
670 if (ctr_responses[groupIndex] % 10 == 5):
671 return buildEmptyResponse(404) # Return empty message with status code
673 if (ctr_responses[groupIndex] % 10 == 6):
677 msg = getEventHead(groupIndex, changeId, nodeName)
680 seqNr = i+(ctr_responses[groupIndex]-1)
681 if i != 0: msg = msg + ","
682 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
683 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
684 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
686 msg = msg + getEventEnd()
687 ctr_events[groupIndex] = ctr_events[groupIndex]+1
689 return buildOkResponse("["+msg+"]")
691 def tc121(groupIndex, changeId, filePrefix, ftpType):
696 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
698 if (ctr_responses[groupIndex] > 100):
699 return buildOkResponse("[]")
702 nodeName = createNodeName(nodeIndex)
703 msg = getEventHead(groupIndex, changeId, nodeName)
707 seqNr = i+(ctr_responses[groupIndex]-1)
708 if (seqNr%10 == 0): # Every 10th file is "missing"
709 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
711 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
712 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
714 if i != 0: msg = msg + ","
715 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
717 msg = msg + getEventEnd()
718 ctr_events[groupIndex] = ctr_events[groupIndex]+1
720 return buildOkResponse("["+msg+"]")
722 def tc122(groupIndex, changeId, filePrefix, ftpType):
727 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
729 if (ctr_responses[groupIndex] > 100):
730 return buildOkResponse("[]")
733 nodeName = createNodeName(nodeIndex)
734 msg = getEventHead(groupIndex, changeId, nodeName)
737 fileName = createFileName(groupIndex, filePrefix, nodeName, 0, "1MB") # All files identical names
738 if i != 0: msg = msg + ","
739 msg = msg + getEventName(fileName,ftpType,"onap","pano", nodeIndex)
741 fileMap[groupIndex][0] = 0
742 msg = msg + getEventEnd()
743 ctr_events[groupIndex] = ctr_events[groupIndex]+1
745 return buildOkResponse("["+msg+"]")
748 def tc1000(groupIndex, changeId, filePrefix, ftpType):
753 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
756 nodeName = createNodeName(nodeIndex)
757 msg = getEventHead(groupIndex, changeId, nodeName)
760 seqNr = i+(ctr_responses[groupIndex]-1)
761 if i != 0: msg = msg + ","
762 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
763 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
764 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
766 msg = msg + getEventEnd()
767 ctr_events[groupIndex] = ctr_events[groupIndex]+1
769 return buildOkResponse("["+msg+"]")
771 def tc1001(groupIndex, changeId, filePrefix, ftpType):
776 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
779 nodeName = createNodeName(nodeIndex)
780 msg = getEventHead(groupIndex, changeId, nodeName)
783 seqNr = i+(ctr_responses[groupIndex]-1)
784 if i != 0: msg = msg + ","
785 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
786 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
787 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
789 msg = msg + getEventEnd()
790 ctr_events[groupIndex] = ctr_events[groupIndex]+1
792 return buildOkResponse("["+msg+"]")
795 def tc1100(groupIndex, changeId, filePrefix, ftpType, filesize):
800 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
804 batch = (ctr_responses[groupIndex]-1)%20;
806 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
809 nodeIndex=pnfs + batch*35
810 nodeName = createNodeName(nodeIndex)
811 msg = msg + getEventHead(groupIndex, changeId, nodeName)
813 for i in range(100): # 100 files per event
814 seqNr = i + int((ctr_responses[groupIndex]-1)/20);
815 if i != 0: msg = msg + ","
816 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
817 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
818 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
819 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
821 msg = msg + getEventEnd()
822 ctr_events[groupIndex] = ctr_events[groupIndex]+1
824 return buildOkResponse("["+msg+"]")
826 def tc1200(groupIndex, changeId, filePrefix, ftpType, filesize):
831 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
835 batch = (ctr_responses[groupIndex]-1)%20;
837 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
840 nodeIndex=pnfs + batch*35
841 nodeName = createNodeName(nodeIndex)
842 msg = msg + getEventHead(groupIndex, changeId, nodeName)
844 for i in range(100): # 100 files per event, all new files
845 seqNr = i+100 * int((ctr_responses[groupIndex]-1)/20);
846 if i != 0: msg = msg + ","
847 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
848 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
849 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
850 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
852 msg = msg + getEventEnd()
853 ctr_events[groupIndex] = ctr_events[groupIndex]+1
855 return buildOkResponse("["+msg+"]")
858 def tc1300(groupIndex, changeId, filePrefix, ftpType, filesize):
864 if (rop_counter == 0):
865 rop_timestamp = time.time()
867 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
869 #Start a event deliver for all 700 nodes every 15min
870 rop = time.time()-rop_timestamp
871 if ((rop < 900) & (rop_counter%20 == 0) & (rop_counter != 0)):
872 return buildOkResponse("[]")
874 if (rop_counter%20 == 0) & (rop_counter > 0):
875 rop_timestamp = rop_timestamp+900
877 rop_counter = rop_counter+1
881 batch = (rop_counter-1)%20;
883 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
886 nodeIndex=pnfs + batch*35
887 nodeName = createNodeName(nodeIndex)
888 msg = msg + getEventHead(groupIndex, changeId, nodeName)
890 for i in range(100): # 100 files per event
891 seqNr = i + int((rop_counter-1)/20);
892 if i != 0: msg = msg + ","
893 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
894 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
895 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
896 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
898 msg = msg + getEventEnd()
899 ctr_events[groupIndex] = ctr_events[groupIndex]+1
901 return buildOkResponse("["+msg+"]")
903 def tc1500(groupIndex, changeId, filePrefix, ftpType, filesize):
909 if (rop_counter == 0):
910 rop_timestamp = time.time()
912 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
914 if (ctr_responses[groupIndex] <= 2000 ): #first 25h of event doess not care of 15min rop timer
918 batch = (ctr_responses[groupIndex]-1)%20;
920 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
924 nodeIndex=pnfs + batch*35
925 nodeName = createNodeName(nodeIndex)
926 msg = msg + getEventHead(groupIndex, changeId, nodeName)
928 for i in range(100): # 100 files per event
929 seqNr = i + int((ctr_responses[groupIndex]-1)/20);
930 if i != 0: msg = msg + ","
932 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
934 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
935 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
936 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
937 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
940 msg = msg + getEventEnd()
941 ctr_events[groupIndex] = ctr_events[groupIndex]+1
943 rop_counter = rop_counter+1
944 return buildOkResponse("["+msg+"]")
946 #Start an event delivery for all 700 nodes every 15min
947 rop = time.time()-rop_timestamp
948 if ((rop < 900) & (rop_counter%20 == 0) & (rop_counter != 0)):
949 return buildOkResponse("[]")
951 if (rop_counter%20 == 0):
952 rop_timestamp = time.time()
954 rop_counter = rop_counter+1
958 batch = (rop_counter-1)%20;
960 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
963 nodeIndex=pnfs + batch*35
964 nodeName = createNodeName(nodeIndex)
965 msg = msg + getEventHead(groupIndex, changeId, nodeName)
967 for i in range(100): # 100 files per event
968 seqNr = i + int((rop_counter-1)/20);
969 if i != 0: msg = msg + ","
970 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
971 msg = msg + getEventName(fileName,ftpType,"onap","pano", nodeIndex)
972 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
973 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
975 msg = msg + getEventEnd()
976 ctr_events[groupIndex] = ctr_events[groupIndex]+1
978 return buildOkResponse("["+msg+"]")
980 def tc500(groupIndex, changeId, filePrefix, ftpType, filesize):
985 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
987 if (ctr_responses[groupIndex] > 1):
988 return buildOkResponse("[]")
993 for pnfs in range(700):
996 nodeName = createNodeName(pnfs)
997 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1001 if i != 0: msg = msg + ","
1002 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
1003 msg = msg + getEventName(fileName,ftpType,"onap","pano",pnfs)
1004 seqNr = seqNr + pnfs*1000000 #Create unique id for this node and file
1005 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
1007 msg = msg + getEventEnd()
1008 ctr_events[groupIndex] = ctr_events[groupIndex]+1
1010 return buildOkResponse("["+msg+"]")
1012 def tc510(groupIndex, changeId, filePrefix, ftpType, fileSize):
1013 global ctr_responses
1017 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1019 if (ctr_responses[groupIndex] > 5):
1020 return buildOkResponse("[]")
1024 for pnfs in range(700): # build events for 700 MEs
1027 nodeName = createNodeName(pnfs)
1028 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1029 seqNr = (ctr_responses[groupIndex]-1)
1030 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1031 msg = msg + getEventName(fileName,ftpType,"onap","pano",pnfs)
1032 seqNr = seqNr + pnfs*1000000 #Create unique id for this node and file
1033 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
1034 msg = msg + getEventEnd()
1035 ctr_events[groupIndex] = ctr_events[groupIndex]+1
1037 return buildOkResponse("["+msg+"]")
1039 def tc511(groupIndex, changeId, filePrefix, ftpType, fileSize):
1040 global ctr_responses
1044 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1046 if (ctr_responses[groupIndex] > 5):
1047 return buildOkResponse("[]")
1051 for pnfs in range(700): # build events for 700 MEs
1054 nodeName = createNodeName(pnfs)
1055 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1056 seqNr = (ctr_responses[groupIndex]-1)
1057 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1058 msg = msg + getEventName(fileName,ftpType,"onap","pano",pnfs)
1059 seqNr = seqNr + pnfs*1000000 #Create unique id for this node and file
1060 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
1061 msg = msg + getEventEnd()
1062 ctr_events[groupIndex] = ctr_events[groupIndex]+1
1064 return buildOkResponse("["+msg+"]")
1066 def tc710(groupIndex, changeId, filePrefix, ftpType):
1067 global ctr_responses
1071 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1073 if (ctr_responses[groupIndex] > 100):
1074 return buildOkResponse("[]")
1078 batch = (ctr_responses[groupIndex]-1)%20;
1080 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
1083 nodeIndex=pnfs + batch*35
1084 nodeName = createNodeName(nodeIndex)
1085 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1087 for i in range(100): # 100 files per event
1088 seqNr = i + int((ctr_responses[groupIndex]-1)/20);
1089 if i != 0: msg = msg + ","
1090 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
1091 msg = msg + getEventName(fileName,ftpType,"onap","pano",nodeIndex)
1092 seqNr = seqNr + (pnfs+batch*35)*1000000 #Create unique id for this node and file
1093 fileMap[groupIndex][seqNr*hash(filePrefix)] = seqNr
1095 msg = msg + getEventEnd()
1096 ctr_events[groupIndex] = ctr_events[groupIndex]+1
1098 return buildOkResponse("["+msg+"]")
1101 #### Functions to build json messages and respones ####
1103 def createNodeName(index):
1104 return "PNF"+str(index);
1106 def createFileName(groupIndex, filePrefix, nodeName, index, size):
1108 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1109 return filePrefix+"20000626.2315+0200-2330+0200_" + nodeName + "-" + str(index) + "-" +size + ".tar.gz";
1111 def createMissingFileName(groupIndex, filePrefix, nodeName, index, size):
1113 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1114 return filePrefix+"MissingFile_" + nodeName + "-" + str(index) + "-" +size + ".tar.gz";
1117 # Function to build fixed beginning of an event
1119 def getEventHead(groupIndex, changeId, nodename):
1121 pnfMap[groupIndex].add(nodename)
1125 "commonEventHeader": {
1126 "startEpochMicrosec": 8745745764578,
1127 "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1",
1128 "timeZoneOffset": "UTC+05.30",
1129 "internalHeaderFields": {
1130 "collectorTimeStamp": "Tue, 09 18 2018 10:56:52 UTC"
1132 "priority": "Normal",
1134 "reportingEntityName": \"""" + nodename + """",
1136 "domain": "notification",
1137 "lastEpochMicrosec": 8745745764578,
1138 "eventName": "Noti_RnNode-Ericsson_FileReady",
1139 "vesEventListenerVersion": "7.0.1",
1140 "sourceName": \"""" + nodename + """"
1142 "notificationFields": {
1143 "notificationFieldsVersion": "2.0",
1144 "changeType": "FileReady",
1145 "changeIdentifier": \"""" + changeId + """",
1146 "arrayOfNamedHashMap": [
1150 # Function to build the variable part of an event
1151 def getEventName(fn,type,user,passwd, nodeIndex):
1152 nodeIndex=nodeIndex%num_ftp_servers
1153 port = sftp_ports[nodeIndex]
1154 ip = sftp_hosts[nodeIndex]
1155 if (type == "ftps"):
1156 port = ftps_ports[nodeIndex]
1157 ip = ftps_hosts[nodeIndex]
1160 "name": \"""" + fn + """",
1162 "fileFormatType": "org.3GPP.32.435#measCollec",
1163 "location": \"""" + type + """://""" + user + """:""" + passwd + """@""" + ip + """:""" + str(port) + """/""" + fn + """",
1164 "fileFormatVersion": "V10",
1165 "compression": "gzip"
1170 # Function to build fixed end of an event
1180 # Function to build an OK reponse from a message string
1181 def buildOkResponse(msg):
1182 response = app.response_class(
1183 response=str.encode(msg),
1185 mimetype='application/json')
1188 # Function to build an empty message with status
1189 def buildEmptyResponse(status_code):
1190 response = app.response_class(
1191 response=str.encode(""),
1193 mimetype='application/json')
1197 if __name__ == "__main__":
1199 # IP addresses to use for ftp servers, using localhost if not env var is set
1200 sftp_sims = os.environ.get('SFTP_SIMS', 'localhost:1022')
1201 ftps_sims = os.environ.get('FTPS_SIMS', 'localhost:21')
1202 num_ftp_servers = int(os.environ.get('NUM_FTP_SERVERS', 1))
1204 print("Configured sftp sims: " + sftp_sims)
1205 print("Configured ftps sims: " + ftps_sims)
1206 print("Configured number of ftp servers: " + str(num_ftp_servers))
1208 tmp=sftp_sims.split(',')
1209 for i in range(len(tmp)):
1210 hp=tmp[i].split(':')
1211 sftp_hosts.append(hp[0])
1212 sftp_ports.append(hp[1])
1214 tmp=ftps_sims.split(',')
1215 for i in range(len(tmp)):
1216 hp=tmp[i].split(':')
1217 ftps_hosts.append(hp[0])
1218 ftps_ports.append(hp[1])
1220 groups = os.environ.get('MR_GROUPS', 'OpenDcae-c12:PM_MEAS_FILES')
1221 print("Groups detected: " + groups )
1222 configuredPrefixes = os.environ.get('MR_FILE_PREFIX_MAPPING', 'PM_MEAS_FILES:A')
1224 if (len(groups) == 0 ):
1225 groups='OpenDcae-c12:PM_MEAS_FILES'
1226 print("Using default group: " + groups)
1228 print("Configured groups: " + groups)
1230 if (len(configuredPrefixes) == 0 ):
1231 configuredPrefixes='PM_MEAS_FILES:A'
1232 print("Using default changeid to file prefix mapping: " + configuredPrefixes)
1234 print("Configured changeid to file prefix mapping: " + configuredPrefixes)
1241 startTime = time.time()
1243 runningState = "Started"
1244 #Keeps all responded file names
1246 #Keeps all responded PNF names
1248 #Handles rop periods for tests that deliveres events every 15 min
1250 rop_timestamp = time.time()
1252 #List of configured group names
1254 #Mapping between group name and index in groupNames
1255 groupNameIndexes = {}
1256 #String of configured groups
1257 configuredGroups = ""
1258 #String of configured change identifiers
1259 configuredChangeIds = ""
1260 #List of changed identifiers
1262 #List of filePrefixes
1265 tmp=groups.split(',')
1266 for i in range(len(tmp)):
1268 for j in range(len(g)):
1271 if (len(configuredGroups) > 0):
1272 configuredGroups=configuredGroups+","
1273 configuredGroups=configuredGroups+g[0]
1274 groupNames.append(g[0])
1275 groupNameIndexes[g[0]] = i
1276 changeIds.append({})
1277 ctr_responses.append(0)
1278 ctr_requests.append(0)
1280 ctr_events.append(0)
1281 firstPollTime.append(0)
1282 pnfMap.append(set())
1284 if (len(configuredChangeIds) > 0):
1285 configuredChangeIds=configuredChangeIds+","
1287 changeIds[i][j-1]=g[j]
1289 configuredChangeIds=configuredChangeIds+":"
1290 configuredChangeIds=configuredChangeIds+g[j]
1292 # Create a map between changeid and file name prefix
1293 tmp=configuredPrefixes.split(',')
1294 for i in range(len(tmp)):
1296 filePrefixes[p[0]] = p[1]
1301 parser = argparse.ArgumentParser()
1303 #SFTP TCs with single ME
1304 parser.add_argument(
1306 action='store_true',
1307 help='TC100 - One ME, SFTP, 1 1MB file, 1 event')
1308 parser.add_argument(
1310 action='store_true',
1311 help='TC101 - One ME, SFTP, 1 5MB file, 1 event')
1312 parser.add_argument(
1314 action='store_true',
1315 help='TC102 - One ME, SFTP, 1 50MB file, 1 event')
1317 parser.add_argument(
1319 action='store_true',
1320 help='TC110 - One ME, SFTP, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1321 parser.add_argument(
1323 action='store_true',
1324 help='TC111 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1325 parser.add_argument(
1327 action='store_true',
1328 help='TC112 - One ME, SFTP, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1329 parser.add_argument(
1331 action='store_true',
1332 help='TC113 - One ME, SFTP, 1MB files, 100 files per event, 100 events. All events in one poll.')
1334 parser.add_argument(
1336 action='store_true',
1337 help='TC120 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% of replies each: no response, empty message, slow response, 404-error, malformed json')
1338 parser.add_argument(
1340 action='store_true',
1341 help='TC121 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1342 parser.add_argument(
1344 action='store_true',
1345 help='TC122 - One ME, SFTP, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1347 parser.add_argument(
1349 action='store_true',
1350 help='TC1000 - One ME, SFTP, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1351 parser.add_argument(
1353 action='store_true',
1354 help='TC1001 - One ME, SFTP, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1356 # SFTP TCs with multiple MEs
1357 parser.add_argument(
1359 action='store_true',
1360 help='TC500 - 700 MEs, SFTP, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1362 parser.add_argument(
1364 action='store_true',
1365 help='TC501 - 700 MEs, SFTP, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1367 parser.add_argument(
1369 action='store_true',
1370 help='TC502 - 700 MEs, SFTP, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1372 parser.add_argument(
1374 action='store_true',
1375 help='TC510 - 700 MEs, SFTP, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1377 parser.add_argument(
1379 action='store_true',
1380 help='TC511 - 700 MEs, SFTP, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1382 parser.add_argument(
1384 action='store_true',
1385 help='TC550 - 700 MEs, SFTP, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1387 parser.add_argument(
1389 action='store_true',
1390 help='TC710 - 700 MEs, SFTP, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1392 parser.add_argument(
1394 action='store_true',
1395 help='TC1100 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1396 parser.add_argument(
1398 action='store_true',
1399 help='TC1101 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1400 parser.add_argument(
1402 action='store_true',
1403 help='TC1102 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1405 parser.add_argument(
1407 action='store_true',
1408 help='TC1200 - 700 ME, SFTP, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1409 parser.add_argument(
1411 action='store_true',
1412 help='TC1201 - 700 ME, SFTP, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1413 parser.add_argument(
1415 action='store_true',
1416 help='TC1202 - 700 ME, SFTP, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1418 parser.add_argument(
1420 action='store_true',
1421 help='TC1300 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1422 parser.add_argument(
1424 action='store_true',
1425 help='TC1301 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1426 parser.add_argument(
1428 action='store_true',
1429 help='TC1302 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1431 parser.add_argument(
1433 action='store_true',
1434 help='TC1500 - 700 ME, SFTP, 1MB files, 100 files per event, 35 events per poll, simulating 25h backlog of decreasing number of outdated files and then 20 event polls every 15min for 1h')
1436 # FTPS TCs with single ME
1437 parser.add_argument(
1439 action='store_true',
1440 help='TC200 - One ME, FTPS, 1 1MB file, 1 event')
1441 parser.add_argument(
1443 action='store_true',
1444 help='TC201 - One ME, FTPS, 1 5MB file, 1 event')
1445 parser.add_argument(
1447 action='store_true',
1448 help='TC202 - One ME, FTPS, 1 50MB file, 1 event')
1450 parser.add_argument(
1452 action='store_true',
1453 help='TC210 - One ME, FTPS, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1454 parser.add_argument(
1456 action='store_true',
1457 help='TC211 - One ME, FTPS, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1458 parser.add_argument(
1460 action='store_true',
1461 help='TC212 - One ME, FTPS, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1462 parser.add_argument(
1464 action='store_true',
1465 help='TC213 - One ME, FTPS, 1MB files, 100 files per event, 100 events. All events in one poll.')
1467 parser.add_argument(
1469 action='store_true',
1470 help='TC220 - One ME, FTPS, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% of replies each: no response, empty message, slow response, 404-error, malformed json')
1471 parser.add_argument(
1473 action='store_true',
1474 help='TC221 - One ME, FTPS, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1475 parser.add_argument(
1477 action='store_true',
1478 help='TC222 - One ME, FTPS, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1480 parser.add_argument(
1482 action='store_true',
1483 help='TC2000 - One ME, FTPS, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1484 parser.add_argument(
1486 action='store_true',
1487 help='TC2001 - One ME, FTPS, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1490 parser.add_argument(
1492 action='store_true',
1493 help='TC2100 - 700 ME, FTPS, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1494 parser.add_argument(
1496 action='store_true',
1497 help='TC2101 - 700 ME, FTPS, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1498 parser.add_argument(
1500 action='store_true',
1501 help='TC2102 - 700 ME, FTPS, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1503 parser.add_argument(
1505 action='store_true',
1506 help='TC2200 - 700 ME, FTPS, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1507 parser.add_argument(
1509 action='store_true',
1510 help='TC2201 - 700 ME, FTPS, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1511 parser.add_argument(
1513 action='store_true',
1514 help='TC2202 - 700 ME, FTPS, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1516 parser.add_argument(
1518 action='store_true',
1519 help='TC2300 - 700 ME, FTPS, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1520 parser.add_argument(
1522 action='store_true',
1523 help='TC2301 - 700 ME, FTPS, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1524 parser.add_argument(
1526 action='store_true',
1527 help='TC2302 - 700 ME, FTPS, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1529 parser.add_argument(
1531 action='store_true',
1532 help='TC2500 - 700 ME, FTPS, 1MB files, 100 files per event, 35 events per poll, simulating 25h backlog of decreasing number of outdated files and then 20 event polls every 15min for 1h')
1534 parser.add_argument(
1536 action='store_true',
1537 help='TC600 - 700 MEs, FTPS, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1539 parser.add_argument(
1541 action='store_true',
1542 help='TC601 - 700 MEs, FTPS, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1544 parser.add_argument(
1546 action='store_true',
1547 help='TC602 - 700 MEs, FTPS, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1549 parser.add_argument(
1551 action='store_true',
1552 help='TC610 - 700 MEs, FTPS, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1554 parser.add_argument(
1556 action='store_true',
1557 help='TC611 - 700 MEs, FTPS, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1559 parser.add_argument(
1561 action='store_true',
1562 help='TC610 - 700 MEs, FTPS, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1564 parser.add_argument(
1566 action='store_true',
1567 help='TC810 - 700 MEs, FTPS, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1569 args = parser.parse_args()
1706 print("No TC was defined")
1707 print("use --help for usage info")
1710 print("TC num: " + tc_num)
1712 for i in range(len(sftp_hosts)):
1713 print("Using " + str(sftp_hosts[i]) + ":" + str(sftp_ports[i]) + " for sftp server with index " + str(i) + " for sftp server address and port in file urls.")
1715 for i in range(len(ftps_hosts)):
1716 print("Using " + str(ftps_hosts[i]) + ":" + str(ftps_ports[i]) + " for ftps server with index " + str(i) + " for ftps server address and port in file urls.")
1718 print("Using up to " + str(num_ftp_servers) + " ftp servers, for each protocol for PNFs.")
1720 app.run(port=HOST_PORT, host=HOST_IP)