|
1 | | -import pickle |
2 | 1 | import numpy as np |
| 2 | +import pytest |
| 3 | + |
| 4 | +import prototype.controller_secure as controller_secure |
| 5 | +from prototype.integration_helpers import InProcessWorkerTransport, make_worker_client, reset_worker_state |
3 | 6 | from prototype.model_tools import ToyModel |
4 | 7 | from prototype.session_manager import SessionManager |
5 | 8 |
|
6 | | -workers = ["http://127.0.0.1:8003"] |
7 | | -sm = SessionManager(workers) |
8 | | -model = ToyModel([8,16,16,8], seed=42) |
9 | 9 |
|
10 | | -x = np.random.default_rng(1).standard_normal((8,1)).astype('float32') |
11 | | -baseline = model.forward(x) |
| 10 | +@pytest.fixture() |
| 11 | +def inprocess_worker(monkeypatch): |
| 12 | + client = make_worker_client() |
| 13 | + transport = InProcessWorkerTransport(client) |
| 14 | + monkeypatch.setattr(controller_secure.requests, 'post', transport.post) |
| 15 | + yield client |
| 16 | + reset_worker_state() |
| 17 | + |
| 18 | + |
| 19 | +def test_secure_run_roundtrip_inprocess(inprocess_worker): |
| 20 | + workers = ['http://worker-inproc'] |
| 21 | + sm = SessionManager(workers) |
| 22 | + model = ToyModel([8, 16, 16, 8], seed=42) |
| 23 | + |
| 24 | + x = np.random.default_rng(1).standard_normal((8, 1)).astype('float32') |
| 25 | + baseline = model.forward(x) |
| 26 | + |
| 27 | + sid = sm.start_session(model, num_slices=2, encrypt=True) |
| 28 | + out = sm.infer(sid, x) |
| 29 | + sm.end_session(sid) |
12 | 30 |
|
13 | | -sid = sm.start_session(model, num_slices=2, encrypt=True) |
14 | | -out = sm.infer(sid, x) |
15 | | -print('Max diff:', float(np.max(np.abs(baseline - out)))) |
16 | | -sm.end_session(sid) |
| 31 | + assert np.allclose(out, baseline) |
0 commit comments