test when server drops
()
| 25 | |
| 26 | |
| 27 | def check_server_drop(): |
| 28 | """test when server drops""" |
| 29 | try: |
| 30 | # pylint: disable=import-outside-toplevel |
| 31 | from tvm.rpc import base, proxy, tracker |
| 32 | |
| 33 | # pylint: disable=import-outside-toplevel |
| 34 | from tvm.rpc.base import TrackerCode |
| 35 | |
| 36 | @tvm.register_global_func("rpc.test2.addone") |
| 37 | def addone(x): |
| 38 | return x + 1 |
| 39 | |
| 40 | def _put(tclient, value): |
| 41 | base.sendjson(tclient._sock, value) |
| 42 | base.recvjson(tclient._sock) |
| 43 | |
| 44 | tserver = tracker.Tracker("127.0.0.1", 8888) |
| 45 | tproxy = proxy.Proxy("127.0.0.1", 8881, tracker_addr=("127.0.0.1", tserver.port)) |
| 46 | tclient = rpc.connect_tracker("127.0.0.1", tserver.port) |
| 47 | |
| 48 | server0 = rpc.Server( |
| 49 | "127.0.0.1", port=9099, tracker_addr=("127.0.0.1", tserver.port), key="abc" |
| 50 | ) |
| 51 | server1 = rpc.Server( |
| 52 | "127.0.0.1", port=9099, tracker_addr=("127.0.0.1", tserver.port), key="xyz" |
| 53 | ) |
| 54 | server2 = rpc.Server("127.0.0.1", tproxy.port, is_proxy=True, key="xyz") |
| 55 | server3 = rpc.Server("127.0.0.1", tproxy.port, is_proxy=True, key="xyz1") |
| 56 | |
| 57 | # Fault tolerence to un-handled requested value |
| 58 | _put(tclient, [TrackerCode.REQUEST, "abc", "", 1]) |
| 59 | _put(tclient, [TrackerCode.REQUEST, "xyz1", "", 1]) |
| 60 | |
| 61 | # Fault tolerence to stale worker value |
| 62 | _put(tclient, [TrackerCode.PUT, "xyz", (server1.port, "abc")]) |
| 63 | _put(tclient, [TrackerCode.PUT, "xyz", (server1.port, "abcxxx")]) |
| 64 | _put(tclient, [TrackerCode.PUT, "xyz", (tproxy.port, "abcxxx11")]) |
| 65 | |
| 66 | # Fault tolerence server timeout |
| 67 | def check_timeout(timeout, sleeptime): |
| 68 | def myfunc(remote): |
| 69 | time.sleep(sleeptime) |
| 70 | f1 = remote.get_function("rpc.test2.addone") |
| 71 | assert f1(10) == 11 |
| 72 | |
| 73 | try: |
| 74 | tclient.request_and_run("xyz", myfunc, session_timeout=timeout) |
| 75 | except RuntimeError: |
| 76 | pass |
| 77 | print(tclient.text_summary()) |
| 78 | try: |
| 79 | remote = tclient.request("xyz", priority=0, session_timeout=timeout) |
| 80 | remote2 = tclient.request("xyz", session_timeout=timeout) |
| 81 | time.sleep(sleeptime) |
| 82 | f1 = remote.get_function("rpc.test2.addone") |
| 83 | assert f1(10) == 11 |
| 84 | f1 = remote2.get_function("rpc.test2.addone") |
no test coverage detected
searching dependent graphs…