12from .conftest
import HW_DIR, check_lines, require_tool, run_cmd
135 """Test ChannelService ToHost and FromHost ports from Python."""
136 acc = conn.build_accelerator()
137 channel_test = acc.children[esiaccel.AppID(
"channel_test")]
138 ports = channel_test.ports
141 mmio = ports[esiaccel.AppID(
"cmd")]
142 assert isinstance(mmio, types.MMIORegion), \
143 f
"Expected MMIORegion, got {type(mmio)}"
145 producer = ports[esiaccel.AppID(
"producer")]
146 assert isinstance(producer, types.ToHostPort), \
147 f
"Expected ToHostPort, got {type(producer)}"
151 mmio.write(0x0, num_values)
152 for i
in range(num_values):
153 result = producer.read().result()
154 assert result == i, f
"Producer: expected {i}, got {result}"
157 loopback_in = ports[esiaccel.AppID(
"loopback_in")]
158 assert isinstance(loopback_in, types.FromHostPort), \
159 f
"Expected FromHostPort, got {type(loopback_in)}"
160 loopback_in.connect()
162 loopback_out = ports[esiaccel.AppID(
"loopback_out")]
163 assert isinstance(loopback_out, types.ToHostPort), \
164 f
"Expected ToHostPort, got {type(loopback_out)}"
165 loopback_out.connect()
168 loopback_in.write(42 + i)
169 result = loopback_out.read().result()
170 assert result == 42 + i, \
171 f
"Loopback: expected {42 + i}, got {result}"