7 from flask import Flask
26 def sumList(ctrArray):
28 for i in range(len(ctrArray)):
29 tmp = tmp + ctrArray[i]
34 def sumListLength(ctrArray):
36 for i in range(len(ctrArray)):
37 tmp = tmp + len(ctrArray[i])
42 # Test function to check server running
49 # Returns the list of configured groups
53 global configuredGroups
54 return configuredGroups
57 # Returns the list of configured changeids
58 @app.route('/changeids',
61 global configuredChangeIds
62 return configuredChangeIds
65 # Returns the list of configured fileprefixes
66 @app.route('/fileprefixes',
69 global configuredPrefixes
70 return configuredPrefixes
73 # Returns number of polls
74 @app.route('/ctr_requests',
76 def counter_requests():
78 return sumList(ctr_requests)
81 # Returns number of polls for all groups
82 @app.route('/groups/ctr_requests',
84 def group_counter_requests():
88 for i in range(len(groupNames)):
91 tmp = tmp + str(ctr_requests[i])
95 # Returns the total number of polls for a group
96 @app.route('/ctr_requests/<groupId>',
98 def counter_requests_group(groupId):
100 global groupNameIndexes
101 return str(ctr_requests[groupNameIndexes[groupId]])
104 # Returns number of poll replies
105 @app.route('/ctr_responses',
107 def counter_responses():
109 return sumList(ctr_responses)
112 # Returns number of poll replies for all groups
113 @app.route('/groups/ctr_responses',
115 def group_counter_responses():
119 for i in range(len(groupNames)):
122 tmp = tmp + str(ctr_responses[i])
126 # Returns the total number of poll replies for a group
127 @app.route('/ctr_responses/<groupId>',
129 def counter_responses_group(groupId):
131 global groupNameIndexes
132 return str(ctr_responses[groupNameIndexes[groupId]])
135 # Returns the total number of files
136 @app.route('/ctr_files',
140 return sumList(ctr_files)
143 # Returns the total number of file for all groups
144 @app.route('/groups/ctr_files',
146 def group_counter_files():
150 for i in range(len(groupNames)):
153 tmp = tmp + str(ctr_files[i])
157 # Returns the total number of files for a group
158 @app.route('/ctr_files/<groupId>',
160 def counter_files_group(groupId):
162 global groupNameIndexes
163 return str(ctr_files[groupNameIndexes[groupId]])
166 # Returns number of unique files
167 @app.route('/ctr_unique_files',
169 def counter_uniquefiles():
171 return sumListLength(fileMap)
174 # Returns number of unique files for all groups
175 @app.route('/groups/ctr_unique_files',
177 def group_counter_uniquefiles():
181 for i in range(len(groupNames)):
184 tmp = tmp + str(len(fileMap[i]))
188 # Returns the total number of unique files for a group
189 @app.route('/ctr_unique_files/<groupId>',
191 def counter_uniquefiles_group(groupId):
193 global groupNameIndexes
194 return str(len(fileMap[groupNameIndexes[groupId]]))
198 @app.route('/tc_info',
205 # Returns number of events
206 @app.route('/ctr_events',
208 def counter_events():
210 return sumList(ctr_events)
213 # Returns number of events for all groups
214 @app.route('/groups/ctr_events',
216 def group_counter_events():
220 for i in range(len(groupNames)):
223 tmp = tmp + str(ctr_events[i])
227 # Returns the total number of events for a group
228 @app.route('/ctr_events/<groupId>',
230 def counter_events_group(groupId):
232 global groupNameIndexes
233 return str(ctr_events[groupNameIndexes[groupId]])
236 # Returns execution time in mm:ss
237 @app.route('/execution_time',
242 stopTime = time.time()
243 minutes, seconds = divmod(stopTime - startTime, 60)
244 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
247 # Returns the timestamp for first poll
248 @app.route('/exe_time_first_poll',
250 def exe_time_first_poll():
254 for i in range(len(groupNames)):
255 if (firstPollTime[i] > tmp):
256 tmp = firstPollTime[i]
260 minutes, seconds = divmod(time.time() - tmp, 60)
261 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
264 # Returns the timestamp for first poll for all groups
265 @app.route('/groups/exe_time_first_poll',
267 def group_exe_time_first_poll():
272 for i in range(len(groupNames)):
275 if (firstPollTime[i] == 0):
278 minutes, seconds = divmod(time.time() - firstPollTime[i], 60)
279 tmp = tmp + "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
283 # Returns the timestamp for first poll for a group
284 @app.route('/exe_time_first_poll/<groupId>',
286 def exe_time_first_poll_group(groupId):
288 global groupNameIndexes
290 if (firstPollTime[groupNameIndexes[groupId]] == 0):
292 minutes, seconds = divmod(time.time() - firstPollTime[groupNameIndexes[groupId]], 60)
293 return "{:0>2}:{:0>2}".format(int(minutes), int(seconds))
296 # Starts event delivery
301 runningState = "Started"
305 # Stops event delivery
310 runningState = "Stopped"
314 # Returns the running state
315 @app.route('/status',
322 # Returns number of unique PNFs
323 @app.route('/ctr_unique_PNFs',
325 def counter_uniquePNFs():
327 return sumListLength(pnfMap)
330 # Returns number of unique PNFs for all groups
331 @app.route('/groups/ctr_unique_PNFs',
333 def group_counter_uniquePNFs():
337 for i in range(len(groupNames)):
340 tmp = tmp + str(len(pnfMap[i]))
344 # Returns the unique PNFs for a group
345 @app.route('/ctr_unique_PNFs/<groupId>',
347 def counter_uniquePNFs_group(groupId):
349 global groupNameIndexes
350 return str(len(pnfMap[groupNameIndexes[groupId]]))
353 # Messages polling function
355 "/events/unauthenticated.VES_NOTIFICATION_OUTPUT/<consumerGroup>/<consumerId>",
357 def MR_reply(consumerGroup, consumerId):
363 global groupNameIndexes
366 print("Received request at /events/unauthenticated.VES_NOTIFICATION_OUTPUT/ for consumerGroup: " + consumerGroup +
367 " with consumerId: " + consumerId)
369 groupIndex = groupNameIndexes[consumerGroup]
370 print("Setting groupIndex: " + str(groupIndex))
372 reqCtr = ctr_requests[groupIndex]
373 changeId = changeIds[groupIndex][reqCtr % len(changeIds[groupIndex])]
374 print("Setting changeid: " + changeId)
375 filePrefix = filePrefixes[changeId]
376 print("Setting file name prefix: " + filePrefix)
378 if (firstPollTime[groupIndex] == 0):
379 firstPollTime[groupIndex] = time.time()
381 ctr_requests[groupIndex] = ctr_requests[groupIndex] + 1
382 print("MR: poll request#: " + str(ctr_requests[groupIndex]))
384 if (runningState == "Stopped"):
385 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
386 return buildOkResponse("[]")
389 return tc100(groupIndex, changeId, filePrefix, "sftp", "1MB")
391 return tc100(groupIndex, changeId, filePrefix, "sftp", "5MB")
393 return tc100(groupIndex, changeId, filePrefix, "sftp", "50MB")
396 return tc110(groupIndex, changeId, filePrefix, "sftp")
398 return tc111(groupIndex, changeId, filePrefix, "sftp")
400 return tc112(groupIndex, changeId, filePrefix, "sftp")
402 return tc113(groupIndex, changeId, filePrefix, "sftp")
405 return tc120(groupIndex, changeId, filePrefix, "sftp")
407 return tc121(groupIndex, changeId, filePrefix, "sftp")
409 return tc122(groupIndex, changeId, filePrefix, "sftp")
412 return tc1000(groupIndex, changeId, filePrefix, "sftp")
414 return tc1001(groupIndex, changeId, filePrefix, "sftp")
417 return tc1100(groupIndex, changeId, filePrefix, "sftp", "1MB")
419 return tc1100(groupIndex, changeId, filePrefix, "sftp", "50MB")
421 return tc1100(groupIndex, changeId, filePrefix, "sftp", "50MB")
423 return tc1200(groupIndex, changeId, filePrefix, "sftp", "1MB")
425 return tc1200(groupIndex, changeId, filePrefix, "sftp", "5MB")
427 return tc1200(groupIndex, changeId, filePrefix, "sftp", "50MB")
429 return tc1300(groupIndex, changeId, filePrefix, "sftp", "1MB")
431 return tc1300(groupIndex, changeId, filePrefix, "sftp", "5MB")
433 return tc1300(groupIndex, changeId, filePrefix, "sftp", "50MB")
436 return tc1500(groupIndex, changeId, filePrefix, "sftp", "1MB")
439 return tc500(groupIndex, changeId, filePrefix, "sftp", "1MB")
441 return tc500(groupIndex, changeId, filePrefix, "sftp", "5MB")
443 return tc500(groupIndex, changeId, filePrefix, "sftp", "50MB")
445 return tc510(groupIndex, changeId, filePrefix, "sftp", "1MB")
447 return tc511(groupIndex, changeId, filePrefix, "sftp", "1KB")
450 return tc510(groupIndex, changeId, filePrefix, "sftp", "50MB")
453 return tc710(groupIndex, changeId, filePrefix, "sftp")
457 return tc100(groupIndex, changeId, filePrefix, "ftpes", "1MB")
459 return tc100(groupIndex, changeId, filePrefix, "ftpes", "5MB")
461 return tc100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
464 return tc110(groupIndex, changeId, filePrefix, "ftpes")
466 return tc111(groupIndex, changeId, filePrefix, "ftpes")
468 return tc112(groupIndex, changeId, filePrefix, "ftpes")
470 return tc113(groupIndex, changeId, filePrefix, "ftpes")
473 return tc120(groupIndex, changeId, filePrefix, "ftpes")
475 return tc121(groupIndex, changeId, filePrefix, "ftpes")
477 return tc122(groupIndex, changeId, filePrefix, "ftpes")
480 return tc1000(groupIndex, changeId, filePrefix, "ftpes")
482 return tc1001(groupIndex, changeId, filePrefix, "ftpes")
485 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "1MB")
487 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
489 return tc1100(groupIndex, changeId, filePrefix, "ftpes", "50MB")
491 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "1MB")
493 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "5MB")
495 return tc1200(groupIndex, changeId, filePrefix, "ftpes", "50MB")
497 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "1MB")
499 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "5MB")
501 return tc1300(groupIndex, changeId, filePrefix, "ftpes", "50MB")
504 return tc1500(groupIndex, changeId, filePrefix, "ftpes", "1MB")
507 return tc500(groupIndex, changeId, filePrefix, "ftpes", "1MB")
509 return tc500(groupIndex, changeId, filePrefix, "ftpes", "5MB")
511 return tc500(groupIndex, changeId, filePrefix, "ftpes", "50MB")
513 return tc510(groupIndex, changeId, filePrefix, "ftpes", "1MB")
515 return tc511(groupIndex, changeId, filePrefix, "ftpes", "1KB")
517 return tc510(groupIndex, changeId, filePrefix, "ftpes", "50MB")
519 return tc710(groupIndex, changeId, filePrefix, "ftpes")
522 return tc100(groupIndex, changeId, filePrefix, "http", "1MB")
524 return tc100(groupIndex, changeId, filePrefix, "http", "5MB")
526 return tc100(groupIndex, changeId, filePrefix, "http", "50MB")
528 #### Test case functions
531 def tc100(groupIndex, changeId, filePrefix, schemeType, fileSize):
535 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
537 if (ctr_responses[groupIndex] > 1):
538 return buildOkResponse("[]")
540 seqNr = (ctr_responses[groupIndex] - 1)
542 nodeName = createNodeName(nodeIndex)
543 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
544 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName, schemeType, "onap", "pano",
545 nodeIndex) + getEventEnd()
546 if schemeType == "http":
547 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName, schemeType, "demo", "demo123456!",
548 nodeIndex) + getEventEnd()
549 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
550 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
551 return buildOkResponse("[" + msg + "]")
554 # def tc101(groupIndex, ftpType):
555 # global ctr_responses
558 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
560 # if (ctr_responses[groupIndex] > 1):
561 # return buildOkResponse("[]")
563 # seqNr = (ctr_responses[groupIndex]-1)
564 # nodeName = createNodeName(0)
565 # fileName = createFileName(groupIndex, nodeName, seqNr, "5MB")
566 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
567 # fileMap[groupIndex][seqNr] = seqNr
568 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
569 # return buildOkResponse("["+msg+"]")
571 # def tc102(groupIndex, ftpType):
572 # global ctr_responses
575 # ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
577 # if (ctr_responses[groupIndex] > 1):
578 # return buildOkResponse("[]")
580 # seqNr = (ctr_responses[groupIndex]-1)
581 # nodeName = createNodeName(0)
582 # fileName = createFileName(groupIndex, nodeName, seqNr, "50MB")
583 # msg = getEventHead(groupIndex, nodeName) + getEventName(fileName,ftpType,"onap","pano") + getEventEnd()
584 # fileMap[groupIndex][seqNr] = seqNr
585 # ctr_events[groupIndex] = ctr_events[groupIndex]+1
586 # return buildOkResponse("["+msg+"]")
588 def tc110(groupIndex, changeId, filePrefix, ftpType):
592 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
594 if (ctr_responses[groupIndex] > 100):
595 return buildOkResponse("[]")
597 seqNr = (ctr_responses[groupIndex] - 1)
599 nodeName = createNodeName(nodeIndex)
600 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
601 msg = getEventHead(groupIndex, changeId, nodeName) + getEventName(fileName, ftpType, "onap", "pano",
602 nodeIndex) + getEventEnd()
603 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
604 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
605 return buildOkResponse("[" + msg + "]")
608 def tc111(groupIndex, changeId, filePrefix, ftpType):
612 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
614 if (ctr_responses[groupIndex] > 100):
615 return buildOkResponse("[]")
618 nodeName = createNodeName(nodeIndex)
619 msg = getEventHead(groupIndex, changeId, nodeName)
622 seqNr = i + (ctr_responses[groupIndex] - 1)
623 if i != 0: msg = msg + ","
624 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
625 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
626 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
628 msg = msg + getEventEnd()
629 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
631 return buildOkResponse("[" + msg + "]")
634 def tc112(groupIndex, changeId, filePrefix, ftpType):
638 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
640 if (ctr_responses[groupIndex] > 100):
641 return buildOkResponse("[]")
644 nodeName = createNodeName(nodeIndex)
645 msg = getEventHead(groupIndex, changeId, nodeName)
648 seqNr = i + (ctr_responses[groupIndex] - 1)
649 if i != 0: msg = msg + ","
650 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
651 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
652 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
654 msg = msg + getEventEnd()
655 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
657 return buildOkResponse("[" + msg + "]")
660 def tc113(groupIndex, changeId, filePrefix, ftpType):
664 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
666 if (ctr_responses[groupIndex] > 1):
667 return buildOkResponse("[]")
670 nodeName = createNodeName(nodeIndex)
673 for evts in range(100): # build 100 evts
676 msg = msg + getEventHead(groupIndex, changeId, nodeName)
677 for i in range(100): # build 100 files
678 seqNr = i + evts + 100 * (ctr_responses[groupIndex] - 1)
679 if i != 0: msg = msg + ","
680 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
681 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
682 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
684 msg = msg + getEventEnd()
685 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
687 return buildOkResponse("[" + msg + "]")
690 def tc120(groupIndex, changeId, filePrefix, ftpType):
694 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
697 nodeName = createNodeName(nodeIndex)
699 if (ctr_responses[groupIndex] > 100):
700 return buildOkResponse("[]")
702 if (ctr_responses[groupIndex] % 10 == 2):
703 return # Return nothing
705 if (ctr_responses[groupIndex] % 10 == 3):
706 return buildOkResponse("") # Return empty message
708 if (ctr_responses[groupIndex] % 10 == 4):
709 return buildOkResponse(getEventHead(groupIndex, changeId, nodeName)) # Return part of a json event
711 if (ctr_responses[groupIndex] % 10 == 5):
712 return buildEmptyResponse(404) # Return empty message with status code
714 if (ctr_responses[groupIndex] % 10 == 6):
717 msg = getEventHead(groupIndex, changeId, nodeName)
720 seqNr = i + (ctr_responses[groupIndex] - 1)
721 if i != 0: msg = msg + ","
722 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
723 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
724 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
726 msg = msg + getEventEnd()
727 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
729 return buildOkResponse("[" + msg + "]")
732 def tc121(groupIndex, changeId, filePrefix, ftpType):
736 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
738 if (ctr_responses[groupIndex] > 100):
739 return buildOkResponse("[]")
742 nodeName = createNodeName(nodeIndex)
743 msg = getEventHead(groupIndex, changeId, nodeName)
747 seqNr = i + (ctr_responses[groupIndex] - 1)
748 if (seqNr % 10 == 0): # Every 10th file is "missing"
749 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
751 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
752 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
754 if i != 0: msg = msg + ","
755 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
757 msg = msg + getEventEnd()
758 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
760 return buildOkResponse("[" + msg + "]")
763 def tc122(groupIndex, changeId, filePrefix, ftpType):
767 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
769 if (ctr_responses[groupIndex] > 100):
770 return buildOkResponse("[]")
773 nodeName = createNodeName(nodeIndex)
774 msg = getEventHead(groupIndex, changeId, nodeName)
777 fileName = createFileName(groupIndex, filePrefix, nodeName, 0, "1MB") # All files identical names
778 if i != 0: msg = msg + ","
779 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
781 fileMap[groupIndex][0] = 0
782 msg = msg + getEventEnd()
783 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
785 return buildOkResponse("[" + msg + "]")
788 def tc1000(groupIndex, changeId, filePrefix, ftpType):
792 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
795 nodeName = createNodeName(nodeIndex)
796 msg = getEventHead(groupIndex, changeId, nodeName)
799 seqNr = i + (ctr_responses[groupIndex] - 1)
800 if i != 0: msg = msg + ","
801 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
802 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
803 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
805 msg = msg + getEventEnd()
806 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
808 return buildOkResponse("[" + msg + "]")
811 def tc1001(groupIndex, changeId, filePrefix, ftpType):
815 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
818 nodeName = createNodeName(nodeIndex)
819 msg = getEventHead(groupIndex, changeId, nodeName)
822 seqNr = i + (ctr_responses[groupIndex] - 1)
823 if i != 0: msg = msg + ","
824 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "5MB")
825 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
826 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
828 msg = msg + getEventEnd()
829 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
831 return buildOkResponse("[" + msg + "]")
834 def tc1100(groupIndex, changeId, filePrefix, ftpType, filesize):
838 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
842 batch = (ctr_responses[groupIndex] - 1) % 20
844 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
847 nodeIndex = pnfs + batch * 35
848 nodeName = createNodeName(nodeIndex)
849 msg = msg + getEventHead(groupIndex, changeId, nodeName)
851 for i in range(100): # 100 files per event
852 seqNr = i + int((ctr_responses[groupIndex] - 1) / 20)
853 if i != 0: msg = msg + ","
854 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
855 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
856 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
857 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
859 msg = msg + getEventEnd()
860 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
862 return buildOkResponse("[" + msg + "]")
865 def tc1200(groupIndex, changeId, filePrefix, ftpType, filesize):
869 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
873 batch = (ctr_responses[groupIndex] - 1) % 20
875 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
878 nodeIndex = pnfs + batch * 35
879 nodeName = createNodeName(nodeIndex)
880 msg = msg + getEventHead(groupIndex, changeId, nodeName)
882 for i in range(100): # 100 files per event, all new files
883 seqNr = i + 100 * int((ctr_responses[groupIndex] - 1) / 20)
884 if i != 0: msg = msg + ","
885 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
886 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
887 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
888 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
890 msg = msg + getEventEnd()
891 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
893 return buildOkResponse("[" + msg + "]")
896 def tc1300(groupIndex, changeId, filePrefix, ftpType, filesize):
902 if (rop_counter == 0):
903 rop_timestamp = time.time()
905 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
907 # Start a event deliver for all 700 nodes every 15min
908 rop = time.time() - rop_timestamp
909 if ((rop < 900) & (rop_counter % 20 == 0) & (rop_counter != 0)):
910 return buildOkResponse("[]")
912 if (rop_counter % 20 == 0) & (rop_counter > 0):
913 rop_timestamp = rop_timestamp + 900
915 rop_counter = rop_counter + 1
919 batch = (rop_counter - 1) % 20
921 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((rop_counter - 1) / 20)
930 if i != 0: msg = msg + ","
931 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
932 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
933 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
934 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
936 msg = msg + getEventEnd()
937 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
939 return buildOkResponse("[" + msg + "]")
942 def tc1500(groupIndex, changeId, filePrefix, ftpType, filesize):
948 if (rop_counter == 0):
949 rop_timestamp = time.time()
951 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
953 if (ctr_responses[groupIndex] <= 2000): # first 25h of event doess not care of 15min rop timer
957 batch = (ctr_responses[groupIndex] - 1) % 20
959 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((ctr_responses[groupIndex] - 1) / 20)
969 if i != 0: msg = msg + ","
971 fileName = createMissingFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
973 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
974 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
975 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
976 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
978 msg = msg + getEventEnd()
979 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
981 rop_counter = rop_counter + 1
982 return buildOkResponse("[" + msg + "]")
984 # Start an event delivery for all 700 nodes every 15min
985 rop = time.time() - rop_timestamp
986 if ((rop < 900) & (rop_counter % 20 == 0) & (rop_counter != 0)):
987 return buildOkResponse("[]")
989 if (rop_counter % 20 == 0):
990 rop_timestamp = time.time()
992 rop_counter = rop_counter + 1
996 batch = (rop_counter - 1) % 20
998 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
1001 nodeIndex = pnfs + batch * 35
1002 nodeName = createNodeName(nodeIndex)
1003 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1005 for i in range(100): # 100 files per event
1006 seqNr = i + int((rop_counter - 1) / 20)
1007 if i != 0: msg = msg + ","
1008 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
1009 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
1010 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
1011 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1013 msg = msg + getEventEnd()
1014 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1016 return buildOkResponse("[" + msg + "]")
1019 def tc500(groupIndex, changeId, filePrefix, ftpType, filesize):
1020 global ctr_responses
1023 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1025 if (ctr_responses[groupIndex] > 1):
1026 return buildOkResponse("[]")
1030 for pnfs in range(700):
1033 nodeName = createNodeName(pnfs)
1034 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1038 if i != 0: msg = msg + ","
1039 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, filesize)
1040 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1041 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1042 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1044 msg = msg + getEventEnd()
1045 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1047 return buildOkResponse("[" + msg + "]")
1050 def tc510(groupIndex, changeId, filePrefix, ftpType, fileSize):
1051 global ctr_responses
1054 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1056 if (ctr_responses[groupIndex] > 5):
1057 return buildOkResponse("[]")
1061 for pnfs in range(700): # build events for 700 MEs
1064 nodeName = createNodeName(pnfs)
1065 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1066 seqNr = (ctr_responses[groupIndex] - 1)
1067 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1068 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1069 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1070 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1071 msg = msg + getEventEnd()
1072 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1074 return buildOkResponse("[" + msg + "]")
1077 def tc511(groupIndex, changeId, filePrefix, ftpType, fileSize):
1078 global ctr_responses
1081 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1083 if (ctr_responses[groupIndex] > 5):
1084 return buildOkResponse("[]")
1088 for pnfs in range(700): # build events for 700 MEs
1091 nodeName = createNodeName(pnfs)
1092 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1093 seqNr = (ctr_responses[groupIndex] - 1)
1094 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, fileSize)
1095 msg = msg + getEventName(fileName, ftpType, "onap", "pano", pnfs)
1096 seqNr = seqNr + pnfs * 1000000 # Create unique id for this node and file
1097 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1098 msg = msg + getEventEnd()
1099 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1101 return buildOkResponse("[" + msg + "]")
1104 def tc710(groupIndex, changeId, filePrefix, ftpType):
1105 global ctr_responses
1108 ctr_responses[groupIndex] = ctr_responses[groupIndex] + 1
1110 if (ctr_responses[groupIndex] > 100):
1111 return buildOkResponse("[]")
1115 batch = (ctr_responses[groupIndex] - 1) % 20
1117 for pnfs in range(35): # build events for 35 PNFs at a time. 20 batches -> 700
1120 nodeIndex = pnfs + batch * 35
1121 nodeName = createNodeName(nodeIndex)
1122 msg = msg + getEventHead(groupIndex, changeId, nodeName)
1124 for i in range(100): # 100 files per event
1125 seqNr = i + int((ctr_responses[groupIndex] - 1) / 20)
1126 if i != 0: msg = msg + ","
1127 fileName = createFileName(groupIndex, filePrefix, nodeName, seqNr, "1MB")
1128 msg = msg + getEventName(fileName, ftpType, "onap", "pano", nodeIndex)
1129 seqNr = seqNr + (pnfs + batch * 35) * 1000000 # Create unique id for this node and file
1130 fileMap[groupIndex][seqNr * hash(filePrefix)] = seqNr
1132 msg = msg + getEventEnd()
1133 ctr_events[groupIndex] = ctr_events[groupIndex] + 1
1135 return buildOkResponse("[" + msg + "]")
1138 #### Functions to build json messages and respones ####
1140 def createNodeName(index):
1141 return "PNF" + str(index)
1144 def createFileName(groupIndex, filePrefix, nodeName, index, size):
1146 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1147 return filePrefix + "20000626.2315+0200-2330+0200_" + nodeName + "-" + str(index) + "-" + size + ".tar.gz"
1150 def createMissingFileName(groupIndex, filePrefix, nodeName, index, size):
1152 ctr_files[groupIndex] = ctr_files[groupIndex] + 1
1153 return filePrefix + "MissingFile_" + nodeName + "-" + str(index) + "-" + size + ".tar.gz"
1156 # Function to build fixed beginning of an event
1158 def getEventHead(groupIndex, changeId, nodename):
1160 pnfMap[groupIndex].add(nodename)
1164 "commonEventHeader": {
1165 "startEpochMicrosec": 8745745764578,
1166 "eventId": "FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1",
1167 "timeZoneOffset": "UTC+05.30",
1168 "internalHeaderFields": {
1169 "collectorTimeStamp": "Tue, 09 18 2018 10:56:52 UTC"
1171 "priority": "Normal",
1173 "reportingEntityName": \"""" + nodename + """",
1175 "domain": "notification",
1176 "lastEpochMicrosec": 8745745764578,
1177 "eventName": "Noti_RnNode-Ericsson_FileReady",
1178 "vesEventListenerVersion": "7.0.1",
1179 "sourceName": \"""" + nodename + """"
1181 "notificationFields": {
1182 "notificationFieldsVersion": "2.0",
1183 "changeType": "FileReady",
1184 "changeIdentifier": \"""" + changeId + """",
1185 "arrayOfNamedHashMap": [
1190 # Function to build the variable part of an event
1191 def getEventName(fn, type, user, passwd, nodeIndex):
1192 nodeIndex = nodeIndex % num_ftp_servers
1193 port = sftp_ports[nodeIndex]
1194 ip = sftp_hosts[nodeIndex]
1195 if (type == "ftpes"):
1196 port = ftpes_ports[nodeIndex]
1197 ip = ftpes_hosts[nodeIndex]
1198 elif (type == "http"):
1199 nodeIndex = nodeIndex % num_http_servers
1200 port = http_ports[nodeIndex]
1201 ip = http_hosts[nodeIndex]
1204 "name": \"""" + fn + """",
1206 "fileFormatType": "org.3GPP.32.435#measCollec",
1207 "location": \"""" + type + """://""" + user + """:""" + passwd + """@""" + ip + """:""" + str(
1208 port) + """/""" + fn + """",
1209 "fileFormatVersion": "V10",
1210 "compression": "gzip"
1216 # Function to build fixed end of an event
1227 # Function to build an OK reponse from a message string
1228 def buildOkResponse(msg):
1229 response = app.response_class(
1230 response=str.encode(msg),
1232 mimetype='application/json')
1236 # Function to build an empty message with status
1237 def buildEmptyResponse(status_code):
1238 response = app.response_class(
1239 response=str.encode(""),
1241 mimetype='application/json')
1245 if __name__ == "__main__":
1247 # IP addresses to use for ftp servers, using localhost if not env var is set
1248 sftp_sims = os.environ.get('SFTP_SIMS', 'localhost:1022')
1249 ftpes_sims = os.environ.get('FTPES_SIMS', 'localhost:21')
1250 http_sims = os.environ.get('HTTP_SIMS', 'localhost:81')
1251 num_ftp_servers = int(os.environ.get('NUM_FTP_SERVERS', 1))
1252 num_http_servers = int(os.environ.get('NUM_HTTP_SERVERS', 1))
1254 print("Configured sftp sims: " + sftp_sims)
1255 print("Configured ftpes sims: " + ftpes_sims)
1256 print("Configured http sims: " + http_sims)
1257 print("Configured number of ftp servers: " + str(num_ftp_servers))
1258 print("Configured number of http servers: " + str(num_http_servers))
1260 tmp = sftp_sims.split(',')
1261 for i in range(len(tmp)):
1262 hp = tmp[i].split(':')
1263 sftp_hosts.append(hp[0])
1264 sftp_ports.append(hp[1])
1266 tmp = ftpes_sims.split(',')
1267 for i in range(len(tmp)):
1268 hp = tmp[i].split(':')
1269 ftpes_hosts.append(hp[0])
1270 ftpes_ports.append(hp[1])
1272 tmp = http_sims.split(',')
1273 for i in range(len(tmp)):
1274 hp = tmp[i].split(':')
1275 http_hosts.append(hp[0])
1276 http_ports.append(hp[1])
1278 groups = os.environ.get('MR_GROUPS', 'OpenDcae-c12:PM_MEAS_FILES')
1279 print("Groups detected: " + groups)
1280 configuredPrefixes = os.environ.get('MR_FILE_PREFIX_MAPPING', 'PM_MEAS_FILES:A')
1283 groups = 'OpenDcae-c12:PM_MEAS_FILES'
1284 print("Using default group: " + groups)
1286 print("Configured groups: " + groups)
1288 if not configuredPrefixes:
1289 configuredPrefixes = 'PM_MEAS_FILES:A'
1290 print("Using default changeid to file prefix mapping: " + configuredPrefixes)
1292 print("Configured changeid to file prefix mapping: " + configuredPrefixes)
1299 startTime = time.time()
1301 runningState = "Started"
1302 # Keeps all responded file names
1304 # Keeps all responded PNF names
1306 # Handles rop periods for tests that deliveres events every 15 min
1308 rop_timestamp = time.time()
1310 # List of configured group names
1312 # Mapping between group name and index in groupNames
1313 groupNameIndexes = {}
1314 # String of configured groups
1315 configuredGroups = ""
1316 # String of configured change identifiers
1317 configuredChangeIds = ""
1318 # List of changed identifiers
1320 # List of filePrefixes
1323 tmp = groups.split(',')
1324 for i in range(len(tmp)):
1325 g = tmp[i].split(':')
1326 for j in range(len(g)):
1329 if configuredGroups:
1330 configuredGroups = configuredGroups + ","
1331 configuredGroups = configuredGroups + g[0]
1332 groupNames.append(g[0])
1333 groupNameIndexes[g[0]] = i
1334 changeIds.append({})
1335 ctr_responses.append(0)
1336 ctr_requests.append(0)
1338 ctr_events.append(0)
1339 firstPollTime.append(0)
1340 pnfMap.append(set())
1342 if configuredGroups:
1343 configuredChangeIds = configuredChangeIds + ","
1345 changeIds[i][j - 1] = g[j]
1347 configuredChangeIds = configuredChangeIds + ":"
1348 configuredChangeIds = configuredChangeIds + g[j]
1350 # Create a map between changeid and file name prefix
1351 tmp = configuredPrefixes.split(',')
1352 for i in range(len(tmp)):
1353 p = tmp[i].split(':')
1354 filePrefixes[p[0]] = p[1]
1359 parser = argparse.ArgumentParser()
1361 # SFTP TCs with single ME
1362 parser.add_argument(
1364 action='store_true',
1365 help='TC100 - One ME, SFTP, 1 1MB file, 1 event')
1366 parser.add_argument(
1368 action='store_true',
1369 help='TC101 - One ME, SFTP, 1 5MB file, 1 event')
1370 parser.add_argument(
1372 action='store_true',
1373 help='TC102 - One ME, SFTP, 1 50MB file, 1 event')
1375 parser.add_argument(
1377 action='store_true',
1378 help='TC110 - One ME, SFTP, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1379 parser.add_argument(
1381 action='store_true',
1382 help='TC111 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1383 parser.add_argument(
1385 action='store_true',
1386 help='TC112 - One ME, SFTP, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1387 parser.add_argument(
1389 action='store_true',
1390 help='TC113 - One ME, SFTP, 1MB files, 100 files per event, 100 events. All events in one poll.')
1392 parser.add_argument(
1394 action='store_true',
1395 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')
1396 parser.add_argument(
1398 action='store_true',
1399 help='TC121 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1400 parser.add_argument(
1402 action='store_true',
1403 help='TC122 - One ME, SFTP, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1405 parser.add_argument(
1407 action='store_true',
1408 help='TC1000 - One ME, SFTP, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1409 parser.add_argument(
1411 action='store_true',
1412 help='TC1001 - One ME, SFTP, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1414 # SFTP TCs with multiple MEs
1415 parser.add_argument(
1417 action='store_true',
1418 help='TC500 - 700 MEs, SFTP, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1420 parser.add_argument(
1422 action='store_true',
1423 help='TC501 - 700 MEs, SFTP, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1425 parser.add_argument(
1427 action='store_true',
1428 help='TC502 - 700 MEs, SFTP, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1430 parser.add_argument(
1432 action='store_true',
1433 help='TC510 - 700 MEs, SFTP, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1435 parser.add_argument(
1437 action='store_true',
1438 help='TC511 - 700 MEs, SFTP, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1440 parser.add_argument(
1442 action='store_true',
1443 help='TC550 - 700 MEs, SFTP, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1445 parser.add_argument(
1447 action='store_true',
1448 help='TC710 - 700 MEs, SFTP, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1450 parser.add_argument(
1452 action='store_true',
1453 help='TC1100 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1454 parser.add_argument(
1456 action='store_true',
1457 help='TC1101 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1458 parser.add_argument(
1460 action='store_true',
1461 help='TC1102 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1463 parser.add_argument(
1465 action='store_true',
1466 help='TC1200 - 700 ME, SFTP, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1467 parser.add_argument(
1469 action='store_true',
1470 help='TC1201 - 700 ME, SFTP, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1471 parser.add_argument(
1473 action='store_true',
1474 help='TC1202 - 700 ME, SFTP, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1476 parser.add_argument(
1478 action='store_true',
1479 help='TC1300 - 700 ME, SFTP, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1480 parser.add_argument(
1482 action='store_true',
1483 help='TC1301 - 700 ME, SFTP, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1484 parser.add_argument(
1486 action='store_true',
1487 help='TC1302 - 700 ME, SFTP, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1489 parser.add_argument(
1491 action='store_true',
1492 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')
1494 # FTPES TCs with single ME
1495 parser.add_argument(
1497 action='store_true',
1498 help='TC200 - One ME, FTPES, 1 1MB file, 1 event')
1499 parser.add_argument(
1501 action='store_true',
1502 help='TC201 - One ME, FTPES, 1 5MB file, 1 event')
1503 parser.add_argument(
1505 action='store_true',
1506 help='TC202 - One ME, FTPES, 1 50MB file, 1 event')
1508 parser.add_argument(
1510 action='store_true',
1511 help='TC210 - One ME, FTPES, 1MB files, 1 file per event, 100 events, 1 event per poll.')
1512 parser.add_argument(
1514 action='store_true',
1515 help='TC211 - One ME, FTPES, 1MB files, 100 files per event, 100 events, 1 event per poll.')
1516 parser.add_argument(
1518 action='store_true',
1519 help='TC212 - One ME, FTPES, 5MB files, 100 files per event, 100 events, 1 event per poll.')
1520 parser.add_argument(
1522 action='store_true',
1523 help='TC213 - One ME, FTPES, 1MB files, 100 files per event, 100 events. All events in one poll.')
1525 parser.add_argument(
1527 action='store_true',
1528 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')
1529 parser.add_argument(
1531 action='store_true',
1532 help='TC221 - One ME, FTPES, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files')
1533 parser.add_argument(
1535 action='store_true',
1536 help='TC222 - One ME, FTPES, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name. ')
1538 parser.add_argument(
1540 action='store_true',
1541 help='TC2000 - One ME, FTPES, 1MB files, 100 files per event, endless number of events, 1 event per poll')
1542 parser.add_argument(
1544 action='store_true',
1545 help='TC2001 - One ME, FTPES, 5MB files, 100 files per event, endless number of events, 1 event per poll')
1547 parser.add_argument(
1549 action='store_true',
1550 help='TC2100 - 700 ME, FTPES, 1MB files, 100 files per event, endless number of events, 35 event per poll')
1551 parser.add_argument(
1553 action='store_true',
1554 help='TC2101 - 700 ME, FTPES, 5MB files, 100 files per event, endless number of events, 35 event per poll')
1555 parser.add_argument(
1557 action='store_true',
1558 help='TC2102 - 700 ME, FTPES, 50MB files, 100 files per event, endless number of events, 35 event per poll')
1560 parser.add_argument(
1562 action='store_true',
1563 help='TC2200 - 700 ME, FTPES, 1MB files, 100 new files per event, endless number of events, 35 event per poll')
1564 parser.add_argument(
1566 action='store_true',
1567 help='TC2201 - 700 ME, FTPES, 5MB files, 100 new files per event, endless number of events, 35 event per poll')
1568 parser.add_argument(
1570 action='store_true',
1571 help='TC2202 - 700 ME, FTPES, 50MB files, 100 new files per event, endless number of events, 35 event per poll')
1573 parser.add_argument(
1575 action='store_true',
1576 help='TC2300 - 700 ME, FTPES, 1MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1577 parser.add_argument(
1579 action='store_true',
1580 help='TC2301 - 700 ME, FTPES, 5MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1581 parser.add_argument(
1583 action='store_true',
1584 help='TC2302 - 700 ME, FTPES, 50MB files, 100 files per event, endless number of events, 35 event per poll, 20 event polls every 15min')
1586 parser.add_argument(
1588 action='store_true',
1589 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')
1591 parser.add_argument(
1593 action='store_true',
1594 help='TC600 - 700 MEs, FTPES, 1MB files, 2 new files per event, 700 events, all event in one poll.')
1596 parser.add_argument(
1598 action='store_true',
1599 help='TC601 - 700 MEs, FTPES, 5MB files, 2 new files per event, 700 events, all event in one poll.')
1601 parser.add_argument(
1603 action='store_true',
1604 help='TC602 - 700 MEs, FTPES, 50MB files, 2 new files per event, 700 events, all event in one poll.')
1606 parser.add_argument(
1608 action='store_true',
1609 help='TC610 - 700 MEs, FTPES, 1MB files, 1 file per event, 3500 events, 700 event per poll.')
1611 parser.add_argument(
1613 action='store_true',
1614 help='TC611 - 700 MEs, FTPES, 1KB files, 1 file per event, 3500 events, 700 event per poll.')
1616 parser.add_argument(
1618 action='store_true',
1619 help='TC610 - 700 MEs, FTPES, 50MB files, 1 file per event, 3500 events, 700 event per poll.')
1621 parser.add_argument(
1623 action='store_true',
1624 help='TC810 - 700 MEs, FTPES, 1MB files, 100 files per event, 3500 events, 35 event per poll.')
1626 # HTTP TCs with single ME
1627 parser.add_argument(
1629 action='store_true',
1630 help='TC300 - One ME, HTTP, 1 1MB file, 1 event')
1631 parser.add_argument(
1633 action='store_true',
1634 help='TC301 - One ME, HTTP, 1 5MB file, 1 event')
1635 parser.add_argument(
1637 action='store_true',
1638 help='TC302 - One ME, HTTP, 1 50MB file, 1 event')
1640 args = parser.parse_args()
1782 print("No TC was defined")
1783 print("use --help for usage info")
1786 print("TC num: " + tc_num)
1788 for i in range(len(sftp_hosts)):
1789 print("Using " + str(sftp_hosts[i]) + ":" + str(sftp_ports[i]) + " for sftp server with index " + str(
1790 i) + " for sftp server address and port in file urls.")
1792 for i in range(len(ftpes_hosts)):
1793 print("Using " + str(ftpes_hosts[i]) + ":" + str(ftpes_ports[i]) + " for ftpes server with index " + str(
1794 i) + " for ftpes server address and port in file urls.")
1796 for i in range(len(http_hosts)):
1797 print("Using " + str(http_hosts[i]) + ":" + str(http_ports[i]) + " for http server with index " + str(
1798 i) + " for http server address and port in file urls.")
1800 print("Using up to " + str(num_ftp_servers) + " ftp servers, for each protocol for PNFs.")
1801 print("Using up to " + str(num_http_servers) + " http servers, for each protocol for PNFs.")
1804 def https_app(**kwargs):
1806 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
1807 context.load_cert_chain('cert/cert.pem', 'cert/key.pem')
1808 app.run(ssl_context=context, **kwargs)
1811 from multiprocessing import Process
1813 kwargs = dict(host=HOST_IP)
1814 Process(target=https_app, kwargs=dict(kwargs, port=HOST_PORT_TLS),
1815 daemon=True).start()
1817 app.run(port=HOST_PORT, host=HOST_IP)