()
| 195 | |
| 196 | #[tokio::test] |
| 197 | async fn test_single_op_echo() { |
| 198 | let mock = MockWorker::bind().await; |
| 199 | let addr = mock.addr(); |
| 200 | let worker = tokio::spawn(async move { mock.handle_one(None).await }); |
| 201 | |
| 202 | let (mut stream, _) = connect_and_handshake(addr, None).await; |
| 203 | |
| 204 | let tensor = make_f16_tensor(&[1, 128]); |
| 205 | let orig_bytes: Vec<u8> = tensor.data().to_vec(); |
| 206 | |
| 207 | Message::single_op("model.layers.0", &tensor, 0, 0) |
| 208 | .to_writer(&mut stream) |
| 209 | .await |
| 210 | .unwrap(); |
| 211 | |
| 212 | let (_, resp) = Message::from_reader(&mut stream).await.unwrap(); |
| 213 | match resp { |
| 214 | Message::Tensor(raw) => { |
| 215 | let recovered = raw.to_tensor(&Device::Cpu).unwrap(); |
| 216 | assert_eq!(recovered.dtype(), DType::F16); |
| 217 | assert_eq!(recovered.shape().dims(), &[1, 128]); |
| 218 | assert_eq!(recovered.data().to_vec(), orig_bytes); |
| 219 | } |
| 220 | other => panic!("expected Tensor, got {:?}", other), |
| 221 | } |
| 222 | |
| 223 | drop(stream); |
| 224 | let _ = worker.await; |
| 225 | } |
| 226 | |
| 227 | #[tokio::test] |
| 228 | async fn test_batch_echo() { |
nothing calls this directly
no test coverage detected