def METHOD_NAME(self):
    model_name = "ensemble_io"
    user_data = UserData()
    input0 = np.random.random([1000]).astype(np.float32)
    self._client.start_stream(callback=partial(callback, user_data))
    for model_1_in_gpu in [True, False]:
        for model_2_in_gpu in [True, False]:
            for model_3_in_gpu in [True, False]:
                gpu_output = np.asarray(
                    [model_1_in_gpu, model_2_in_gpu, model_3_in_gpu], dtype=bool
                )
                inputs = [
                    grpcclient.InferInput(
                        "INPUT0", input0.shape, np_to_triton_dtype(input0.dtype)
                    ),
                    grpcclient.InferInput(
                        "GPU_OUTPUT",
                        gpu_output.shape,
                        np_to_triton_dtype(gpu_output.dtype),
                    ),
                ]
                inputs[0].set_data_from_numpy(input0)
                inputs[1].set_data_from_numpy(gpu_output)
                self._client.async_stream_infer(
                    model_name=model_name, inputs=inputs
                )
                if TRIAL == "default":
                    result = user_data._completed_requests.get()
                    output0 = result.as_numpy("OUTPUT0")
                    self.assertIsNotNone(output0)
                    self.assertTrue(np.all(output0 == input0))
                else:
                    response_repeat = 2
                    for _ in range(response_repeat):
                        result = user_data._completed_requests.get()
                        output0 = result.as_numpy("OUTPUT0")
                        self.assertIsNotNone(output0)
                        self.assertTrue(np.all(output0 == input0))