forked from RootFu/ctf-scorebot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
IntegrationTest.py
122 lines (92 loc) · 2.83 KB
/
IntegrationTest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
from multiprocessing import Process
import sys
import time
#Common Imports
from scorebot.config.Config import Config
from scorebot.config.ConfigIniParser import ConfigIniParser
from scorebot.common.gameserver.GameServerBot import GameServerBot
#Standard Game Imports
from scorebot.standard.servicebot2.ServiceBot import ServiceBot
from scorebot.standard.servicebot2.ServiceBotConfig import ServiceBotConfigHandler, ServiceConfigHandler
from scorebot.standard.submitbot.SubmitBot import SubmitBot
from scorebot.standard.scoreboardbot.ScoreboardBot import ScoreboardBot
from scorebot.standard.StandardCTF import StandardCTF
#Attack Engine Imports
from scorebot.attackengine.attackbot.AttackBot import AttackBot
from scorebot.attackengine.flagsubmissionbot.FlagSubmissionBot import FlagSubmissionBot
#from scorebot.attackengine.collectbot.CollectBot import CollectBot
from scorebot.attackengine.AttackEngineLogic import AttackEngineLogic
def main(argv):
if(len(argv) != 2):
print "Usage: %s [standard or attack]" % argv[0]
return
if(argv[1] == "standard"):
mainStandard()
return
if(argv[1] == "attack"):
mainAttack()
return
def mainAttack():
#Load conf file
test_config_path = "config/attack_test.ini"
conf = ConfigIniParser().load(test_config_path)
assert(conf.isValid())
#Create Game Type
attacklogic = AttackLogic(conf)
#Create GameStateBot
game_state_bot = GameStateBot(conf,attacklogic)
game_state_bot.start()
time.sleep(1)
#Create AttackBot
attack_bot = AttackBot(conf,True)
attack_bot.start()
attack_bot.join()
game_state_bot.join()
"""
#Create FlagSubmissionBot
flag_submission_bot = FlagSubmissionBot(conf,True)
flag_submission_bot.start()
#Create CollectBot
collect_bot = CollectBot(conf,True)
collect_bot.start()
collect_bot.join()
flag_submission_bot.join()
attack_bot.join()
game_state_bot.join()
"""
def mainStandard():
#Setup config
cip = ConfigIniParser()
cip.addHandler(ServiceBotConfigHandler())
cip.addHandler(ServiceConfigHandler())
#Load conf file
test_config_path = "config/integration_test.ini"
conf = cip.load(test_config_path)
#Temporary hack - this should be in config file..
conf.setFlagPhrase("flags wave in the wind")
assert(conf.isValid())
#Create Game Type
gamelogic = StandardCTF(conf,True)
try:
#Create Game Server
game_server_bot = GameServerBot(conf,gamelogic)
game_server_bot.start()
time.sleep(1)
#Create ServiceBot
service_bot = ServiceBot(conf,True)
service_bot.start()
#Create SubmitBot
submit_bot = SubmitBot(conf,True)
submit_bot.start()
#Create ScoreboardBot
scoreboard_bot = ScoreboardBot(conf,True)
scoreboard_bot.start()
submit_bot.join()
service_bot.join()
game_server_bot.join()
except KeyboardInterrupt:
print "Integration test caught keyboard interrupt"
finally:
print "Finally.."
if __name__ == '__main__':
main(sys.argv)