7 from flask import Flask
23 def sumList(ctrArray):
25 for i in range(len(ctrArray)):
26 tmp = tmp + ctrArray[i]
31 def sumListLength(ctrArray):
33 for i in range(len(ctrArray)):
34 tmp = tmp + len(ctrArray[i])
39 # Test function to check server running
46 # Returns the list of configured groups
50 global configuredGroups
51 return configuredGroups
54 # Returns the list of configured changeids
55 @app.route('/changeids',
58 global configuredChangeIds
59 return configuredChangeIds
62 # Returns the list of configured fileprefixes
63 @app.route('/fileprefixes',
66 global configuredPrefixes
67 return configuredPrefixes
70 # Returns number of polls
71 @app.route('/ctr_requests',
73 def counter_requests():
75 return sumList(ctr_requests)
78 # Returns number of polls for all groups
79 @app.route('/groups/ctr_requests',
81 def group_counter_requests():
85 for i in range(len(groupNames)):
88 tmp = tmp + str(ctr_requests[i])
92 # Returns the total number of polls for a group
93 @app.route('/ctr_requests/<groupId>',
95 def counter_requests_group(groupId):
97 global groupNameIndexes
98 return str(ctr_requests[groupNameIndexes[groupId]])
101 # Returns number of poll replies
102 @app.route('/ctr_responses',
104 def counter_responses():
106 return sumList(ctr_responses)
109 # Returns number of poll replies for all groups
110 @app.route('/groups/ctr_responses',
112 def group_counter_responses():
116 for i in range(len(groupNames)):
119 tmp = tmp + str(ctr_responses[i])
123 # Returns the total number of poll replies for a group
124 @app.route('/ctr_responses/<groupId>',
126 def counter_responses_group(groupId):
128 global groupNameIndexes
129 return str(ctr_responses[groupNameIndexes[groupId]])
132 # Returns the total number of files
133 @app.route('/ctr_files',
137 return sumList(ctr_files)
140 # Returns the total number of file for all groups
141 @app.route('/groups/ctr_files',
143 def group_counter_files():
147 for i in range(len(groupNames)):
150 tmp = tmp + str(ctr_files[i])
154 # Returns the total number of files for a group
155 @app.route('/ctr_files/<groupId>',
157 def counter_files_group(groupId):
159 global groupNameIndexes
160 return str(ctr_files[groupNameIndexes[groupId]])
163 # Returns number of unique files
164 @app.route('/ctr_unique_files',
166 def counter_uniquefiles():
168 return sumListLength(fileMap)
171 # Returns number of unique files for all groups
172 @app.route('/groups/ctr_unique_files',
174 def group_counter_uniquefiles():
178 for i in range(len(groupNames)):
181 tmp = tmp + str(len(fileMap[i]))
185 # Returns the total number of unique files for a group
186 @app.route('/ctr_unique_files/<groupId>',
188 def counter_uniquefiles_group(groupId):
190 global groupNameIndexes
191 return str(len(fileMap[groupNameIndexes[groupId]]))
195 @app.route('/tc_info',
202 # Returns number of events
203 @app.route('/ctr_events',
205 def counter_events():
207 return sumList(ctr_events)
210 # Returns number of events for all groups
211 @app.route('/groups/ctr_events',
213 def group_counter_events():
217 for i in range(len(groupNames)):
220 tmp = tmp + str(ctr_events[i])
224 # Returns the total number of events for a group
225 @app.route('/ctr_events/<groupId>',
227 def counter_events_group(groupId):
229 global groupNameIndexes
230 return str(ctr_events[groupNameIndexes[groupId]])
233 # Returns execution time in mm:ss
234 @app.route('/execution_time',
239 stopTime = time.time()
240 minutes, seconds = divmod(stopTime - startTime, 60)
241 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
244 # Returns the timestamp for first poll
245 @app.route('/exe_time_first_poll',
247 def exe_time_first_poll():
251 for i in range(len(groupNames)):
252 if (firstPollTime[i] > tmp):
253 tmp = firstPollTime[i]
257 minutes, seconds = divmod(time.time() - tmp, 60)
258 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
261 # Returns the timestamp for first poll for all groups
262 @app.route('/groups/exe_time_first_poll',
264 def group_exe_time_first_poll():
269 for i in range(len(groupNames)):
272 if (firstPollTime[i] == 0):
275 minutes, seconds = divmod(time.time() - firstPollTime[i], 60)
276 tmp = tmp + "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
280 # Returns the timestamp for first poll for a group
281 @app.route('/exe_time_first_poll/<groupId>',
283 def exe_time_first_poll_group(groupId):
285 global groupNameIndexes
287 if (firstPollTime[groupNameIndexes[groupId]] == 0):
289 minutes, seconds = divmod(time.time() - firstPollTime[groupNameIndexes[groupId]], 60)
290 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
293 # Starts event delivery
298 runningState = "Started"
302 # Stops event delivery
307 runningState = "Stopped"
311 # Returns the running state
312 @app.route('/status',
319 # Returns number of unique PNFs
320 @app.route('/ctr_unique_PNFs',
322 def counter_uniquePNFs():
324 return sumListLength(pnfMap)
327 # Returns number of unique PNFs for all groups
328 @app.route('/groups/ctr_unique_PNFs',
330 def group_counter_uniquePNFs():
334 for i in range(len(groupNames)):
337 tmp = tmp + str(len(pnfMap[i]))
341 # Returns the unique PNFs for a group
342 @app.route('/ctr_unique_PNFs/<groupId>',
344 def counter_uniquePNFs_group(groupId):
346 global groupNameIndexes
347 return str(len(pnfMap[groupNameIndexes[groupId]]))
350 # Messages polling function
352 "/events/unauthenticated.VES_NOTIFICATION_OUTPUT/<consumerGroup>/<consumerId>",
354 def MR_reply(consumerGroup, consumerId):
360 global groupNameIndexes
363 print("Received request at /events/unauthenticated.VES_NOTIFICATION_OUTPUT/ for consumerGroup: " + consumerGroup +
364 " with consumerId: " + consumerId)
366 groupIndex = groupNameIndexes[consumerGroup]
367 print("Setting groupIndex: " + str(groupIndex))
369 reqCtr = ctr_requests[groupIndex]
370 changeId = changeIds[groupIndex][reqCtr % len(changeIds[groupIndex])]
371 print("Setting changeid: " + changeId)
372 filePrefix = filePrefixes[changeId]
373 print("Setting file name prefix: " + filePrefix)
375 if (firstPollTime[groupIndex] == 0):
376 firstPollTime[groupIndex] = time.time()
378 ctr_requests[groupIndex] = ctr_requests[groupIndex] + 1
379 print("MR: poll request#: " + str(ctr_requests[groupIndex]))
381 if (runningState == "Stopped"):
382 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
383 return buildOkResponse("[]")
386 return tc100(groupIndex, changeId, filePrefix, "sftp", "1MB")
388 return tc100(groupIndex, changeId, filePrefix, "sftp", "5MB")
390 return tc100(groupIndex, changeId, filePrefix, "sftp", "50MB")
393 return tc110(groupIndex, changeId, filePrefix, "sftp")
395 return tc111(groupIndex, changeId, filePrefix, "sftp")
397 return tc112(groupIndex, changeId, filePrefix, "sftp")
399 return tc113(groupIndex, changeId, filePrefix, "sftp")
402 return tc120(groupIndex, changeId, filePrefix, "sftp")
404 return tc121(groupIndex, changeId, filePrefix, "sftp")
406 return tc122(groupIndex, changeId, filePrefix, "sftp")
409 return tc1000(groupIndex, changeId, filePrefix, "sftp")
411 return tc1001(groupIndex, changeId, filePrefix, "sftp")
414 return tc1100(groupIndex, changeId, filePrefix, "sftp", "1MB")
416 return tc1100(groupIndex, changeId, filePrefix, "sftp", "50MB")
418 return tc1100(groupIndex, changeId, filePrefix, "sftp", "50MB")
420 return tc1200(groupIndex, changeId, filePrefix, "sftp", "1MB")
422 return tc1200(groupIndex, changeId, filePrefix, "sftp", "5MB")
424 return tc1200(groupIndex, changeId, filePrefix, "sftp", "50MB")
426 return tc1300(groupIndex, changeId, filePrefix, "sftp", "1MB")
428 return tc1300(groupIndex, changeId, filePrefix, "sftp", "5MB")
430 return tc1300(groupIndex, changeId, filePrefix, "sftp", "50MB")
433 return tc1500(groupIndex, changeId, filePrefix, "sftp", "1MB")
436 return tc500(groupIndex, changeId, filePrefix, "sftp", "1MB")
438 return tc500(groupIndex, changeId, filePrefix, "sftp", "5MB")
440 return tc500(groupIndex, changeId, filePrefix, "sftp", "50MB")
442 return tc510(groupIndex, changeId, filePrefix, "sftp", "1MB")
444 return tc511(groupIndex, changeId, filePrefix, "sftp", "1KB")
447 return tc510(groupIndex, changeId, filePrefix, "sftp", "50MB")
450 return tc710(groupIndex, changeId, filePrefix, "sftp")
454 return tc100(groupIndex, changeId, filePrefix, "ftpes", "1MB")
456 return tc100(groupIndex, changeId, filePrefix, "ftpes", "5MB")
458 return tc100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
461 return tc110(groupIndex, changeId, filePrefix, "ftpes")
463 return tc111(groupIndex, changeId, filePrefix, "ftpes")
465 return tc112(groupIndex, changeId, filePrefix, "ftpes")
467 return tc113(groupIndex, changeId, filePrefix, "ftpes")
470 return tc120(groupIndex, changeId, filePrefix, "ftpes")
472 return tc121(groupIndex, changeId, filePrefix, "ftpes")
474 return tc122(groupIndex, changeId, filePrefix, "ftpes")
477 return tc1000(groupIndex, changeId, filePrefix, "ftpes")
479 return tc1001(groupIndex, changeId, filePrefix, "ftpes")
482 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "1MB")
484 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
486 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
488 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "1MB")
490 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "5MB")
492 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "50MB")
494 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "1MB")
496 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "5MB")
498 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "50MB")
501 return tc1500(groupIndex, changeId, filePrefix, "ftpes", "1MB")
504 return tc500(groupIndex, changeId, filePrefix, "ftpes", "1MB")
506 return tc500(groupIndex, changeId, filePrefix, "ftpes", "5MB")
508 return tc500(groupIndex, changeId, filePrefix, "ftpes", "50MB")
510 return tc510(groupIndex, changeId, filePrefix, "ftpes", "1MB")
512 return tc511(groupIndex, changeId, filePrefix, "ftpes", "1KB")
514 return tc510(groupIndex, changeId, filePrefix, "ftpes", "50MB")
516 return tc710(groupIndex, changeId, filePrefix, "ftpes")
519 #### Test case functions
522 def tc100(groupIndex, changeId, filePrefix, ftpType, fileSize):
526 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
528 if (ctr_responses[groupIndex] > 1):
529 return buildOkResponse("[]")
531 seqNr = (ctr_responses[groupIndex] - 1)
533 nodeName = createNodeName(nodeIndex)
534 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
535 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName, ftpType, "onap", "pano",
536 nodeIndex) + getEventEnd()
537 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
538 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
539 return buildOkResponse("[" + msg + "]")
542 # def tc101(groupIndex, ftpType):
543 # global ctr_responses
546 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
548 # if (ctr_responses[groupIndex] > 1):
549 # return buildOkResponse("[]")
551 # seqNr = (ctr_responses[groupIndex]-1)
552 # nodeName = createNodeName(0)
553 # fileName = createFileName(groupIndex, nodeName, seqNr, "5MB")
554 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
555 # fileMap[groupIndex][seqNr] = seqNr
556 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
557 # return buildOkResponse("["+msg+"]")
559 # def tc102(groupIndex, ftpType):
560 # global ctr_responses
563 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
565 # if (ctr_responses[groupIndex] > 1):
566 # return buildOkResponse("[]")
568 # seqNr = (ctr_responses[groupIndex]-1)
569 # nodeName = createNodeName(0)
570 # fileName = createFileName(groupIndex, nodeName, seqNr, "50MB")
571 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
572 # fileMap[groupIndex][seqNr] = seqNr
573 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
574 # return buildOkResponse("["+msg+"]")
576 def tc110(groupIndex, changeId, filePrefix, ftpType):
580 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
582 if (ctr_responses[groupIndex] > 100):
583 return buildOkResponse("[]")
585 seqNr = (ctr_responses[groupIndex] - 1)
587 nodeName = createNodeName(nodeIndex)
588 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
589 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName, ftpType, "onap", "pano",
590 nodeIndex) + getEventEnd()
591 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
592 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
593 return buildOkResponse("[" + msg + "]")
596 def tc111(groupIndex, changeId, filePrefix, ftpType):
600 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
602 if (ctr_responses[groupIndex] > 100):
603 return buildOkResponse("[]")
606 nodeName = createNodeName(nodeIndex)
607 msg = getEventHead(groupIndex, changeId, nodeName)
610 seqNr = i + (ctr_responses[groupIndex] - 1)
611 if i != 0: msg = msg + ","
612 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
613 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
614 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
616 msg = msg + getEventEnd()
617 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
619 return buildOkResponse("[" + msg + "]")
622 def tc112(groupIndex, changeId, filePrefix, ftpType):
626 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
628 if (ctr_responses[groupIndex] > 100):
629 return buildOkResponse("[]")
632 nodeName = createNodeName(nodeIndex)
633 msg = getEventHead(groupIndex, changeId, nodeName)
636 seqNr = i + (ctr_responses[groupIndex] - 1)
637 if i != 0: msg = msg + ","
638 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
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 tc113(groupIndex, changeId, filePrefix, ftpType):
652 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
654 if (ctr_responses[groupIndex] > 1):
655 return buildOkResponse("[]")
658 nodeName = createNodeName(nodeIndex)
661 for evts in range(100): # build 100 evts
664 msg = msg + getEventHead(groupIndex, changeId, nodeName)
665 for i in range(100): # build 100 files
666 seqNr = i + evts + 100 * (ctr_responses[groupIndex] - 1)
667 if i != 0: msg = msg + ","
668 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
669 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
670 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
672 msg = msg + getEventEnd()
673 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
675 return buildOkResponse("[" + msg + "]")
678 def tc120(groupIndex, changeId, filePrefix, ftpType):
682 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
685 nodeName = createNodeName(nodeIndex)
687 if (ctr_responses[groupIndex] > 100):
688 return buildOkResponse("[]")
690 if (ctr_responses[groupIndex] % 10 == 2):
691 return # Return nothing
693 if (ctr_responses[groupIndex] % 10 == 3):
694 return buildOkResponse("") # Return empty message
696 if (ctr_responses[groupIndex] % 10 == 4):
697 return buildOkResponse(getEventHead(groupIndex, changeId, nodeName)) # Return part of a json event
699 if (ctr_responses[groupIndex] % 10 == 5):
700 return buildEmptyResponse(404) # Return empty message with status code
702 if (ctr_responses[groupIndex] % 10 == 6):
705 msg = getEventHead(groupIndex, changeId, nodeName)
708 seqNr = i + (ctr_responses[groupIndex] - 1)
709 if i != 0: msg = msg + ","
710 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
711 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
712 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
714 msg = msg + getEventEnd()
715 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
717 return buildOkResponse("[" + msg + "]")
720 def tc121(groupIndex, changeId, filePrefix, ftpType):
724 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
726 if (ctr_responses[groupIndex] > 100):
727 return buildOkResponse("[]")
730 nodeName = createNodeName(nodeIndex)
731 msg = getEventHead(groupIndex, changeId, nodeName)
735 seqNr = i + (ctr_responses[groupIndex] - 1)
736 if (seqNr % 10 == 0): # Every 10th file is "missing"
737 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
739 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
740 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
742 if i != 0: msg = msg + ","
743 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
745 msg = msg + getEventEnd()
746 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
748 return buildOkResponse("[" + msg + "]")
751 def tc122(groupIndex, changeId, filePrefix, ftpType):
755 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
757 if (ctr_responses[groupIndex] > 100):
758 return buildOkResponse("[]")
761 nodeName = createNodeName(nodeIndex)
762 msg = getEventHead(groupIndex, changeId, nodeName)
765 fileName = createFileName(groupIndex, filePrefix, nodeName, 0, "1MB") # All files identical names
766 if i != 0: msg = msg + ","
767 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
769 fileMap[groupIndex][0] = 0
770 msg = msg + getEventEnd()
771 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
773 return buildOkResponse("[" + msg + "]")
776 def tc1000(groupIndex, changeId, filePrefix, ftpType):
780 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
783 nodeName = createNodeName(nodeIndex)
784 msg = getEventHead(groupIndex, changeId, nodeName)
787 seqNr = i + (ctr_responses[groupIndex] - 1)
788 if i != 0: msg = msg + ","
789 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
790 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
791 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
793 msg = msg + getEventEnd()
794 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
796 return buildOkResponse("[" + msg + "]")
799 def tc1001(groupIndex, changeId, filePrefix, ftpType):
803 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
806 nodeName = createNodeName(nodeIndex)
807 msg = getEventHead(groupIndex, changeId, nodeName)
810 seqNr = i + (ctr_responses[groupIndex] - 1)
811 if i != 0: msg = msg + ","
812 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
813 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
814 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
816 msg = msg + getEventEnd()
817 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
819 return buildOkResponse("[" + msg + "]")
822 def tc1100(groupIndex, changeId, filePrefix, ftpType, filesize):
826 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
830 batch = (ctr_responses[groupIndex] - 1) % 20
832 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
835 nodeIndex = pnfs + batch * 35
836 nodeName = createNodeName(nodeIndex)
837 msg = msg + getEventHead(groupIndex, changeId, nodeName)
839 for i in range(100): # 100 files per event
840 seqNr = i + int((ctr_responses[groupIndex] - 1) / 20)
841 if i != 0: msg = msg + ","
842 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
843 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
844 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
845 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
847 msg = msg + getEventEnd()
848 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
850 return buildOkResponse("[" + msg + "]")
853 def tc1200(groupIndex, changeId, filePrefix, ftpType, filesize):
857 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
861 batch = (ctr_responses[groupIndex] - 1) % 20
863 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
866 nodeIndex = pnfs + batch * 35
867 nodeName = createNodeName(nodeIndex)
868 msg = msg + getEventHead(groupIndex, changeId, nodeName)
870 for i in range(100): # 100 files per event, all new files
871 seqNr = i + 100 * int((ctr_responses[groupIndex] - 1) / 20)
872 if i != 0: msg = msg + ","
873 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
874 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
875 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
876 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
878 msg = msg + getEventEnd()
879 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
881 return buildOkResponse("[" + msg + "]")
884 def tc1300(groupIndex, changeId, filePrefix, ftpType, filesize):
890 if (rop_counter == 0):
891 rop_timestamp = time.time()
893 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
895 # Start a event deliver for all 700 nodes every 15min
896 rop = time.time() - rop_timestamp
897 if ((rop < 900) & (rop_counter % 20 == 0) & (rop_counter != 0)):
898 return buildOkResponse("[]")
900 if (rop_counter % 20 == 0) & (rop_counter > 0):
901 rop_timestamp = rop_timestamp + 900
903 rop_counter = rop_counter + 1
907 batch = (rop_counter - 1) % 20
909 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
912 nodeIndex = pnfs + batch * 35
913 nodeName = createNodeName(nodeIndex)
914 msg = msg + getEventHead(groupIndex, changeId, nodeName)
916 for i in range(100): # 100 files per event
917 seqNr = i + int((rop_counter - 1) / 20)
918 if i != 0: msg = msg + ","
919 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
920 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
921 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
922 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
924 msg = msg + getEventEnd()
925 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
927 return buildOkResponse("[" + msg + "]")
930 def tc1500(groupIndex, changeId, filePrefix, ftpType, filesize):
936 if (rop_counter == 0):
937 rop_timestamp = time.time()
939 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
941 if (ctr_responses[groupIndex] <= 2000): # first 25h of event doess not care of 15min rop timer
945 batch = (ctr_responses[groupIndex] - 1) % 20
947 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
951 nodeIndex = pnfs + batch * 35
952 nodeName = createNodeName(nodeIndex)
953 msg = msg + getEventHead(groupIndex, changeId, nodeName)
955 for i in range(100): # 100 files per event
956 seqNr = i + int((ctr_responses[groupIndex] - 1) / 20)
957 if i != 0: msg = msg + ","
959 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
961 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
962 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
963 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
964 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
966 msg = msg + getEventEnd()
967 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
969 rop_counter = rop_counter + 1
970 return buildOkResponse("[" + msg + "]")
972 # Start an event delivery for all 700 nodes every 15min
973 rop = time.time() - rop_timestamp
974 if ((rop < 900) & (rop_counter % 20 == 0) & (rop_counter != 0)):
975 return buildOkResponse("[]")
977 if (rop_counter % 20 == 0):
978 rop_timestamp = time.time()
980 rop_counter = rop_counter + 1
984 batch = (rop_counter - 1) % 20
986 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
989 nodeIndex = pnfs + batch * 35
990 nodeName = createNodeName(nodeIndex)
991 msg = msg + getEventHead(groupIndex, changeId, nodeName)
993 for i in range(100): # 100 files per event
994 seqNr = i + int((rop_counter - 1) / 20)
995 if i != 0: msg = msg + ","
996 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
997 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
998 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
999 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1001 msg = msg + getEventEnd()
1002 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1004 return buildOkResponse("[" + msg + "]")
1007 def tc500(groupIndex, changeId, filePrefix, ftpType, filesize):
1008 global ctr_responses
1011 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1013 if (ctr_responses[groupIndex] > 1):
1014 return buildOkResponse("[]")
1018 for pnfs in range(700):
1021 nodeName = createNodeName(pnfs)
1022 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1026 if i != 0: msg = msg + ","
1027 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
1028 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1029 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1030 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1032 msg = msg + getEventEnd()
1033 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1035 return buildOkResponse("[" + msg + "]")
1038 def tc510(groupIndex, changeId, filePrefix, ftpType, fileSize):
1039 global ctr_responses
1042 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1044 if (ctr_responses[groupIndex] > 5):
1045 return buildOkResponse("[]")
1049 for pnfs in range(700): # build events for 700 MEs
1052 nodeName = createNodeName(pnfs)
1053 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1054 seqNr = (ctr_responses[groupIndex] - 1)
1055 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1056 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1057 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1058 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1059 msg = msg + getEventEnd()
1060 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1062 return buildOkResponse("[" + msg + "]")
1065 def tc511(groupIndex, changeId, filePrefix, ftpType, fileSize):
1066 global ctr_responses
1069 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1071 if (ctr_responses[groupIndex] > 5):
1072 return buildOkResponse("[]")
1076 for pnfs in range(700): # build events for 700 MEs
1079 nodeName = createNodeName(pnfs)
1080 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1081 seqNr = (ctr_responses[groupIndex] - 1)
1082 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1083 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1084 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1085 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1086 msg = msg + getEventEnd()
1087 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1089 return buildOkResponse("[" + msg + "]")
1092 def tc710(groupIndex, changeId, filePrefix, ftpType):
1093 global ctr_responses
1096 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1098 if (ctr_responses[groupIndex] > 100):
1099 return buildOkResponse("[]")
1103 batch = (ctr_responses[groupIndex] - 1) % 20
1105 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
1108 nodeIndex = pnfs + batch * 35
1109 nodeName = createNodeName(nodeIndex)
1110 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1112 for i in range(100): # 100 files per event
1113 seqNr = i + int((ctr_responses[groupIndex] - 1) / 20)
1114 if i != 0: msg = msg + ","
1115 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
1116 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
1117 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
1118 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1120 msg = msg + getEventEnd()
1121 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1123 return buildOkResponse("[" + msg + "]")
1126 #### Functions to build json messages and respones ####
1128 def createNodeName(index):
1129 return "PNF" + str(index)
1132 def createFileName(groupIndex, filePrefix, nodeName, index, size):
1134 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1135 return filePrefix + "20000626.2315+0200-2330+0200_" + nodeName + "-" + str(index) + "-" + size + ".tar.gz"
1138 def createMissingFileName(groupIndex, filePrefix, nodeName, index, size):
1140 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1141 return filePrefix + "MissingFile_" + nodeName + "-" + str(index) + "-" + size + ".tar.gz"
1144 # Function to build fixed beginning of an event
1146 def getEventHead(groupIndex, changeId, nodename):
1148 pnfMap[groupIndex].add(nodename)
1152 "commonEventHeader": {
1153 "startEpochMicrosec": 8745745764578,
1154 "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1",
1155 "timeZoneOffset": "UTC+05.30",
1156 "internalHeaderFields": {
1157 "collectorTimeStamp": "Tue, 09 18 2018 10:56:52 UTC"
1159 "priority": "Normal",
1161 "reportingEntityName": \"""" + nodename + """",
1163 "domain": "notification",
1164 "lastEpochMicrosec": 8745745764578,
1165 "eventName": "Noti_RnNode-Ericsson_FileReady",
1166 "vesEventListenerVersion": "7.0.1",
1167 "sourceName": \"""" + nodename + """"
1169 "notificationFields": {
1170 "notificationFieldsVersion": "2.0",
1171 "changeType": "FileReady",
1172 "changeIdentifier": \"""" + changeId + """",
1173 "arrayOfNamedHashMap": [
1178 # Function to build the variable part of an event
1179 def getEventName(fn, type, user, passwd, nodeIndex):
1180 nodeIndex = nodeIndex % num_ftp_servers
1181 port = sftp_ports[nodeIndex]
1182 ip = sftp_hosts[nodeIndex]
1183 if (type == "ftpes"):
1184 port = ftpes_ports[nodeIndex]
1185 ip = ftpes_hosts[nodeIndex]
1188 "name": \"""" + fn + """",
1190 "fileFormatType": "org.3GPP.32.435#measCollec",
1191 "location": \"""" + type + """://""" + user + """:""" + passwd + """@""" + ip + """:""" + str(
1192 port) + """/""" + fn + """",
1193 "fileFormatVersion": "V10",
1194 "compression": "gzip"
1200 # Function to build fixed end of an event
1211 # Function to build an OK reponse from a message string
1212 def buildOkResponse(msg):
1213 response = app.response_class(
1214 response=str.encode(msg),
1216 mimetype='application/json')
1220 # Function to build an empty message with status
1221 def buildEmptyResponse(status_code):
1222 response = app.response_class(
1223 response=str.encode(""),
1225 mimetype='application/json')
1229 if __name__ == "__main__":
1231 # IP addresses to use for ftp servers, using localhost if not env var is set
1232 sftp_sims = os.environ.get('SFTP_SIMS', 'localhost:1022')
1233 ftpes_sims = os.environ.get('FTPES_SIMS', 'localhost:21')
1234 num_ftp_servers = int(os.environ.get('NUM_FTP_SERVERS', 1))
1236 print("Configured sftp sims: " + sftp_sims)
1237 print("Configured ftpes sims: " + ftpes_sims)
1238 print("Configured number of ftp servers: " + str(num_ftp_servers))
1240 tmp = sftp_sims.split(',')
1241 for i in range(len(tmp)):
1242 hp = tmp[i].split(':')
1243 sftp_hosts.append(hp[0])
1244 sftp_ports.append(hp[1])
1246 tmp = ftpes_sims.split(',')
1247 for i in range(len(tmp)):
1248 hp = tmp[i].split(':')
1249 ftpes_hosts.append(hp[0])
1250 ftpes_ports.append(hp[1])
1252 groups = os.environ.get('MR_GROUPS', 'OpenDcae-c12:PM_MEAS_FILES')
1253 print("Groups detected: " + groups)
1254 configuredPrefixes = os.environ.get('MR_FILE_PREFIX_MAPPING', 'PM_MEAS_FILES:A')
1257 groups = 'OpenDcae-c12:PM_MEAS_FILES'
1258 print("Using default group: " + groups)
1260 print("Configured groups: " + groups)
1262 if not configuredPrefixes:
1263 configuredPrefixes = 'PM_MEAS_FILES:A'
1264 print("Using default changeid to file prefix mapping: " + configuredPrefixes)
1266 print("Configured changeid to file prefix mapping: " + configuredPrefixes)
1273 startTime = time.time()
1275 runningState = "Started"
1276 # Keeps all responded file names
1278 # Keeps all responded PNF names
1280 # Handles rop periods for tests that deliveres events every 15 min
1282 rop_timestamp = time.time()
1284 # List of configured group names
1286 # Mapping between group name and index in groupNames
1287 groupNameIndexes = {}
1288 # String of configured groups
1289 configuredGroups = ""
1290 # String of configured change identifiers
1291 configuredChangeIds = ""
1292 # List of changed identifiers
1294 # List of filePrefixes
1297 tmp = groups.split(',')
1298 for i in range(len(tmp)):
1299 g = tmp[i].split(':')
1300 for j in range(len(g)):
1303 if configuredGroups:
1304 configuredGroups = configuredGroups + ","
1305 configuredGroups = configuredGroups + g[0]
1306 groupNames.append(g[0])
1307 groupNameIndexes[g[0]] = i
1308 changeIds.append({})
1309 ctr_responses.append(0)
1310 ctr_requests.append(0)
1312 ctr_events.append(0)
1313 firstPollTime.append(0)
1314 pnfMap.append(set())
1316 if configuredGroups:
1317 configuredChangeIds = configuredChangeIds + ","
1319 changeIds[i][j - 1] = g[j]
1321 configuredChangeIds = configuredChangeIds + ":"
1322 configuredChangeIds = configuredChangeIds + g[j]
1324 # Create a map between changeid and file name prefix
1325 tmp = configuredPrefixes.split(',')
1326 for i in range(len(tmp)):
1327 p = tmp[i].split(':')
1328 filePrefixes[p[0]] = p[1]
1333 parser = argparse.ArgumentParser()
1335 # SFTP TCs with single ME
1336 parser.add_argument(
1338 action='store_true',
1339 help='TC100 - One ME, SFTP, 1 1MB file, 1 event')
1340 parser.add_argument(
1342 action='store_true',
1343 help='TC101 - One ME, SFTP, 1 5MB file, 1 event')
1344 parser.add_argument(
1346 action='store_true',
1347 help='TC102 - One ME, SFTP, 1 50MB file, 1 event')
1349 parser.add_argument(
1351 action='store_true',
1352 help='TC110 - One ME, SFTP, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1353 parser.add_argument(
1355 action='store_true',
1356 help='TC111 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1357 parser.add_argument(
1359 action='store_true',
1360 help='TC112 - One ME, SFTP, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1361 parser.add_argument(
1363 action='store_true',
1364 help='TC113 - One ME, SFTP, 1MB files, 100 files per event, 100 events. All events in one poll.')
1366 parser.add_argument(
1368 action='store_true',
1369 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')
1370 parser.add_argument(
1372 action='store_true',
1373 help='TC121 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1374 parser.add_argument(
1376 action='store_true',
1377 help='TC122 - One ME, SFTP, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1379 parser.add_argument(
1381 action='store_true',
1382 help='TC1000 - One ME, SFTP, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1383 parser.add_argument(
1385 action='store_true',
1386 help='TC1001 - One ME, SFTP, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1388 # SFTP TCs with multiple MEs
1389 parser.add_argument(
1391 action='store_true',
1392 help='TC500 - 700 MEs, SFTP, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1394 parser.add_argument(
1396 action='store_true',
1397 help='TC501 - 700 MEs, SFTP, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1399 parser.add_argument(
1401 action='store_true',
1402 help='TC502 - 700 MEs, SFTP, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1404 parser.add_argument(
1406 action='store_true',
1407 help='TC510 - 700 MEs, SFTP, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1409 parser.add_argument(
1411 action='store_true',
1412 help='TC511 - 700 MEs, SFTP, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1414 parser.add_argument(
1416 action='store_true',
1417 help='TC550 - 700 MEs, SFTP, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1419 parser.add_argument(
1421 action='store_true',
1422 help='TC710 - 700 MEs, SFTP, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1424 parser.add_argument(
1426 action='store_true',
1427 help='TC1100 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1428 parser.add_argument(
1430 action='store_true',
1431 help='TC1101 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1432 parser.add_argument(
1434 action='store_true',
1435 help='TC1102 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1437 parser.add_argument(
1439 action='store_true',
1440 help='TC1200 - 700 ME, SFTP, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1441 parser.add_argument(
1443 action='store_true',
1444 help='TC1201 - 700 ME, SFTP, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1445 parser.add_argument(
1447 action='store_true',
1448 help='TC1202 - 700 ME, SFTP, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1450 parser.add_argument(
1452 action='store_true',
1453 help='TC1300 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1454 parser.add_argument(
1456 action='store_true',
1457 help='TC1301 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1458 parser.add_argument(
1460 action='store_true',
1461 help='TC1302 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1463 parser.add_argument(
1465 action='store_true',
1466 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')
1468 # FTPES TCs with single ME
1469 parser.add_argument(
1471 action='store_true',
1472 help='TC200 - One ME, FTPES, 1 1MB file, 1 event')
1473 parser.add_argument(
1475 action='store_true',
1476 help='TC201 - One ME, FTPES, 1 5MB file, 1 event')
1477 parser.add_argument(
1479 action='store_true',
1480 help='TC202 - One ME, FTPES, 1 50MB file, 1 event')
1482 parser.add_argument(
1484 action='store_true',
1485 help='TC210 - One ME, FTPES, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1486 parser.add_argument(
1488 action='store_true',
1489 help='TC211 - One ME, FTPES, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1490 parser.add_argument(
1492 action='store_true',
1493 help='TC212 - One ME, FTPES, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1494 parser.add_argument(
1496 action='store_true',
1497 help='TC213 - One ME, FTPES, 1MB files, 100 files per event, 100 events. All events in one poll.')
1499 parser.add_argument(
1501 action='store_true',
1502 help='TC220 - One ME, FTPES, 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')
1503 parser.add_argument(
1505 action='store_true',
1506 help='TC221 - One ME, FTPES, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1507 parser.add_argument(
1509 action='store_true',
1510 help='TC222 - One ME, FTPES, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1512 parser.add_argument(
1514 action='store_true',
1515 help='TC2000 - One ME, FTPES, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1516 parser.add_argument(
1518 action='store_true',
1519 help='TC2001 - One ME, FTPES, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1521 parser.add_argument(
1523 action='store_true',
1524 help='TC2100 - 700 ME, FTPES, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1525 parser.add_argument(
1527 action='store_true',
1528 help='TC2101 - 700 ME, FTPES, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1529 parser.add_argument(
1531 action='store_true',
1532 help='TC2102 - 700 ME, FTPES, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1534 parser.add_argument(
1536 action='store_true',
1537 help='TC2200 - 700 ME, FTPES, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1538 parser.add_argument(
1540 action='store_true',
1541 help='TC2201 - 700 ME, FTPES, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1542 parser.add_argument(
1544 action='store_true',
1545 help='TC2202 - 700 ME, FTPES, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1547 parser.add_argument(
1549 action='store_true',
1550 help='TC2300 - 700 ME, FTPES, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1551 parser.add_argument(
1553 action='store_true',
1554 help='TC2301 - 700 ME, FTPES, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1555 parser.add_argument(
1557 action='store_true',
1558 help='TC2302 - 700 ME, FTPES, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1560 parser.add_argument(
1562 action='store_true',
1563 help='TC2500 - 700 ME, FTPES, 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')
1565 parser.add_argument(
1567 action='store_true',
1568 help='TC600 - 700 MEs, FTPES, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1570 parser.add_argument(
1572 action='store_true',
1573 help='TC601 - 700 MEs, FTPES, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1575 parser.add_argument(
1577 action='store_true',
1578 help='TC602 - 700 MEs, FTPES, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1580 parser.add_argument(
1582 action='store_true',
1583 help='TC610 - 700 MEs, FTPES, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1585 parser.add_argument(
1587 action='store_true',
1588 help='TC611 - 700 MEs, FTPES, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1590 parser.add_argument(
1592 action='store_true',
1593 help='TC610 - 700 MEs, FTPES, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1595 parser.add_argument(
1597 action='store_true',
1598 help='TC810 - 700 MEs, FTPES, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1600 args = parser.parse_args()
1735 print("No TC was defined")
1736 print("use --help for usage info")
1739 print("TC num: " + tc_num)
1741 for i in range(len(sftp_hosts)):
1742 print("Using " + str(sftp_hosts[i]) + ":" + str(sftp_ports[i]) + " for sftp server with index " + str(
1743 i) + " for sftp server address and port in file urls.")
1745 for i in range(len(ftpes_hosts)):
1746 print("Using " + str(ftpes_hosts[i]) + ":" + str(ftpes_ports[i]) + " for ftpes server with index " + str(
1747 i) + " for ftpes server address and port in file urls.")
1749 print("Using up to " + str(num_ftp_servers) + " ftp servers, for each protocol for PNFs.")
1752 def https_app(**kwargs):
1754 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
1755 context.load_cert_chain('cert/cert.pem', 'cert/key.pem')
1756 app.run(ssl_context=context, **kwargs)
1759 from multiprocessing import Process
1761 kwargs = dict(host=HOST_IP)
1762 Process(target=https_app, kwargs=dict(kwargs, port=HOST_PORT_TLS),
1763 daemon=True).start()
1765 app.run(port=HOST_PORT, host=HOST_IP)