MCPcopy Create free account
hub / github.com/EmbeddedRPC/erpc / client

Function client

test/python_impl_tests/test_arbitrator/test_arbitrator.py:76–124  ·  view source on GitHub ↗
(config: Config, transport_factory: TransportFactory, server)

Source from the content-addressed store, hash-verified

74
75@pytest.fixture(scope="module")
76def client(config: Config, transport_factory: TransportFactory, server) -> FirstInterfaceClient:
77 global gc_server, gc_client, gc_transport, gc_wait_quit
78
79 if config.getoption("client") is False:
80 pytest.skip("No client")
81
82 time.sleep(0.1)
83
84 gc_transport = transport_factory.build_transport(False, True)
85
86 client_mngr = ClientManager(gc_transport.shared_transport, BasicCodec)
87 client_mngr.arbitrator = gc_transport
88
89 service = SecondInterfaceService(
90 SecondInterfaceHandler()
91 )
92
93 gc_server = SimpleServer(gc_transport, BasicCodec)
94 gc_server.add_service(service)
95
96 server_thread = threading.Thread(target=client_server, args=())
97 server_thread.start()
98
99 gc_client = FirstInterfaceClient(client_mngr)
100
101 gc_client.whenReady()
102
103 yield gc_client # run all tests
104
105 while True:
106 with gc_lock:
107 if gc_wait_quit != 0:
108 break
109 time.sleep(0.1)
110
111 # send ready to quit state to server (second side)
112 gc_client.quitFirstInterfaceServer()
113
114 client_increase_wait_quit()
115
116 # wait until server and client will stop.
117 while True:
118 with gc_lock:
119 if gc_wait_quit >= 3:
120 break
121 time.sleep(0.1)
122
123 # close transport
124 gc_transport.shared_transport.close()
125
126
127@pytest.fixture(scope="module", autouse=True)

Callers

nothing calls this directly

Calls 12

startMethod · 0.95
ClientManagerClass · 0.90
SimpleServerClass · 0.90
build_transportMethod · 0.80
add_serviceMethod · 0.80
closeMethod · 0.65
sleepMethod · 0.45
ThreadMethod · 0.45
whenReadyMethod · 0.45

Tested by

no test coverage detected