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 configuredPrefixes = os.environ.get('MR_FILE_PREFIX_MAPPING', 'PM_MEAS_FILES:A')
1223 if (len(groups) == 0 ):
1224 groups='OpenDcae-c12:PM_MEAS_FILES'
1225 print("Using default group: " + groups)
1227 print("Configured groups: " + groups)
1229 if (len(configuredPrefixes) == 0 ):
1230 configuredPrefixes='PM_MEAS_FILES:A'
1231 print("Using default changeid to file prefix mapping: " + configuredPrefixes)
1233 print("Configured changeid to file prefix mapping: " + configuredPrefixes)
1240 startTime = time.time()
1242 runningState = "Started"
1243 #Keeps all responded file names
1245 #Keeps all responded PNF names
1247 #Handles rop periods for tests that deliveres events every 15 min
1249 rop_timestamp = time.time()
1251 #List of configured group names
1253 #Mapping between group name and index in groupNames
1254 groupNameIndexes = {}
1255 #String of configured groups
1256 configuredGroups = ""
1257 #String of configured change identifiers
1258 configuredChangeIds = ""
1259 #List of changed identifiers
1261 #List of filePrefixes
1264 tmp=groups.split(',')
1265 for i in range(len(tmp)):
1267 for j in range(len(g)):
1270 if (len(configuredGroups) > 0):
1271 configuredGroups=configuredGroups+","
1272 configuredGroups=configuredGroups+g[0]
1273 groupNames.append(g[0])
1274 groupNameIndexes[g[0]] = i
1275 changeIds.append({})
1276 ctr_responses.append(0)
1277 ctr_requests.append(0)
1279 ctr_events.append(0)
1280 firstPollTime.append(0)
1281 pnfMap.append(set())
1283 if (len(configuredChangeIds) > 0):
1284 configuredChangeIds=configuredChangeIds+","
1286 changeIds[i][j-1]=g[j]
1288 configuredChangeIds=configuredChangeIds+":"
1289 configuredChangeIds=configuredChangeIds+g[j]
1291 # Create a map between changeid and file name prefix
1292 tmp=configuredPrefixes.split(',')
1293 for i in range(len(tmp)):
1295 filePrefixes[p[0]] = p[1]
1300 parser = argparse.ArgumentParser()
1302 #SFTP TCs with single ME
1303 parser.add_argument(
1305 action='store_true',
1306 help='TC100 - One ME, SFTP, 1 1MB file, 1 event')
1307 parser.add_argument(
1309 action='store_true',
1310 help='TC101 - One ME, SFTP, 1 5MB file, 1 event')
1311 parser.add_argument(
1313 action='store_true',
1314 help='TC102 - One ME, SFTP, 1 50MB file, 1 event')
1316 parser.add_argument(
1318 action='store_true',
1319 help='TC110 - One ME, SFTP, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1320 parser.add_argument(
1322 action='store_true',
1323 help='TC111 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1324 parser.add_argument(
1326 action='store_true',
1327 help='TC112 - One ME, SFTP, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1328 parser.add_argument(
1330 action='store_true',
1331 help='TC113 - One ME, SFTP, 1MB files, 100 files per event, 100 events. All events in one poll.')
1333 parser.add_argument(
1335 action='store_true',
1336 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')
1337 parser.add_argument(
1339 action='store_true',
1340 help='TC121 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1341 parser.add_argument(
1343 action='store_true',
1344 help='TC122 - One ME, SFTP, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1346 parser.add_argument(
1348 action='store_true',
1349 help='TC1000 - One ME, SFTP, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1350 parser.add_argument(
1352 action='store_true',
1353 help='TC1001 - One ME, SFTP, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1355 # SFTP TCs with multiple MEs
1356 parser.add_argument(
1358 action='store_true',
1359 help='TC500 - 700 MEs, SFTP, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1361 parser.add_argument(
1363 action='store_true',
1364 help='TC501 - 700 MEs, SFTP, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1366 parser.add_argument(
1368 action='store_true',
1369 help='TC502 - 700 MEs, SFTP, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1371 parser.add_argument(
1373 action='store_true',
1374 help='TC510 - 700 MEs, SFTP, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1376 parser.add_argument(
1378 action='store_true',
1379 help='TC511 - 700 MEs, SFTP, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1381 parser.add_argument(
1383 action='store_true',
1384 help='TC550 - 700 MEs, SFTP, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1386 parser.add_argument(
1388 action='store_true',
1389 help='TC710 - 700 MEs, SFTP, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1391 parser.add_argument(
1393 action='store_true',
1394 help='TC1100 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1395 parser.add_argument(
1397 action='store_true',
1398 help='TC1101 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1399 parser.add_argument(
1401 action='store_true',
1402 help='TC1102 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1404 parser.add_argument(
1406 action='store_true',
1407 help='TC1200 - 700 ME, SFTP, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1408 parser.add_argument(
1410 action='store_true',
1411 help='TC1201 - 700 ME, SFTP, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1412 parser.add_argument(
1414 action='store_true',
1415 help='TC1202 - 700 ME, SFTP, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1417 parser.add_argument(
1419 action='store_true',
1420 help='TC1300 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1421 parser.add_argument(
1423 action='store_true',
1424 help='TC1301 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1425 parser.add_argument(
1427 action='store_true',
1428 help='TC1302 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1430 parser.add_argument(
1432 action='store_true',
1433 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')
1435 # FTPS TCs with single ME
1436 parser.add_argument(
1438 action='store_true',
1439 help='TC200 - One ME, FTPS, 1 1MB file, 1 event')
1440 parser.add_argument(
1442 action='store_true',
1443 help='TC201 - One ME, FTPS, 1 5MB file, 1 event')
1444 parser.add_argument(
1446 action='store_true',
1447 help='TC202 - One ME, FTPS, 1 50MB file, 1 event')
1449 parser.add_argument(
1451 action='store_true',
1452 help='TC210 - One ME, FTPS, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1453 parser.add_argument(
1455 action='store_true',
1456 help='TC211 - One ME, FTPS, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1457 parser.add_argument(
1459 action='store_true',
1460 help='TC212 - One ME, FTPS, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1461 parser.add_argument(
1463 action='store_true',
1464 help='TC213 - One ME, FTPS, 1MB files, 100 files per event, 100 events. All events in one poll.')
1466 parser.add_argument(
1468 action='store_true',
1469 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')
1470 parser.add_argument(
1472 action='store_true',
1473 help='TC221 - One ME, FTPS, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1474 parser.add_argument(
1476 action='store_true',
1477 help='TC222 - One ME, FTPS, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1479 parser.add_argument(
1481 action='store_true',
1482 help='TC2000 - One ME, FTPS, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1483 parser.add_argument(
1485 action='store_true',
1486 help='TC2001 - One ME, FTPS, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1489 parser.add_argument(
1491 action='store_true',
1492 help='TC2100 - 700 ME, FTPS, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1493 parser.add_argument(
1495 action='store_true',
1496 help='TC2101 - 700 ME, FTPS, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1497 parser.add_argument(
1499 action='store_true',
1500 help='TC2102 - 700 ME, FTPS, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1502 parser.add_argument(
1504 action='store_true',
1505 help='TC2200 - 700 ME, FTPS, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1506 parser.add_argument(
1508 action='store_true',
1509 help='TC2201 - 700 ME, FTPS, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1510 parser.add_argument(
1512 action='store_true',
1513 help='TC2202 - 700 ME, FTPS, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1515 parser.add_argument(
1517 action='store_true',
1518 help='TC2300 - 700 ME, FTPS, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1519 parser.add_argument(
1521 action='store_true',
1522 help='TC2301 - 700 ME, FTPS, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1523 parser.add_argument(
1525 action='store_true',
1526 help='TC2302 - 700 ME, FTPS, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1528 parser.add_argument(
1530 action='store_true',
1531 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')
1533 parser.add_argument(
1535 action='store_true',
1536 help='TC600 - 700 MEs, FTPS, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1538 parser.add_argument(
1540 action='store_true',
1541 help='TC601 - 700 MEs, FTPS, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1543 parser.add_argument(
1545 action='store_true',
1546 help='TC602 - 700 MEs, FTPS, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1548 parser.add_argument(
1550 action='store_true',
1551 help='TC610 - 700 MEs, FTPS, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1553 parser.add_argument(
1555 action='store_true',
1556 help='TC611 - 700 MEs, FTPS, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1558 parser.add_argument(
1560 action='store_true',
1561 help='TC610 - 700 MEs, FTPS, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1563 parser.add_argument(
1565 action='store_true',
1566 help='TC810 - 700 MEs, FTPS, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1568 args = parser.parse_args()
1705 print("No TC was defined")
1706 print("use --help for usage info")
1709 print("TC num: " + tc_num)
1711 for i in range(len(sftp_hosts)):
1712 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.")
1714 for i in range(len(ftps_hosts)):
1715 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.")
1717 print("Using up to " + str(num_ftp_servers) + " ftp servers, for each protocol for PNFs.")
1719 app.run(port=HOST_PORT, host=HOST_IP)