-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdemo_client_universalis.py
113 lines (109 loc) · 3.5 KB
/
demo_client_universalis.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
from demo_common import User, Item, stateflow
from stateflow.client.future import StateflowFuture, StateflowFailure
from stateflow.client.kafka_client import StateflowKafkaClient
import time
import datetime
from stateflow.client.universalis_client import UniversalisClient
flow = stateflow.init()
client: UniversalisClient = UniversalisClient(flow,
brokers="localhost:9092",
statefun_mode=False)
client.wait_until_healthy(timeout=10)
# print("Creating a user: ")
# start = datetime.datetime.now()
# future_user: StateflowFuture[User] = User("wouter-user")
#
# try:
# user: User = future_user.get()
# except StateflowFailure:
# user: User = client.find(User, "wouter-user").get()
#
# end = datetime.datetime.now()
# delta = end - start
# print(f"Creating user took {delta.total_seconds() * 1000}ms")
#
# print("Creating another user")
# start = datetime.datetime.now()
# future_user2: StateflowFuture[User] = User("wouter-user2")
#
# try:
# user2: User = future_user2.get()
# except StateflowFailure:
# user2: User = client.find(User, "wouter-user2").get()
# end = datetime.datetime.now()
# delta = end - start
# print(f"Creating another user took {delta.total_seconds() * 1000}ms")
#
# print("Done!")
# start = datetime.datetime.now()
# for_loop: int = user.simple_for_loop([user, user2]).get(timeout=5)
# end = datetime.datetime.now()
# delta = end - start
# print(f"Simple for loop took {delta.total_seconds() * 1000}ms")
#
# print(user.balance.get())
# print(user2.balance.get())
# # print(for_loop)
# # print("")
# print("Creating an item: ")
# start = datetime.datetime.now()
# future_item: StateflowFuture[Item] = Item("coke", 10)
#
# try:
# item: Item = future_item.get()
# except StateflowFailure:
# item: Item = client.find(Item, "coke").get()
# end = datetime.datetime.now()
# delta = end - start
# print(f"Creating coke took {delta.total_seconds() * 1000}ms")
#
#
# start = datetime.datetime.now()
# future_item2: StateflowFuture[Item] = Item("pepsi", 10)
#
# try:
# item2: Item = future_item2.get()
# except StateflowFailure:
# item2: Item = client.find(Item, "pepsi").get()
# end = datetime.datetime.now()
# delta = end - start
# print(f"Creating another pepsi took {delta.total_seconds() * 1000}ms")
#
#
# start = datetime.datetime.now()
# hi = user.state_requests([item, item2]).get(timeout=10)
# print(hi)
# end = datetime.datetime.now()
# delta = end - start
# print(f"State requests took {delta.total_seconds() * 1000}ms")
# item.stock = 5
# user.balance = 10
#
#
# start_time = time.time()
# print(f"User balance: {user.balance.get()}")
# print(f"Item stock: {item.stock.get()} and price {item.price.get()}")
#
# print()
# # This is impossible.
# start = datetime.datetime.now()
# print(f"Let's try to buy 100 coke's of 10EU?: {user.buy_item(100, item).get()}")
# end = datetime.datetime.now()
# delta = end - start
# print(f"Buy item took {delta.total_seconds() * 1000}ms")
#
# # Jeej we buy one, user will end up with 0 balance and there is 4 left in stock.
# start = datetime.datetime.now()
# print(f"Lets' try to buy 1 coke's of 10EU?: {user.buy_item(1, item).get()}")
# end = datetime.datetime.now()
# delta = end - start
# print(f"Another buy item took {delta.total_seconds() * 1000}ms")
#
# print()
# # user balance 0, stock 4.
# print(f"Final user balance: {user.balance.get()}")
# print(f"Final item stock: {item.stock.get()}")
# end_time = time.time()
# diff = (end_time - start_time) * 1000
#
# print(f"\nThat took {diff}ms")