1*890232f2SAndroid Build Coastguard Workerfrom __future__ import print_function 2*890232f2SAndroid Build Coastguard Worker 3*890232f2SAndroid Build Coastguard Workerimport os 4*890232f2SAndroid Build Coastguard Workerimport sys 5*890232f2SAndroid Build Coastguard Workerimport grpc 6*890232f2SAndroid Build Coastguard Workerimport flatbuffers 7*890232f2SAndroid Build Coastguard Worker 8*890232f2SAndroid Build Coastguard Workerfrom concurrent import futures 9*890232f2SAndroid Build Coastguard Worker 10*890232f2SAndroid Build Coastguard Workersys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'tests')) 11*890232f2SAndroid Build Coastguard Workerimport MyGame.Example.Monster as Monster 12*890232f2SAndroid Build Coastguard Workerimport MyGame.Example.Stat as Stat 13*890232f2SAndroid Build Coastguard Workerimport MyGame.Example.Vec3 as Vec3 14*890232f2SAndroid Build Coastguard Workerimport MyGame.Example.Test as Test 15*890232f2SAndroid Build Coastguard Workerimport MyGame.Example.monster_test_grpc_fb as monster_grpc_fb 16*890232f2SAndroid Build Coastguard Worker 17*890232f2SAndroid Build Coastguard Worker 18*890232f2SAndroid Build Coastguard Workertest_stat_id = "test_stat_id" 19*890232f2SAndroid Build Coastguard Workertest_stat_val = 8 20*890232f2SAndroid Build Coastguard Workertest_stat_count = 1 21*890232f2SAndroid Build Coastguard Worker 22*890232f2SAndroid Build Coastguard Workertest_monster_name1 = "test_monster_name1" 23*890232f2SAndroid Build Coastguard Workertest_monster_name2 = "test_monster_name2" 24*890232f2SAndroid Build Coastguard Workertest_string = "test_string" 25*890232f2SAndroid Build Coastguard Workertest_color = 2 26*890232f2SAndroid Build Coastguard Workertest_X = 3.0 27*890232f2SAndroid Build Coastguard Workertest_Y = 2.0 28*890232f2SAndroid Build Coastguard Workertest_Z = 6.0 29*890232f2SAndroid Build Coastguard Workertest_test1 = 4.0 30*890232f2SAndroid Build Coastguard Workertest_a = 8 31*890232f2SAndroid Build Coastguard Workertest_b = 5 32*890232f2SAndroid Build Coastguard Workertest_hp = 67 33*890232f2SAndroid Build Coastguard Workertest_inventory = [1, 1, 2, 3, 5, 8] 34*890232f2SAndroid Build Coastguard Workertest_testtype = 4 35*890232f2SAndroid Build Coastguard Worker 36*890232f2SAndroid Build Coastguard Workertest_monsters_name_retrieve = ["big_monster", "small_monster"] 37*890232f2SAndroid Build Coastguard Workertest_no_of_monsters = 2 38*890232f2SAndroid Build Coastguard Worker 39*890232f2SAndroid Build Coastguard Worker 40*890232f2SAndroid Build Coastguard Workerclass MonsterStorage(monster_grpc_fb.MonsterStorageServicer): 41*890232f2SAndroid Build Coastguard Worker 42*890232f2SAndroid Build Coastguard Worker def Store(self, request, context): 43*890232f2SAndroid Build Coastguard Worker 44*890232f2SAndroid Build Coastguard Worker m = Monster.Monster().GetRootAsMonster(request, 0) 45*890232f2SAndroid Build Coastguard Worker 46*890232f2SAndroid Build Coastguard Worker assert m.Name().decode("utf-8") == test_monster_name1 47*890232f2SAndroid Build Coastguard Worker 48*890232f2SAndroid Build Coastguard Worker assert m.Pos().X() == test_X 49*890232f2SAndroid Build Coastguard Worker assert m.Pos().Y() == test_Y 50*890232f2SAndroid Build Coastguard Worker assert m.Pos().Z() == test_Z 51*890232f2SAndroid Build Coastguard Worker assert m.Pos().Test1() == test_test1 52*890232f2SAndroid Build Coastguard Worker assert m.Pos().Test2() == test_color 53*890232f2SAndroid Build Coastguard Worker test3 = Test.Test() 54*890232f2SAndroid Build Coastguard Worker assert m.Pos().Test3(test3).A() == test_a 55*890232f2SAndroid Build Coastguard Worker assert m.Pos().Test3(test3).B() == test_b 56*890232f2SAndroid Build Coastguard Worker 57*890232f2SAndroid Build Coastguard Worker assert m.Hp() == test_hp 58*890232f2SAndroid Build Coastguard Worker 59*890232f2SAndroid Build Coastguard Worker assert m.Color() == test_color 60*890232f2SAndroid Build Coastguard Worker 61*890232f2SAndroid Build Coastguard Worker assert m.InventoryLength() == len(test_inventory) 62*890232f2SAndroid Build Coastguard Worker for i in range(0, len(test_inventory)): 63*890232f2SAndroid Build Coastguard Worker assert m.Inventory(i) == test_inventory[len(test_inventory)-i -1] 64*890232f2SAndroid Build Coastguard Worker 65*890232f2SAndroid Build Coastguard Worker assert m.TestType() == test_testtype 66*890232f2SAndroid Build Coastguard Worker 67*890232f2SAndroid Build Coastguard Worker assert m.Test() is not None 68*890232f2SAndroid Build Coastguard Worker table = m.Test() 69*890232f2SAndroid Build Coastguard Worker 70*890232f2SAndroid Build Coastguard Worker m2 = Monster.Monster() 71*890232f2SAndroid Build Coastguard Worker m2.Init(table.Bytes, table.Pos) 72*890232f2SAndroid Build Coastguard Worker assert m2.Name().decode("utf-8") == test_monster_name2 73*890232f2SAndroid Build Coastguard Worker 74*890232f2SAndroid Build Coastguard Worker m3 = m.Enemy() 75*890232f2SAndroid Build Coastguard Worker assert m3.Name().decode("utf-8") == test_monster_name2 76*890232f2SAndroid Build Coastguard Worker 77*890232f2SAndroid Build Coastguard Worker assert m.Testarrayofstring(0).decode("utf-8") == test_string 78*890232f2SAndroid Build Coastguard Worker 79*890232f2SAndroid Build Coastguard Worker b = flatbuffers.Builder(0) 80*890232f2SAndroid Build Coastguard Worker i = b.CreateString(test_stat_id) 81*890232f2SAndroid Build Coastguard Worker Stat.StatStart(b) 82*890232f2SAndroid Build Coastguard Worker Stat.StatAddId(b, i) 83*890232f2SAndroid Build Coastguard Worker Stat.StatAddVal(b, test_stat_val) 84*890232f2SAndroid Build Coastguard Worker Stat.StatAddCount(b, test_stat_count) 85*890232f2SAndroid Build Coastguard Worker b.Finish(Stat.StatEnd(b)) 86*890232f2SAndroid Build Coastguard Worker return bytes(b.Output()) 87*890232f2SAndroid Build Coastguard Worker 88*890232f2SAndroid Build Coastguard Worker def Retrieve(self, request, context): 89*890232f2SAndroid Build Coastguard Worker 90*890232f2SAndroid Build Coastguard Worker s = Stat.Stat().GetRootAsStat(request, 0) 91*890232f2SAndroid Build Coastguard Worker 92*890232f2SAndroid Build Coastguard Worker no_of_monsters = test_no_of_monsters 93*890232f2SAndroid Build Coastguard Worker for i in range(0, no_of_monsters): 94*890232f2SAndroid Build Coastguard Worker b = flatbuffers.Builder(0) 95*890232f2SAndroid Build Coastguard Worker i = b.CreateString(test_monsters_name_retrieve[i]) 96*890232f2SAndroid Build Coastguard Worker Monster.MonsterStart(b) 97*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddName(b, i) 98*890232f2SAndroid Build Coastguard Worker b.Finish(Monster.MonsterEnd(b)) 99*890232f2SAndroid Build Coastguard Worker yield bytes(b.Output()) 100*890232f2SAndroid Build Coastguard Worker 101*890232f2SAndroid Build Coastguard Worker 102*890232f2SAndroid Build Coastguard Workerdef serve(): 103*890232f2SAndroid Build Coastguard Worker 104*890232f2SAndroid Build Coastguard Worker server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) 105*890232f2SAndroid Build Coastguard Worker monster_grpc_fb.add_MonsterStorageServicer_to_server(MonsterStorage(), server) 106*890232f2SAndroid Build Coastguard Worker server.add_insecure_port('[::]:50051') 107*890232f2SAndroid Build Coastguard Worker 108*890232f2SAndroid Build Coastguard Worker server.start() 109*890232f2SAndroid Build Coastguard Worker 110*890232f2SAndroid Build Coastguard Worker run() 111*890232f2SAndroid Build Coastguard Worker 112*890232f2SAndroid Build Coastguard Worker 113*890232f2SAndroid Build Coastguard Workerdef run(): 114*890232f2SAndroid Build Coastguard Worker 115*890232f2SAndroid Build Coastguard Worker channel = grpc.insecure_channel('127.0.0.1:50051') 116*890232f2SAndroid Build Coastguard Worker stub = monster_grpc_fb.MonsterStorageStub(channel) 117*890232f2SAndroid Build Coastguard Worker 118*890232f2SAndroid Build Coastguard Worker b = flatbuffers.Builder(0) 119*890232f2SAndroid Build Coastguard Worker name2 = b.CreateString(test_monster_name2) 120*890232f2SAndroid Build Coastguard Worker name1 = b.CreateString(test_monster_name1) 121*890232f2SAndroid Build Coastguard Worker Monster.MonsterStart(b) 122*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddName(b, name2) 123*890232f2SAndroid Build Coastguard Worker monster2 = Monster.MonsterEnd(b) 124*890232f2SAndroid Build Coastguard Worker test1 = b.CreateString(test_string) 125*890232f2SAndroid Build Coastguard Worker 126*890232f2SAndroid Build Coastguard Worker Monster.MonsterStartInventoryVector(b, len(test_inventory)) 127*890232f2SAndroid Build Coastguard Worker for i in range(0, len(test_inventory)): 128*890232f2SAndroid Build Coastguard Worker b.PrependByte(test_inventory[i]) 129*890232f2SAndroid Build Coastguard Worker inv = b.EndVector() 130*890232f2SAndroid Build Coastguard Worker 131*890232f2SAndroid Build Coastguard Worker Monster.MonsterStartTest4Vector(b, 2) 132*890232f2SAndroid Build Coastguard Worker Test.CreateTest(b, 10, 20) 133*890232f2SAndroid Build Coastguard Worker Test.CreateTest(b, 30, 40) 134*890232f2SAndroid Build Coastguard Worker test4 = b.EndVector() 135*890232f2SAndroid Build Coastguard Worker 136*890232f2SAndroid Build Coastguard Worker Monster.MonsterStartTestarrayofstringVector(b, 1) 137*890232f2SAndroid Build Coastguard Worker b.PrependUOffsetTRelative(test1) 138*890232f2SAndroid Build Coastguard Worker test_array_of_string = b.EndVector() 139*890232f2SAndroid Build Coastguard Worker 140*890232f2SAndroid Build Coastguard Worker Monster.MonsterStart(b) 141*890232f2SAndroid Build Coastguard Worker 142*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddHp(b, test_hp) 143*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddName(b, name1) 144*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddColor(b, test_color) 145*890232f2SAndroid Build Coastguard Worker pos = Vec3.CreateVec3(b, test_X, test_Y, test_Z, test_test1, test_color, test_a, test_b) 146*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddPos(b, pos) 147*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddInventory(b, inv) 148*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddTestType(b, test_testtype) 149*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddTest(b, monster2) 150*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddTest4(b, test4) 151*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddEnemy(b, monster2) 152*890232f2SAndroid Build Coastguard Worker Monster.MonsterAddTestarrayofstring(b, test_array_of_string) 153*890232f2SAndroid Build Coastguard Worker monster = Monster.MonsterEnd(b) 154*890232f2SAndroid Build Coastguard Worker 155*890232f2SAndroid Build Coastguard Worker b.Finish(monster) 156*890232f2SAndroid Build Coastguard Worker 157*890232f2SAndroid Build Coastguard Worker stat_response = stub.Store(bytes(b.Output())) 158*890232f2SAndroid Build Coastguard Worker 159*890232f2SAndroid Build Coastguard Worker s = Stat.Stat().GetRootAsStat(stat_response, 0) 160*890232f2SAndroid Build Coastguard Worker 161*890232f2SAndroid Build Coastguard Worker assert s.Id().decode("utf-8") == test_stat_id 162*890232f2SAndroid Build Coastguard Worker assert s.Val() == test_stat_val 163*890232f2SAndroid Build Coastguard Worker assert s.Count() == test_stat_count 164*890232f2SAndroid Build Coastguard Worker 165*890232f2SAndroid Build Coastguard Worker monster_reponses = stub.Retrieve(stat_response) 166*890232f2SAndroid Build Coastguard Worker count = 0 167*890232f2SAndroid Build Coastguard Worker for monster_reponse in monster_reponses: 168*890232f2SAndroid Build Coastguard Worker m = Monster.Monster().GetRootAsMonster(monster_reponse, 0) 169*890232f2SAndroid Build Coastguard Worker assert m.Name().decode("utf-8") == test_monsters_name_retrieve[count] 170*890232f2SAndroid Build Coastguard Worker count = count + 1 171*890232f2SAndroid Build Coastguard Worker 172*890232f2SAndroid Build Coastguard Worker 173*890232f2SAndroid Build Coastguard Workerif __name__ == '__main__': 174*890232f2SAndroid Build Coastguard Worker serve() 175